Financial Technology Industry Signals
Companies leveraging technology to innovate and improve financial services, including payments, analytics, trading infrastructure, and risk assessment.
This is a Naftiko Signals aggregate read of the Financial Technology industry — mined from public workforce signals (job postings, press releases, newsroom content) across 55 companies and matched against Naftiko’s curated vocabulary of services, tools, concepts, and standards across the 44 Naftiko signal groups.
Across 55 companies in Financial Technology we detected 2874 areas, 485 services, 285 tools, and 261 standards — producing an aggregate signal score of 35011.
How to read this page: Impact Report is the narrative read-out for the industry. Companies lists the 55 organizations included in the aggregate. Capabilities are Naftiko agent workflows common to Financial Technology — 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.
Financial Technology Industry Technology Investment Report
| Prepared by Naftiko | May 2026 |
Executive Summary
The Financial Technology industry stands as one of the most technically mature verticals in Naftiko’s coverage universe, spanning 27 companies across payment networks, market infrastructure, credit analytics, and investment management. The breadth of the sector — from global payment rails operated by Visa and Mastercard to capital markets infrastructure at Nasdaq and Blackrock, to diversified banking technology at Citi, Scotiabank, and Barclays — creates a wide but substantive dispersion in AI readiness scores across all eleven measurement layers. Scotiabank, Citi, and Visa emerge as consistent top-three performers across the Foundational, Retrieval, Efficiency, and Productivity layers, reflecting sustained organizational investment in cloud modernization, open-source adoption, and operational automation that collectively positions them ahead of the peer group on every dimension that matters for production AI deployment.
The industry’s technology investment profile is characterized by exceptional depth in cloud infrastructure and data engineering, with both Scotiabank and Citi posting cloud scores in the 149–155 range and data retrieval scores of 154–166 respectively, numbers that substantially outpace the sector median. What is more notable, however, is the consistency of this leadership: the same institutions appear in the top cohort across Artificial Intelligence, Open-Source, Languages, Code, Automation, Operations, API integration, and Observability, suggesting that the leading Financial Technology firms have built coherent, end-to-end technology stacks rather than isolated pockets of AI capability. The lower tiers of the ranking — Deutsche Bank, ABN AMRO, BNP Paribas, Goldman Sachs in several scoring areas — represent meaningful white space for capability acceleration, particularly in model registry discipline, multimodal infrastructure, and CNCF-aligned container orchestration.
Layer 1: Foundational Layer
The Foundational Layer evaluates core AI and infrastructure readiness across five scoring areas covering Artificial Intelligence, Cloud, Open-Source, Languages, and Code. Financial Technology companies score highest in Cloud, with the sector’s strongest Cloud scores reflecting years of cloud-migration investment that now underpin viable AI workload deployment.
Artificial Intelligence — Top Company: Citi (87)
Citi leads Financial Technology peers in Artificial Intelligence with a score of 87, followed by Visa at 83 and Barclays at 69, with Scotiabank at 68 and Nasdaq and PayPal each at 63. The score dispersion across the 20-company ranked cohort — from Citi’s 87 down to Goldman Sachs at 28 and Deutsche Bank at 29 — indicates that AI foundational capability has not yet democratized evenly across the sector. Services adoption is broad, with 26 companies deploying tools such as Datadog, Microsoft Office, CloudFormation, and Adobe Creative Suite, while tool adoption includes PowerShell, Spring Boot, Elasticsearch, Semantic Kernel, and TensorFlow across 25–26 companies, confirming that the infrastructure layer supporting AI inference and monitoring is in place at scale.
Cloud — Top Company: Scotiabank (155)
Scotiabank leads the Cloud scoring area at 155, with Citi close behind at 149 and Visa at 142; Blackrock posts 135 and Barclays 125. The top decile demonstrates cloud maturity consistent with running production ML workloads, whereas the bottom of the distribution — ING at 63, Deutsche Bank at 70, Goldman Sachs unlisted in the top twenty — suggests meaningful infrastructure debt among legacy European institutions. Twenty-six companies share adoption of foundational cloud services including Azure Functions, CloudFormation, and Cloudflare, while tools such as Terraform (25 companies), Consul (25), and PostgreSQL (25) form the distributed infrastructure backbone.
Open-Source — Top Company: Citi (51)
Citi and Visa are tied at the top of Open-Source scoring at 51, with Scotiabank at 50 and HSBC at 44. Open-source adoption breadth is high — 25 companies utilize TensorFlow, Pandas, NumPy, and PostgreSQL — and the clustering of scores between 27 and 51 across the top twenty suggests a sector-wide commitment to open tooling rather than a winner-take-all pattern. Stripe at 27 and ING at 28, while in the lower tier, are still meaningfully engaged with open-source toolchains.
Languages — Top Company: Citi (53)
Citi leads Languages at 53, with Scotiabank at 51, HSBC at 47, and Barclays and Visa each at 46. The Languages scoring area captures polyglot engineering depth relevant to AI model development and integration; the presence of TypeScript, R, and Python-ecosystem tools (Matplotlib, Pandas, NumPy) across the top 25 companies confirms that Financial Technology engineering teams are equipped to develop and maintain ML-adjacent code at scale.
Code — Top Company: Scotiabank (52)
Scotiabank leads Code at 52 with Mastercard at 50 and Citi at 49. Code scoring reflects toolchain sophistication for software delivery, and the tight cluster of scores in the 30–52 range among the top performers implies that modern developer experience is institutionalized rather than experimental across the leading FinTech players. Angular, React Native, Spring Boot, and Elasticsearch appear across 26 companies, with Terraform and Consul slightly lower at 25.
Layer 2: Retrieval & Grounding
Retrieval & Grounding evaluates how Financial Technology companies invest in the data and infrastructure required to ground AI models in proprietary knowledge, covering Data, Databases, Virtualization, Specifications, and Context Engineering. Data leads all scoring areas within this layer.
Data — Top Company: Citi (166)
Citi leads Data scoring at 166, with Scotiabank at 154 and Visa at 138; Barclays posts 131 and HSBC 125. The Data scores are the highest absolute numbers across any scoring area in the report, reflecting the sector’s inherent data intensity. Bloomberg, whose business model is centered on financial data, scores 111 — notable because it trails Barclays (131) and HSBC (125), institutions whose data infrastructure spending is driven by regulatory and operational necessity rather than product revenue. The 20-company top cohort extends down to American Express at 61, indicating that even smaller or less diversified players have meaningful data management infrastructure.
Databases — Top Company: Citi (45)
Citi leads Databases at 45, followed by Scotiabank at 43, Barclays at 40, and Visa at 39. The tight top-of-cohort range — Citi 45, Scotiabank 43, Barclays 40 — suggests that database modernization is a shared priority among the leading Financial Technology firms, likely driven by real-time transaction processing requirements. ABN AMRO at 17 and BNP Paribas at 18 sit at the bottom of the ranked cohort, consistent with European institutions’ generally slower cloud and database modernization trajectories.
Virtualization — Top Company: HSBC (26)
HSBC leads Virtualization at 26, with Citi and Barclays both at 25, and Visa also at 25. Virtualization scores are compressed in range — HSBC’s 26 versus Deutsche Bank’s 12 at the bottom — reflecting that virtualization capability has become table-stakes infrastructure. The presence of Moodys at 23 and Blackrock at 22 within the top cohort illustrates that even asset management and analytics firms have invested in the container and virtualization layer necessary for flexible AI workload deployment.
Specifications — Top Company: Barclays (17)
Barclays leads Specifications at 17, with Scotiabank at 16, Citi at 15, and Commonwealth Bank at 14. Specifications scores reflect investment in API standards, OpenAPI definitions, and formal data contracts — a capability that directly enables machine-readable AI integration. The low absolute scores across the sector (top score of 17) represent an area where Financial Technology companies broadly have not yet invested at the depth observed in their cloud or data infrastructure.
Context Engineering — Top Company: (collective signal, no ranked companies)
Context Engineering reflects collective patterns across Financial Technology organizations with no company-level scoring in this release, capturing emerging investment in prompt engineering, RAG pipelines, and context window management — technologies the sector is actively piloting but has not yet scored into differentiated individual rankings.
Layer 3: Customization & Adaptation
Customization & Adaptation measures investment in data pipelines, model registry discipline, multimodal infrastructure, and domain specialization — the capabilities required to fine-tune, version, and deploy proprietary AI models. Financial Technology leads in Model Registry & Versioning within this layer.
Data Pipelines — Top Company: Citi (18)
Citi leads Data Pipelines at 18, with Blackrock and Scotiabank each at 17, and Moodys at 15. The low absolute scores indicate that formalized ML data pipeline infrastructure — as distinct from general data warehousing — is still maturing across the sector. Citi, Blackrock, and Scotiabank’s co-leadership reflects their shared need to move model training data through governance-controlled pipelines in regulated environments.
Model Registry & Versioning — Top Company: Scotiabank (22)
Scotiabank and Visa are tied at the top of Model Registry & Versioning at 22, with Citi at 21 and Stripe at 18. Model registry discipline is a leading indicator of production ML operations maturity; Scotiabank and Visa’s co-leadership reinforces their positioning as the sector’s most operationally advanced AI practitioners. Goldman Sachs at 8 represents the weakest score among named institutions in this area, a meaningful gap given the firm’s public commitments to AI-driven trading and advisory.
Multimodal Infrastructure — Top Company: Citi (21)
Citi leads Multimodal Infrastructure at 21, with Visa at 21 and Scotiabank at 19. Charles Schwab at 18 and Stripe at 17 round out the top five, suggesting that payment-adjacent and brokerage platforms are early movers in multimodal capability — likely driven by document processing, customer communication, and compliance-monitoring use cases. Deutsche Bank at 7 sits at the bottom of the cohort.
Domain Specialization — Top Company: Charles Schwab / Mastercard / Nasdaq / multiple (2)
Domain Specialization scores are uniformly low across the sector, with Charles Schwab, Mastercard, Nasdaq, Blackrock, Capital One, Scotiabank, Citi, Commonwealth Bank, Barclays, PayPal, Stripe, Wells Fargo, Moodys, Visa, Standard Chartered, and ING all posting scores of 2. This uniform low-score pattern indicates that domain-specific model customization — training models on proprietary financial data to produce finance-native capabilities — remains an industry-wide frontier rather than a demonstrated investment.
Layer 4: Efficiency & Specialization
Efficiency & Specialization captures operational AI deployment capability through Automation, Containers, Platform, and Operations scoring areas. Operations leads within this layer.
Automation — Top Company: Scotiabank (86)
Scotiabank leads Automation at 86, with Citi at 83, Barclays at 83, and Visa at 78. The Automation scores in the 60–86 range across the top dozen companies reflect substantive workflow automation investment — consistent with the sector’s broad reliance on robotic process automation in back-office functions. American Express at 36 and ING at 41 sit at the lower end of the distribution, suggesting that automation modernization is less complete in consumer-lending and European banking segments.
Containers — Top Company: Citi (39)
Citi leads Containers at 39, with Scotiabank at 38, HSBC at 35, and Blackrock at 32. Container adoption reflects Kubernetes and microservices maturity, a prerequisite for scalable AI inference. The scores span 17 to 39 across the top twenty, with meaningful gaps suggesting that container orchestration is not uniformly advanced even among Financial Technology leaders.
Platform — Top Company: Citi (44)
Citi leads Platform at 44, with Visa at 43, and Nasdaq, Scotiabank, and Barclays all at 41. Platform scoring captures the degree to which organizations have built internal developer platforms that can host and serve AI models at scale. The tight cluster at the top — 41 to 44 across five companies — signals competitive parity in platform capability among the sector’s most sophisticated operators.
Operations — Top Company: Scotiabank (88)
Scotiabank leads Operations at 88, with Visa at 83 and Citi at 82, and HSBC at 74. Operations is the highest-scoring area within the Efficiency layer for the sector, reflecting the Financial Technology industry’s deep investment in SRE, monitoring, incident management, and reliability engineering — all capabilities that transfer directly to AI system operations. BNP Paribas at 39 at the bottom of the ranked cohort represents the widest gap between leader and laggard in this layer.
Layer 5: Productivity
Productivity measures how Financial Technology companies leverage AI and tooling to improve developer and operational productivity across Software As A Service (SaaS), Code, and Services scoring areas. Services leads.
Software As A Service (SaaS) — Top Company: Nasdaq (4)
Nasdaq leads SaaS at 4, with Moodys at 3 and Mastercard, Capital One, Scotiabank, Citi, HSBC, and Visa each at 2. The low absolute scores across the entire sector indicate that SaaS-native productivity tooling adoption — specifically AI coding assistants and copilot-class tools integrated into daily workflows — is still in early deployment phases across Financial Technology. Data and market infrastructure firms’ leadership in this area (Nasdaq, Moodys) suggests that analytical workflow automation is the initial adoption vector.
Code — Top Company: Scotiabank (52)
Scotiabank leads Code productivity at 52 with Mastercard at 50 and Citi at 49. Code scoring in this layer captures developer productivity tooling beyond raw language capability, and the strong top-cohort scores — 14 companies scoring 30 or above — indicate broad adoption of modern developer experience tooling. BNP Paribas at 21 and ABN AMRO at 25 represent meaningful productivity gaps versus the sector leaders.
Services — Top Company: Scotiabank (323)
Scotiabank leads Services at 323, with Citi at 298, Visa at 269, and HSBC at 254. Services scoring captures the breadth and depth of third-party service integrations supporting productivity, and the high absolute scores — Scotiabank 323, Citi 298 — reflect the accumulated service integration complexity of large financial conglomerates. Deutsche Bank at 163 and ABN AMRO not appearing in the top twenty highlight continued infrastructure simplification opportunities.
Layer 6: Integration & Interoperability
Integration & Interoperability evaluates how Financial Technology companies connect AI systems, data sources, and third-party services through API, Integrations, Event-Driven, Patterns, Specifications, Apache, and CNCF scoring areas. Integrations leads.
API — Top Company: Citi (32)
Citi leads API scoring at 32, with Scotiabank and Barclays both at 30, and Visa at 26. API investment reflects the depth of programmatic interface exposure that enables AI agents, data pipelines, and third-party integrations to operate reliably. The 32-to-12 range across the top twenty indicates a healthy but not fully homogeneous API posture — Deutsche Bank and Bank of America at 12 represent the lower boundary.
Integrations — Top Company: Scotiabank (48)
Scotiabank leads Integrations at 48, with Citi at 47, Blackrock at 39, and Visa at 38. Integration depth — the ability to connect disparate systems into cohesive AI workflows — is a critical enabler of enterprise AI deployment, and the Scotiabank-Citi co-leadership in both API and Integrations scoring is consistent with their overall platform maturity thesis.
Event-Driven — Top Company: Citi (33)
Citi and Visa are tied at the top of Event-Driven scoring at 33, with Scotiabank at 32 and Barclays at 31. Event-driven architecture is foundational for real-time AI inference in trading, fraud detection, and payment processing — domains where Financial Technology companies have the strongest business justification for investment. ING at 8 and Nasdaq at 9 sit at the lower end, suggesting that market infrastructure firms’ real-time architecture investment has not fully translated into event-driven AI patterns.
Patterns — Top Company: Citi (25)
Citi leads Patterns at 25, with Blackrock and HSBC both at 21, and Barclays and Visa at 20. Patterns scoring reflects the adoption of established architectural patterns — CQRS, saga, outbox, circuit breaker — that enable reliable AI system composition. The 10–25 range across the top twenty suggests that formal architectural patterns adoption is advancing but not yet universal.
Specifications — Top Company: Barclays (17)
Barclays leads Specifications at 17 in the Integration layer (consistent with the Retrieval layer score), with Scotiabank at 16 and Citi at 15. This scoring area rewards OpenAPI, AsyncAPI, and formal specification adoption — capabilities increasingly important for AI agent integration and governance.
Apache — Top Company: Scotiabank (21)
Scotiabank leads Apache at 21, with Citi at 17, and Barclays and Wells Fargo at 14. Apache ecosystem adoption — Kafka, Spark, Flink, Airflow — is a direct proxy for real-time data processing sophistication, a critical upstream dependency for AI grounding and context delivery.
CNCF — Top Company: HSBC (33)
HSBC leads CNCF scoring at 33, with Blackrock, Scotiabank, and Citi all at 29. CNCF ecosystem adoption — Kubernetes, Prometheus, Envoy, Argo — reflects cloud-native maturity at the infrastructure layer. HSBC’s leadership in CNCF adoption is noteworthy given its position as a global bank navigating complex multi-cloud infrastructure across more than 60 markets.
Layer 7: Statefulness
Statefulness evaluates how Financial Technology companies build the observability, data management, and memory infrastructure required for persistent, context-aware AI systems. Data leads within this layer.
Observability — Top Company: Citi (59)
Citi leads Observability at 59, with Scotiabank at 51, Visa at 49, Mastercard at 47, and Barclays at 46. Observability investment — distributed tracing, metrics, structured logging — is essential for diagnosing AI system behavior in production, and the sector’s strong observability scores reflect financial services’ long-standing SRE culture applied to AI workloads. ABN AMRO at 26 and American Express at 26 sit at the lower boundary of the top cohort.
Layer 8: Measurement & Accountability
Measurement & Accountability captures how Financial Technology companies build testing discipline, observability infrastructure, developer experience investment, and ROI measurement capability. ROI & Business Metrics leads within this layer.
Testing & Quality — Top Company: Scotiabank / Citi (30)
Scotiabank and Citi are tied at the top of Testing & Quality at 30, followed by Visa at 27 and Mastercard at 25. Testing & Quality scores in Financial Technology are elevated relative to many other sectors, reflecting the high cost of production failures in payment systems, trading infrastructure, and credit decisioning where a defect can result in material financial loss or regulatory action. The top cohort’s investment in automated testing, quality gates, and continuous integration pipelines is not a competitive differentiator but rather a minimum standard for operating mission-critical financial infrastructure.
Observability — Top Company: Citi (59)
Citi leads Observability at 59, with Scotiabank at 55 and HSBC at 47. Observability in Financial Technology serves dual purposes: operational monitoring of production systems and the audit infrastructure required to explain AI-driven decisions to regulators. Citi’s leadership at 59 reflects the scale and global scope of its technology footprint — more systems, more integrations, and more regulatory jurisdictions each drive incremental observability investment, creating a scale advantage that compounds with system complexity.
Developer Experience — Top Company: Scotiabank (29)
Scotiabank leads Developer Experience at 29, with Citi at 26 and Visa at 24. Developer experience investment — internal platforms, tooling, documentation, and self-service capability — directly correlates with AI adoption velocity, as higher-quality developer experience reduces the friction of integrating AI models into production workflows. Scotiabank’s leadership is consistent with its Platform and Operations scores and reflects a deliberate internal developer platform strategy.
ROI & Business Metrics — Top Company: Citi (67)
Citi leads ROI & Business Metrics at 67, with Scotiabank at 61 and Visa at 58. ROI measurement capability in Financial Technology is structurally well-developed: the sector’s long history of quantitative performance management, trading attribution, and credit portfolio analytics has produced sophisticated business metrics infrastructure that readily adapts to AI investment measurement. The high absolute scores across the top cohort indicate that Financial Technology is better positioned than most sectors to build the business cases for continued AI investment.
Layer 9: Governance & Risk
Governance & Risk evaluates how Financial Technology companies manage regulatory compliance posture, AI review and approval processes, security infrastructure, governance frameworks, and privacy obligations. Security leads within this layer by a significant margin.
Regulatory Posture — Top Company: HSBC (14)
HSBC leads Regulatory Posture at 14, with Barclays at 12 and Citi at 11. The European and UK-listed institutions’ leadership in Regulatory Posture reflects the more prescriptive regulatory environment they operate in — the EU AI Act, UK FCA requirements, and Basel IV capital framework create compliance pressures that directly drive regulatory posture investment. North American institutions are in the 8–11 range, reflecting a regulatory environment that is consequential but somewhat less prescriptive in its technology requirements.
AI Review & Approval — Top Company: Scotiabank / Citi / Visa (18)
Scotiabank, Citi, and Visa are tied at the top of AI Review & Approval at 18, with HSBC and Barclays at 15. AI review and approval processes — model risk management frameworks, validation gates, and production deployment governance — are well-established at the sector’s leading institutions, consistent with decades of model risk management practice inherited from quantitative finance. The shared top score among three institutions signals that AI governance is becoming a common standard rather than a differentiator at the sector’s leading edge.
Security — Top Company: Scotiabank (98)
Scotiabank leads Security at 98, with Citi at 90 and HSBC at 83. Security scores are by far the highest absolute scores in the Governance & Risk layer and are the most elevated sector-wide relative to other industry verticals, reflecting the financial system’s structural designation as critical infrastructure. The top cohort’s security scores of 83–98 represent years of sustained investment in zero-trust architectures, application security testing, and infrastructure security engineering that form the compliance backbone of regulated financial institutions.
Governance — Top Company: Scotiabank (63)
Scotiabank leads Governance at 63, with Citi at 58 and Mastercard at 52. Governance investment in Financial Technology encompasses data lineage, model risk policy, access control, and AI accountability frameworks — a set of capabilities that the sector’s regulatory obligations have driven at faster maturity pace than most other industries. Scotiabank’s governance leadership is the clearest indication that its AI investment is not merely a technology stack but an institutionalized practice with policy, process, and accountability infrastructure.
Privacy & Data Rights — Top Company: HSBC (6)
HSBC leads Privacy & Data Rights at 6, with Barclays at 5 and Citi at 4. The low absolute scores across the sector — even for the leaders — indicate that formal privacy engineering as a distinct investment category (data subject rights automation, consent management, privacy-by-design tooling) is nascent relative to the sector’s security and governance investments. Financial institutions have historically managed privacy through legal and compliance functions rather than engineering ones; the low scores reflect this structural pattern rather than a disregard for privacy obligations.
Layer 10: Economics & Sustainability
Economics & Sustainability measures how Financial Technology companies manage AI cost economics, cloud provider strategy, ecosystem partnerships, talent and organizational design, and infrastructure sustainability. Partnerships & Ecosystem and Talent & Organizational Design lead within this layer.
AI FinOps — Top Company: Mastercard / Scotiabank / Stripe (9)
Mastercard, Scotiabank, and Stripe are tied at the top of AI FinOps at 9, followed by Citi and Visa at 8. AI FinOps discipline — the formalized management of AI inference and training costs as a distinct operational cost category — is in early stages across Financial Technology. The low absolute scores (maximum 9) across the sector’s leaders indicate that AI cost management is still largely absorbed within cloud cost management frameworks rather than tracked as a separate AI-specific financial control, suggesting that AI spend has not yet reached the scale where dedicated FinOps tooling is justified at most institutions.
Provider Strategy — Top Company: Stripe (18)
Stripe leads Provider Strategy at 18, with Scotiabank at 16 and Mastercard at 14. Stripe’s leadership in Provider Strategy is analytically notable — as a pure-play payments technology company, Stripe’s cloud provider and AI vendor relationship management is more strategically central to its product roadmap than for diversified banking conglomerates where technology is one of many operational domains. The provider strategy score reflects Stripe’s deliberate multi-cloud and AI API vendor management approach.
Partnerships & Ecosystem — Top Company: Citi (24)
Citi leads Partnerships & Ecosystem at 24, with Visa at 22 and Scotiabank at 20. Citi’s ecosystem leadership reflects its role as a global transaction bank with hundreds of corporate and institutional API integrations — a fundamentally more ecosystem-dependent business model than asset managers or credit rating agencies. The high Citi score also reflects its participation in cross-industry financial data consortia, open banking initiatives, and FinTech partnership programs.
Talent & Organizational Design — Top Company: Nasdaq / Citi / PayPal (18)
Nasdaq, Citi, and PayPal are tied at the top of Talent & Organizational Design at 18, with Scotiabank and Mastercard at 16. The talent investment scores are relatively compressed across the top cohort, reflecting the shared talent market dynamics of Financial Technology — all leading firms compete for the same pool of ML engineers, quantitative researchers, and AI product managers, and all have built comparable talent acquisition and retention infrastructure as a result.
Layer 11: Storytelling & Entertainment & Theater
Storytelling & Entertainment & Theater evaluates organizational alignment, standardization discipline, strategic M&A activity, and experimentation capability — the strategic coherence and narrative dimensions of AI investment. Alignment leads within this layer.
Alignment — Top Company: Scotiabank (31)
Scotiabank leads Alignment at 31, with Citi at 28 and Visa at 25. Alignment scores capture how coherently stated AI investment strategy maps to observed technology capability — the degree to which AI narrative and infrastructure investment tell a consistent story. Scotiabank’s leadership in Alignment, combined with its consistent top-tier performance across Automation, Operations, Governance, Security, and Services, confirms that its technology investment is strategically coherent: a multi-year program with institutional commitment rather than a reactive response to the generative AI wave.
Standardization — Top Company: Scotiabank (18)
Scotiabank leads Standardization at 18, with Citi at 16 and Mastercard at 14. Standardization — the adoption of common AI tooling standards, model evaluation frameworks, and infrastructure norms across engineering teams — is more mature at the institutions with the most formalized engineering governance practices, and Scotiabank’s lead here is consistent with its overall governance and operations leadership. High standardization scores signal that AI tools are being deployed organizationally rather than by individual teams, which accelerates the pace at which institutional AI capability accumulates.
Mergers & Acquisitions — Top Company: Scotiabank (22)
Scotiabank leads Mergers & Acquisitions at 22, with Citi at 20 and Mastercard at 18. M&A activity as a dimension of AI strategy reflects the use of acquisitions to accelerate AI capability development and market positioning. The high scores at the top cohort reflect a period of active AI-related acquisition activity across the Financial Technology sector, with institutions acquiring AI model providers, data vendors, and FinTech infrastructure companies to complement organic capability development.
Experimentation & Prototyping — Top Company: (collective signal, no ranked companies)
Experimentation & Prototyping reflects collective sector-level patterns without individual company ranking, indicating that formal AI experimentation infrastructure — dedicated AI sandboxes, structured rapid prototyping programs, and systematic hypothesis-testing at the institutional level — has not yet differentiated individual companies to a measurable degree. The signal is that investment in experimentation is broadly distributed rather than concentrated, consistent with a sector-wide adoption pattern where AI experimentation is underway at most major institutions but has not yet produced scored differentiation.
Industry Strategic Assessment
The Financial Technology industry presents one of the most compelling AI investment narratives in Naftiko’s coverage universe, precisely because the underlying use cases — fraud detection, algorithmic trading, credit risk scoring, regulatory reporting, and real-time payment routing — have been computationally intensive for decades. The sector’s AI readiness is not speculative; it is the product of continuous infrastructure investment that predates the generative AI wave, and the current scoring reflects how deeply that legacy of investment compounds into AI readiness. Scotiabank, Citi, and Visa form a durable top tier across nearly every layer measured, and their advantage is structural: these organizations have invested in cloud, open-source tooling, containerization, event-driven architecture, and observability in coordinated, multi-year programs rather than opportunistic point solutions. The implication for enterprise buyers is that these institutions are ready to receive and operationalize AI products at the pace the market is developing them.
The mid-tier of the industry — PayPal, Mastercard, Blackrock, HSBC, Barclays, Bloomberg, Moodys, Charles Schwab, Wells Fargo — represents the most commercially interesting segment for AI infrastructure vendors and practitioners. These organizations have sufficient foundational capability (Cloud scores of 111–254, Data scores of 97–131) to deploy production AI systems, but they have not yet achieved the integration depth, model registry discipline, or event-driven architecture maturity of the top cohort. The gap between Scotiabank’s Services integration score of 323 and Nasdaq’s 177 is not a capability gap per se — Nasdaq’s market infrastructure mandate is narrower — but it signals that mid-tier firms have not yet built the ecosystem connectivity that enables AI to flow across organizational boundaries at scale.
Domain Specialization remains the most underdeveloped capability across the entire Financial Technology industry, with every scored company posting a maximum of 2 points. This finding is analytically significant because Financial Technology is precisely the sector where domain-specific AI models — trained on proprietary trading data, credit histories, payment graphs, and regulatory filings — should generate the most durable competitive advantage. The absence of differentiated investment in domain specialization at this juncture indicates that the industry is still in the infrastructure-building phase of its AI journey, laying the cloud, data, and integration foundations on which proprietary models will eventually be trained. Analysts and practitioners who are calibrating their investment theses for 2026 and 2027 should treat Domain Specialization and Model Registry & Versioning scores as the leading indicators of which Financial Technology firms will convert infrastructure parity into sustained AI competitive advantage over the next 18 to 24 months.
Companies — Total:55
- ABN AMROA Dutch banking and financial services group serving retail, private, and corporate clients across Europe....
- American ExpressA global financial services company best known for its charge and credit card products. Also...
- AvalaraAvalara provides cloud-based tax compliance automation for businesses of every size, with services covering sales...
- Bank of AmericaOne of the largest financial institutions in the United States offering banking, investing, and wealth...
- BarclaysA British multinational bank offering consumer banking, corporate banking, and investment banking services. One of...
- BlackrockThe world's largest asset management firm overseeing trillions of dollars in investments. Known for its...
- BlockA financial technology company formerly known as Square, providing payment processing, banking, and Bitcoin services....
- BloombergA global financial data and media company providing real-time market data, news, and analytics through...
- BNP ParibasA leading European banking group and one of the largest financial institutions in the world....
- Bread FinancialBread Financial is a technology-driven financial services company offering white-label buy now pay later (BNPL),...
- BroadridgeBest-in-class API components meet expert support to create the ideal wealth management operations environment. Optimize...
- Capital OneA diversified financial services company and one of the largest credit card issuers in the...
- CBOEFortune 1000 company CBOE. Public API documentation has not yet been catalogued in the API...
- Charles SchwabA leading brokerage and wealth management firm offering investing, trading, and financial advisory services. Serves...
- CitiA global banking and financial services corporation providing consumer banking, credit, and wealth management. Operates...
- CME GroupCME Group is the world's largest derivatives exchange and operator of the CME, CBOT, NYMEX,...
- CoinbaseCoinbase is a leading cryptocurrency platform providing trading, custody, and payment infrastructure for individuals, businesses,...
- Commonwealth BankAustralia's largest bank by market capitalization providing retail, business, and institutional banking services. Serves millions...
- CopartFortune 1000 company Copart. Public API documentation has not yet been catalogued in the API...
- CorpayCorpay (formerly FLEETCOR) is a corporate payments company that provides commercial cards, accounts payable automation,...
- Deutsche BankA German multinational investment bank and financial services company headquartered in Frankfurt. Provides corporate banking,...
- Dow JonesA financial information and publishing company best known for The Wall Street Journal and Dow...
- EquifaxEquifax is a consumer credit reporting agency that collects and aggregates information on individuals' credit...
- Euronet WorldwideProfile for Euronet Worldwide in the API Evangelist network. Fortune F1000 (rank 831).
- Fidelity National Information Services (FIS)Fidelity National Information Services (FIS) is a global provider of financial services technology offering solutions...
- FiservFiserv is a global provider of financial services technology solutions, offering a wide range of...
- Global PaymentsGlobal Payments is a leading worldwide provider of payment technology and software solutions delivering innovative...
- Goldman SachsA leading global investment banking, securities, and investment management firm. Provides a wide range of...
- HSBCOne of the world's largest banking and financial services organizations headquartered in London. Serves over...
- INGA Dutch multinational banking and financial services corporation headquartered in Amsterdam. Provides retail banking, direct...
- Interactive BrokersInteractive Brokers is an online brokerage firm providing trading access to stocks, options, futures, currencies,...
- Intercontinental ExchangeIntercontinental Exchange (ICE) operates global exchanges, clearing houses, and data services for financial and commodity...
- JP Morgan ChaseThe largest bank in the United States and a global leader in investment banking, financial...
- MastercardA global payment technology company connecting consumers, financial institutions, merchants, and governments through electronic payments....
- MoodysA global financial intelligence company providing credit ratings, research, and risk analysis. Its ratings and...
- MSCIFortune 1000 company MSCI. Public API documentation has not yet been catalogued in the API...
- NasdaqA global technology company operating one of the world's largest stock exchanges and providing market...
- NCRNCR Corporation separated in October 2023 into two independent public companies: NCR Voyix, a global...
- PayPalA global digital payments platform enabling online money transfers, payments, and financial services. Operates PayPal,...
- S&P GlobalS&P Global is a leading provider of credit ratings, benchmarks, analytics, and workflow solutions in...
- ScotiabankA leading Canadian multinational bank and one of the largest financial institutions in North America....
- SEI InvestmentsAn Oaks, PA-based global provider of investment processing, investment management, and investment operations platforms serving...
- Shift4 PaymentsShift4 Payments is a leading integrated payments and commerce technology provider and a Fortune 1000...
- SS AND C TechnologiesFortune 1000 company SS AND C Technologies. Public API documentation has not yet been catalogued...
- Standard CharteredA British multinational banking and financial services company headquartered in London with a strong focus...
- Stonex GroupFortune 1000 company Stonex Group. Public API documentation has not yet been catalogued in the...
- StripeA financial infrastructure platform providing payment processing, billing, and financial management tools for internet businesses....
- TD Bank GroupOne of North America's largest financial institutions, providing a full range of financial products and...
- ToastToast is a restaurant technology platform providing cloud-based point-of-sale, payment processing, and business management tools...
- TransunionFortune 1000 company Transunion. Public API documentation has not yet been catalogued in the API...
- VeriskVerisk (formerly ISO) is a leading data analytics and technology company serving the insurance, energy,...
- VisaThe world's largest payment processing network facilitating electronic fund transfers across more than 200 countries....
- Wells FargoOne of the largest banks in the United States providing banking, investment, mortgage, and consumer...
- Western UnionThe Western Union Company is a global leader in cross-border, cross-currency money movement, providing money...
- WEXFortune 1000 company WEX. Public API documentation has not yet been catalogued in the API...
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.
Queries a SEPA or SWIFT payment transaction status from the core banking system, checks processing SLA compliance against Snowflake benchmarks, and escalates overdue payments via ServiceNow.
naftiko: '0.5'
info:
label: Payment Transaction Status with SLA Check
description: Queries a SEPA or SWIFT payment transaction status from the core banking system, checks processing SLA compliance against Snowflake benchmarks, and escalates overdue payments via ServiceNow.
tags:
- payments
- banking
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment-status-with-sla
description: Look up a payment transaction by reference, check SLA compliance, and escalate if overdue.
inputParameters:
- name: payment_reference
in: body
type: string
description: The unique payment reference or end-to-end ID.
- name: expected_sla_hours
in: body
type: number
description: Expected SLA in hours for payment settlement.
steps:
- name: get-payment
type: call
call: core-banking.get-payment
with:
reference: '{{payment_reference}}'
- name: check-sla
type: call
call: snowflake.execute-query
with:
warehouse: PAYMENTS_WH
database: PAYMENTS_DB
query: SELECT TIMESTAMPDIFF(hour, initiated_at, CURRENT_TIMESTAMP()) as hours_elapsed FROM payment_tracking WHERE reference = '{{payment_reference}}'
- name: escalate-overdue
type: call
call: servicenow.create-record
with:
table: u_payment_escalation
short_description: 'Payment SLA breach: {{payment_reference}}'
description: 'Payment {{payment_reference}} status: {{get-payment.status}}. Hours elapsed: {{check-sla.hours_elapsed}}. Expected SLA: {{expected_sla_hours}} hours.'
assigned_group: Payment_Operations
consumes:
- type: http
namespace: core-banking
baseUri: https://api.abnamro.com/v1/payments
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: transactions
path: /transactions/{{reference}}
inputParameters:
- name: reference
in: path
operations:
- name: get-payment
method: GET
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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://abnamro.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/{{table}}
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
On AML alert, enriches with customer data from Salesforce, checks sanctions lists, creates investigation case in ServiceNow, and notifies compliance via Teams.
naftiko: '0.5'
info:
label: AML Alert Investigation Pipeline
description: On AML alert, enriches with customer data from Salesforce, checks sanctions lists, creates investigation case in ServiceNow, and notifies compliance via Teams.
tags:
- aml
- compliance
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml
port: 8080
tools:
- name: aml_alert_investigation_pipeline
description: Orchestrate aml alert investigation pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-alert
type: call
call: aml.get-alert
with:
alert_id: '{{resource_id}}'
- name: get-customer
type: call
call: salesforce.get-customer
with:
customer_id: '{{get-alert.customer_id}}'
- name: create-case
type: call
call: servicenow.create-case
with:
short_description: 'AML investigation: {{resource_id}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: compliance
text: 'AML alert {{resource_id}} for {{get-customer.name}}. Case: {{create-case.number}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://abn-amro.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://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Retrieves real-time market data for a given security from Bloomberg Enterprise Data, checks for significant price movements against Snowflake historical data, and alerts the trading desk in Microsoft Teams if volatility thresholds are breached.
naftiko: '0.5'
info:
label: Bloomberg Market Data Lookup with Risk Check
description: Retrieves real-time market data for a given security from Bloomberg Enterprise Data, checks for significant price movements against Snowflake historical data, and alerts the trading desk in Microsoft Teams if volatility thresholds are breached.
tags:
- trading
- market-data
- bloomberg-enterprise-data
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trading-data
port: 8080
tools:
- name: get-security-quote-with-check
description: Look up real-time market data for a security by Bloomberg ticker, compare against historical volatility, and alert if thresholds are breached.
inputParameters:
- name: ticker
in: body
type: string
description: Bloomberg ticker symbol (e.g., ABNA NA Equity).
- name: volatility_threshold
in: body
type: number
description: Percentage threshold for volatility alerts.
steps:
- name: get-quote
type: call
call: bloomberg.get-quote
with:
ticker: '{{ticker}}'
- name: get-historical
type: call
call: snowflake.execute-query
with:
warehouse: TRADING_WH
database: MARKET_DATA_DB
query: SELECT AVG(close_price) as avg_price, STDDEV(close_price) as std_price FROM price_history WHERE ticker = '{{ticker}}' AND trade_date >= DATEADD(day, -30, CURRENT_DATE())
- name: alert-desk
type: call
call: msteams.send-message
with:
channel: trading-desk-alerts
text: 'Market data alert: {{ticker}} | Last: {{get-quote.last_price}} | 30d avg: {{get-historical.avg_price}} | Std: {{get-historical.std_price}} | Threshold: {{volatility_threshold}}%'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: quotes
path: /market/quotes/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: channel
in: path
operations:
- name: send-message
method: POST
Receives credit application, runs scoring model in Snowflake, checks exposure limits, generates decision in ServiceNow, and notifies the credit committee.
naftiko: '0.5'
info:
label: Credit Decision Engine Pipeline
description: Receives credit application, runs scoring model in Snowflake, checks exposure limits, generates decision in ServiceNow, and notifies the credit committee.
tags:
- credit
- lending
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: credit
port: 8080
tools:
- name: credit_decision_engine_pipeline
description: Orchestrate credit decision engine pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-application
type: call
call: lending.get-credit-app
with:
app_id: '{{resource_id}}'
- name: run-scoring
type: call
call: snowflake.run-query
with:
sql_query: CALL credit_score('{{resource_id}}')
warehouse: CREDIT_WH
- name: create-decision
type: call
call: servicenow.create-record
with:
table: credit_decisions
app_id: '{{resource_id}}'
score: '{{run-scoring.score}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: credit-committee
text: 'Credit decision for {{resource_id}}: Score {{run-scoring.score}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Monitors FX hedging positions, calculates effectiveness in Snowflake, generates reports, creates alerts for breaches, and notifies treasury.
naftiko: '0.5'
info:
label: FX Hedging Position Monitor
description: Monitors FX hedging positions, calculates effectiveness in Snowflake, generates reports, creates alerts for breaches, and notifies treasury.
tags:
- fx
- hedging
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fx
port: 8080
tools:
- name: fx_hedging_position_monitor
description: Orchestrate fx hedging position monitor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Searches Elasticsearch for application logs by service name and time range, returning matching log entries for troubleshooting banking system issues.
naftiko: '0.5'
info:
label: Elasticsearch Log Search
description: Searches Elasticsearch for application logs by service name and time range, returning matching log entries for troubleshooting banking system issues.
tags:
- observability
- logging
- elasticsearch
capability:
exposes:
- type: mcp
namespace: log-search
port: 8080
tools:
- name: search-logs
description: Search Elasticsearch logs by service name and time range. Returns matching log entries.
inputParameters:
- name: service_name
in: body
type: string
description: The service name to search logs for.
- name: time_range
in: body
type: string
description: Time range (e.g., 1h, 6h, 24h).
- name: log_level
in: body
type: string
description: 'Log level filter: ERROR, WARN, INFO, DEBUG.'
call: elasticsearch.search
with:
index: logs-{{service_name}}-*
query: level:{{log_level}} AND @timestamp:[now-{{time_range}} TO now]
outputParameters:
- name: hit_count
type: string
mapping: $.hits.total.value
consumes:
- type: http
namespace: elasticsearch
baseUri: https://es.abnamro.com:9200
authentication:
type: basic
username: $secrets.elasticsearch_user
password: $secrets.elasticsearch_password
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
Retrieves the current on-call schedule for ABN AMRO incident response teams.
naftiko: '0.5'
info:
label: PagerDuty On-Call Schedule
description: Retrieves the current on-call schedule for ABN AMRO incident response teams.
tags:
- devops
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: incident-mgmt
port: 8080
tools:
- name: get-on-call
description: Get current on-call schedule by policy.
inputParameters:
- name: policy_id
in: body
type: string
description: The policy_id to look up.
call: pagerduty.get-policy_id
with:
policy_id: '{{policy_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_on_call_schedule
method: GET
On role change in Workday, updates SailPoint access, modifies Okta groups, adjusts ServiceNow assignments, and notifies the employee and manager.
naftiko: '0.5'
info:
label: Employee Role Transfer Orchestrator
description: On role change in Workday, updates SailPoint access, modifies Okta groups, adjusts ServiceNow assignments, and notifies the employee and manager.
tags:
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_role_transfer_orchestrator
description: Orchestrate employee role transfer orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-transfer
type: call
call: workday.get-transfer
with:
transfer_id: '{{resource_id}}'
- name: update-access
type: call
call: sailpoint.update-roles
with:
user_id: '{{get-transfer.employee_id}}'
new_role: '{{get-transfer.new_role}}'
- name: update-tickets
type: call
call: servicenow.update-assignments
with:
employee_id: '{{get-transfer.employee_id}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: hr-ops
text: Transfer {{resource_id}} processed for {{get-transfer.employee_name}}
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/abn-amro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: https://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Runs a liquidity stress test scenario by extracting positions from Snowflake, applying shock parameters, computing liquidity coverage ratio via Databricks, and publishing results to Power BI with compliance notification.
naftiko: '0.5'
info:
label: Liquidity Stress Test Orchestrator
description: Runs a liquidity stress test scenario by extracting positions from Snowflake, applying shock parameters, computing liquidity coverage ratio via Databricks, and publishing results to Power BI with compliance notification.
tags:
- risk-management
- liquidity
- stress-testing
- snowflake
- databricks
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-liquidity
port: 8080
tools:
- name: run-liquidity-stress-test
description: Given a scenario name and stress parameters, run liquidity stress test across Snowflake and Databricks, publish results, and notify risk committee.
inputParameters:
- name: scenario_name
in: body
type: string
description: Stress scenario name (e.g., market_crash_2008, idiosyncratic_run).
- name: shock_severity
in: body
type: string
description: 'Shock severity: mild, moderate, or severe.'
- name: reporting_date
in: body
type: string
description: Reporting date in YYYY-MM-DD format.
steps:
- name: extract-positions
type: call
call: snowflake.execute-query
with:
warehouse: RISK_WH
database: TREASURY_DB
query: SELECT * FROM liquidity_positions WHERE report_date = '{{reporting_date}}'
- name: run-model
type: call
call: databricks.run-job
with:
job_id: liquidity-stress-model
parameters:
scenario: '{{scenario_name}}'
severity: '{{shock_severity}}'
position_data: '{{extract-positions.statement_handle}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
group_id: risk-management-workspace
dataset_id: liquidity-stress-results
- name: notify-risk-committee
type: call
call: msteams.send-message
with:
channel: risk-committee
text: 'Liquidity stress test complete: {{scenario_name}} ({{shock_severity}}) for {{reporting_date}}. Databricks run: {{run-model.run_id}}. Dashboard refreshed. Review results in Power BI.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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: databricks
baseUri: https://adb-abnamro.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: 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: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
Loads stress scenario parameters, runs calculations in Snowflake, generates reports in Power BI, submits to regulators via ServiceNow, and notifies risk team.
naftiko: '0.5'
info:
label: Stress Testing Scenario Runner
description: Loads stress scenario parameters, runs calculations in Snowflake, generates reports in Power BI, submits to regulators via ServiceNow, and notifies risk team.
tags:
- risk
- stress-testing
- snowflake
- power-bi
- servicenow
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: stress_testing_scenario_runner
description: Orchestrate stress testing scenario runner workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: load-scenario
type: call
call: risk-engine.get-scenario
with:
scenario_id: '{{resource_id}}'
- name: run-calculations
type: call
call: snowflake.run-query
with:
sql_query: CALL run_stress_test('{{resource_id}}')
warehouse: RISK_WH
- name: generate-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: stress_testing
- name: notify
type: call
call: msteams.send-message
with:
channel: risk-team
text: 'Stress test {{resource_id}} complete. Impact: {{run-calculations.pnl_impact}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Retrieves portfolio positions and valuations from Bloomberg AIM for a given portfolio and valuation date, returning total NAV, position count, and top holdings.
naftiko: '0.5'
info:
label: Bloomberg AIM Portfolio Valuation
description: Retrieves portfolio positions and valuations from Bloomberg AIM for a given portfolio and valuation date, returning total NAV, position count, and top holdings.
tags:
- asset-management
- portfolio
- bloomberg-aim
capability:
exposes:
- type: mcp
namespace: portfolio-management
port: 8080
tools:
- name: get-portfolio-valuation
description: Look up portfolio valuation from Bloomberg AIM. Returns NAV, position count, and top holdings by weight.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Bloomberg AIM portfolio identifier.
- name: valuation_date
in: body
type: string
description: Valuation date in YYYY-MM-DD format.
call: bloomberg-aim.get-valuation
with:
portfolio_id: '{{portfolio_id}}'
valuation_date: '{{valuation_date}}'
outputParameters:
- name: nav
type: string
mapping: $.portfolio.nav
- name: position_count
type: string
mapping: $.portfolio.positionCount
- name: currency
type: string
mapping: $.portfolio.baseCurrency
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://api.bloomberg.com/aim/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: portfolios
path: /portfolios/{{portfolio_id}}/valuations?date={{valuation_date}}
inputParameters:
- name: portfolio_id
in: path
- name: valuation_date
in: query
operations:
- name: get-valuation
method: GET
Executes a SQL query against ABN AMRO's Snowflake data warehouse and returns the result set for analytics and reporting purposes.
naftiko: '0.5'
info:
label: Snowflake Query Execution
description: Executes a SQL query against ABN AMRO's Snowflake data warehouse and returns the result set for analytics and reporting purposes.
tags:
- data
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: data-warehouse
port: 8080
tools:
- name: run-query
description: Execute a SQL query on Snowflake. Returns the query result set and row count.
inputParameters:
- name: warehouse
in: body
type: string
description: The Snowflake warehouse to use.
- name: database
in: body
type: string
description: The Snowflake database to query.
- name: query
in: body
type: string
description: The SQL query to execute.
call: snowflake.execute-query
with:
warehouse: '{{warehouse}}'
database: '{{database}}'
query: '{{query}}'
outputParameters:
- name: statement_handle
type: string
mapping: $.statementHandle
- name: row_count
type: string
mapping: $.resultSetMetaData.numRows
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Queries active user sessions in Keycloak, cross-references with Azure AD sign-in logs for anomalous locations, and creates a security incident in ServiceNow when suspicious sessions are detected.
naftiko: '0.5'
info:
label: Keycloak Suspicious Session Audit
description: Queries active user sessions in Keycloak, cross-references with Azure AD sign-in logs for anomalous locations, and creates a security incident in ServiceNow when suspicious sessions are detected.
tags:
- identity-management
- authentication
- keycloak
- azure-active-directory
- servicenow
capability:
exposes:
- type: mcp
namespace: identity-sessions
port: 8080
tools:
- name: audit-user-sessions
description: List Keycloak sessions, check Azure AD sign-in logs for anomalies, and create a ServiceNow security incident if suspicious.
inputParameters:
- name: realm
in: body
type: string
description: The Keycloak realm name.
- name: user_id
in: body
type: string
description: The Keycloak user ID.
- name: user_principal_name
in: body
type: string
description: The user's Azure AD UPN for sign-in log lookup.
steps:
- name: get-sessions
type: call
call: keycloak.get-sessions
with:
realm: '{{realm}}'
user_id: '{{user_id}}'
- name: get-signin-logs
type: call
call: azuread.get-signin-logs
with:
user_principal_name: '{{user_principal_name}}'
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: '[Session Audit] Suspicious activity — {{user_principal_name}}'
description: 'User: {{user_principal_name}}
Keycloak sessions: {{get-sessions.session_count}}
Recent sign-in locations: {{get-signin-logs.locations}}
Review for potential account compromise.'
assigned_group: Security_Operations_Center
category: security_audit
consumes:
- type: http
namespace: keycloak
baseUri: https://auth.abnamro.com/admin/realms
authentication:
type: bearer
token: $secrets.keycloak_admin_token
resources:
- name: sessions
path: /{{realm}}/users/{{user_id}}/sessions
inputParameters:
- name: realm
in: path
- name: user_id
in: path
operations:
- name: get-sessions
method: GET
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: signin-logs
path: /auditLogs/signIns?$filter=userPrincipalName eq '{{user_principal_name}}'&$top=10
inputParameters:
- name: user_principal_name
in: query
operations:
- name: get-signin-logs
method: GET
- type: http
namespace: servicenow
baseUri: https://abnamro.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Validates client identity, screens against sanctions lists, creates client record in Salesforce, provisions ServiceNow access, and notifies relationship manager.
naftiko: '0.5'
info:
label: Client Onboarding KYC Pipeline
description: Validates client identity, screens against sanctions lists, creates client record in Salesforce, provisions ServiceNow access, and notifies relationship manager.
tags:
- kyc
- onboarding
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: kyc
port: 8080
tools:
- name: client_onboarding_kyc_pipeline
description: Orchestrate client onboarding kyc pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: validate-identity
type: call
call: kyc.validate-client
with:
client_id: '{{resource_id}}'
- name: screen-sanctions
type: call
call: sanctions.check-lists
with:
name: '{{validate-identity.legal_name}}'
- name: create-client
type: call
call: salesforce.create-account
with:
name: '{{validate-identity.legal_name}}'
kyc_status: '{{screen-sanctions.result}}'
- name: notify
type: call
call: slack.send-message
with:
channel: client-onboarding
text: 'KYC complete for {{resource_id}}: {{screen-sanctions.result}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://abn-amro.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://abn-amro.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
On fraud alert, collects transaction history from core banking, enriches with customer profile from Salesforce, creates investigation in ServiceNow, and escalates via PagerDuty.
naftiko: '0.5'
info:
label: Fraud Investigation Workflow
description: On fraud alert, collects transaction history from core banking, enriches with customer profile from Salesforce, creates investigation in ServiceNow, and escalates via PagerDuty.
tags:
- fraud
- investigation
- salesforce
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: fraud
port: 8080
tools:
- name: fraud_investigation_workflow
description: Orchestrate fraud investigation workflow workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-transactions
type: call
call: corebanking.get-history
with:
account_id: '{{resource_id}}'
- name: get-profile
type: call
call: salesforce.get-customer
with:
account_id: '{{resource_id}}'
- name: create-investigation
type: call
call: servicenow.create-incident
with:
short_description: 'Fraud investigation: {{resource_id}}'
- name: escalate
type: call
call: pagerduty.create-incident
with:
title: 'Fraud alert: {{resource_id}} - {{get-profile.name}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://abn-amro.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://abn-amro.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty-op
method: POST
Deploys a Helm chart to Azure Kubernetes Service for banking microservices, triggers a SonarQube quality gate check beforehand, and notifies the platform team in Microsoft Teams.
naftiko: '0.5'
info:
label: Helm Chart Deployment to AKS
description: Deploys a Helm chart to Azure Kubernetes Service for banking microservices, triggers a SonarQube quality gate check beforehand, and notifies the platform team in Microsoft Teams.
tags:
- devops
- deployment
- helm
- azure-kubernetes-service
- sonarqube
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: k8s-deploy
port: 8080
tools:
- name: deploy-helm-chart
description: Given a chart name, version, and target namespace, validate quality gate, deploy to AKS, and notify the team.
inputParameters:
- name: chart_name
in: body
type: string
description: The Helm chart name.
- name: chart_version
in: body
type: string
description: The Helm chart version to deploy.
- name: k8s_namespace
in: body
type: string
description: The Kubernetes namespace to deploy into.
- name: project_key
in: body
type: string
description: The SonarQube project key for quality gate verification.
steps:
- name: check-quality-gate
type: call
call: sonarqube.get-quality-gate
with:
project_key: '{{project_key}}'
- name: deploy-chart
type: call
call: azuredevops.run-pipeline
with:
project: banking-services
pipeline_id: helm-deploy
variables:
chart: '{{chart_name}}'
version: '{{chart_version}}'
namespace: '{{k8s_namespace}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: platform-deployments
text: 'Helm deploy: {{chart_name}}:{{chart_version}} to {{k8s_namespace}}. Quality gate: {{check-quality-gate.status}}. Pipeline run: {{deploy-chart.run_id}}.'
consumes:
- type: http
namespace: sonarqube
baseUri: https://sonarqube.abnamro.com/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: quality-gates
path: /qualitygates/project_status?projectKey={{project_key}}
inputParameters:
- name: project_key
in: query
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/abnamro
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: pipelines
path: /{{project}}/_apis/pipelines/{{pipeline_id}}/runs?api-version=7.1
inputParameters:
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: run-pipeline
method: POST
- type: http
namespace: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
Detects digital banking incidents via monitoring, creates war room in Teams, gathers diagnostics from Splunk, and coordinates resolution.
naftiko: '0.5'
info:
label: Digital Channel Incident Response
description: Detects digital banking incidents via monitoring, creates war room in Teams, gathers diagnostics from Splunk, and coordinates resolution.
tags:
- incident-response
- digital
- splunk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: digital_channel_incident_response
description: Orchestrate digital channel incident response workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Processes a GDPR data subject access request by searching for personal data across Salesforce, Snowflake, and ServiceNow, compiling results, and creating a Jira task for the DPO team to review and respond.
naftiko: '0.5'
info:
label: GDPR Data Subject Access Request Pipeline
description: Processes a GDPR data subject access request by searching for personal data across Salesforce, Snowflake, and ServiceNow, compiling results, and creating a Jira task for the DPO team to review and respond.
tags:
- privacy
- gdpr
- data-protection
- salesforce
- snowflake
- servicenow
- jira
capability:
exposes:
- type: mcp
namespace: privacy-gdpr
port: 8080
tools:
- name: process-dsar
description: Given a data subject email and request type, search for personal data across systems and create a review task.
inputParameters:
- name: subject_email
in: body
type: string
description: The email address of the data subject.
- name: request_type
in: body
type: string
description: 'DSAR type: access, erasure, portability, or rectification.'
- name: request_reference
in: body
type: string
description: The DSAR reference number.
steps:
- name: search-crm
type: call
call: salesforce.search-contacts
with:
email: '{{subject_email}}'
- name: search-data-warehouse
type: call
call: snowflake.execute-query
with:
warehouse: PRIVACY_WH
database: CUSTOMER_DB
query: SELECT data_category, record_count, last_updated FROM data_inventory WHERE email = '{{subject_email}}'
- name: search-itsm
type: call
call: servicenow.search-records
with:
table: sys_user
query: email={{subject_email}}
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: PRIVACY
issuetype: Task
summary: '[DSAR] {{request_type}} — {{subject_email}} — {{request_reference}}'
description: 'DSAR {{request_type}} request {{request_reference}}.
Subject: {{subject_email}}
Salesforce records: {{search-crm.total_size}}
Snowflake categories found: {{search-data-warehouse.row_count}}
ServiceNow records: {{search-itsm.count}}
Deadline: 30 days from request receipt.'
consumes:
- type: http
namespace: salesforce
baseUri: https://abnamro.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /parameterizedSearch/?q={{email}}&sobject=Contact&Contact.fields=Id,Name,Email
inputParameters:
- name: email
in: query
operations:
- name: search-contacts
method: GET
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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://abnamro.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/{{table}}?sysparm_query={{query}}
inputParameters:
- name: table
in: path
- name: query
in: query
operations:
- name: search-records
method: GET
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Retrieves a ServiceNow incident by number, returning status, priority, assigned group, and resolution notes for support teams.
naftiko: '0.5'
info:
label: ServiceNow Incident Lookup
description: Retrieves a ServiceNow incident by number, returning status, priority, assigned group, and resolution notes for support teams.
tags:
- it-service-management
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: Look up a ServiceNow incident by number. Returns state, priority, assigned group, short description, and resolution notes.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
outputParameters:
- name: state
type: string
mapping: $.result.state
- name: priority
type: string
mapping: $.result.priority
- name: assigned_group
type: string
mapping: $.result.assignment_group.display_value
consumes:
- type: http
namespace: servicenow
baseUri: https://abnamro.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
Retrieves the current status of Grafana alerts for ABN AMRO infrastructure monitoring.
naftiko: '0.5'
info:
label: Grafana Alert Status
description: Retrieves the current status of Grafana alerts for ABN AMRO infrastructure monitoring.
tags:
- monitoring
- grafana
- alerting
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-alert-status
description: Get Grafana alert status by rule ID.
inputParameters:
- name: rule_id
in: body
type: string
description: The rule_id to look up.
call: grafana.get-rule_id
with:
rule_id: '{{rule_id}}'
consumes:
- type: http
namespace: grafana
baseUri: https://abn-amro-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana_alert_status
method: GET
Collects access control evidence from Okta, change management evidence from ServiceNow, monitoring evidence from Datadog, and compiles in Confluence.
naftiko: '0.5'
info:
label: SOC2 Evidence Collection Pipeline
description: Collects access control evidence from Okta, change management evidence from ServiceNow, monitoring evidence from Datadog, and compiles in Confluence.
tags:
- compliance
- audit
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: soc2_evidence_collection_pipeline
description: Orchestrate soc2 evidence collection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-access-evidence
type: call
call: okta.get-access-logs
with:
period: '{{resource_id}}'
- name: get-change-evidence
type: call
call: servicenow.get-changes
with:
period: '{{resource_id}}'
- name: get-monitoring-evidence
type: call
call: datadog.get-alerts-history
with:
period: '{{resource_id}}'
- name: compile-report
type: call
call: confluence.create-page
with:
space: AUDIT
title: 'SOC2 Evidence: {{resource_id}}'
consumes:
- type: http
namespace: okta
baseUri: https://abn-amro.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://abn-amro.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: 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: confluence
baseUri: https://abn-amro.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
When a periodic access certification is due, pulls user entitlements from SailPoint, cross-references with Workday org data, and creates a Jira review task for the user's manager.
naftiko: '0.5'
info:
label: SailPoint Access Review Orchestrator
description: When a periodic access certification is due, pulls user entitlements from SailPoint, cross-references with Workday org data, and creates a Jira review task for the user's manager.
tags:
- identity-management
- access-review
- sailpoint
- workday
- jira
capability:
exposes:
- type: mcp
namespace: identity-access
port: 8080
tools:
- name: initiate-access-review
description: Given a user identity ID, pull entitlements from SailPoint, get manager info from Workday, and create a Jira access review task.
inputParameters:
- name: identity_id
in: body
type: string
description: The SailPoint identity ID.
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: review_campaign
in: body
type: string
description: The access review campaign name.
steps:
- name: get-entitlements
type: call
call: sailpoint.get-entitlements
with:
identity_id: '{{identity_id}}'
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: IAM
issuetype: Task
summary: '[Access Review] {{get-employee.full_name}} — {{review_campaign}}'
description: 'Review entitlements for {{get-employee.full_name}} ({{identity_id}}).
Department: {{get-employee.department}}
Manager: {{get-employee.manager_name}}
Entitlements count: {{get-entitlements.count}}
Entitlements: {{get-entitlements.summary}}'
assignee: '{{get-employee.manager_email}}'
consumes:
- type: http
namespace: sailpoint
baseUri: https://abnamro.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: identities
path: /identities/{{identity_id}}/entitlements
inputParameters:
- name: identity_id
in: path
operations:
- name: get-entitlements
method: GET
- type: http
namespace: workday
baseUri: https://wd3-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Retrieves SWIFT message details by reference number for ABN AMRO payment operations.
naftiko: '0.5'
info:
label: SWIFT Message Lookup
description: Retrieves SWIFT message details by reference number for ABN AMRO payment operations.
tags:
- payments
- swift
- banking
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-swift-msg
description: Look up SWIFT message by reference.
inputParameters:
- name: message_ref
in: body
type: string
description: The message_ref to look up.
call: servicenow.get-message_ref
with:
message_ref: '{{message_ref}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://abn-amro.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: swift_message_lookup
method: GET
Scans Azure and AWS configurations, validates against CIS benchmarks, creates findings in Jira, and notifies cloud security team.
naftiko: '0.5'
info:
label: Cloud Security Posture Assessment
description: Scans Azure and AWS configurations, validates against CIS benchmarks, creates findings in Jira, and notifies cloud security team.
tags:
- security
- cloud
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: cloud_security_posture_assessment
description: Orchestrate cloud security posture assessment workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Extracts regulatory reporting data from Snowflake, transforms via Informatica, and loads into Oracle for DNB (Dutch Central Bank) submission, notifying compliance via Microsoft Teams upon completion.
naftiko: '0.5'
info:
label: Regulatory Reporting Data Pipeline
description: Extracts regulatory reporting data from Snowflake, transforms via Informatica, and loads into Oracle for DNB (Dutch Central Bank) submission, notifying compliance via Microsoft Teams upon completion.
tags:
- regulatory-compliance
- reporting
- snowflake
- informatica
- oracle-cloud
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: run-regulatory-extract
description: Given a report type and period, extract data from Snowflake, trigger Informatica transformation, and notify compliance team.
inputParameters:
- name: report_type
in: body
type: string
description: 'Regulatory report type: corep, finrep, anacredit, or srep.'
- name: reporting_period
in: body
type: string
description: Reporting period in YYYY-QN format (e.g., 2026-Q1).
steps:
- name: extract-data
type: call
call: snowflake.execute-query
with:
warehouse: REG_REPORTING_WH
database: REGULATORY_DB
query: CALL sp_extract_{{report_type}}('{{reporting_period}}')
- name: trigger-transform
type: call
call: informatica.start-task
with:
task_name: '{{report_type}}_transform_{{reporting_period}}'
task_type: mapping
- name: notify-compliance
type: call
call: msteams.send-message
with:
channel: regulatory-reporting
text: 'Regulatory extract complete: {{report_type}} for {{reporting_period}}. Informatica job: {{trigger-transform.run_id}}. Data staged for DNB submission review.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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: informatica
baseUri: https://dm-eu.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: tasks
path: /job
operations:
- name: start-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: channel
in: path
operations:
- name: send-message
method: POST
Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected.
naftiko: '0.5'
info:
label: SAP Expense Report Processing
description: Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected.
tags:
- finance
- expense-management
- sap-concur
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-expense
port: 8080
tools:
- name: review-expense-report
description: Given a Concur expense report ID and employee ID, fetch report details, validate cost center, and flag policy violations to ServiceNow.
inputParameters:
- name: expense_report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: employee_id
in: body
type: string
description: The Workday employee ID of the expense submitter.
steps:
- name: get-expense-report
type: call
call: concur.get-expense-report
with:
report_id: '{{expense_report_id}}'
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: open-review-task
type: call
call: servicenow.create-task
with:
short_description: 'Expense policy review: {{get-expense-report.report_name}} — {{get-employee.full_name}}'
description: 'Report {{expense_report_id}} total: {{get-expense-report.total_amount}} {{get-expense-report.currency}}. Cost center: {{get-employee.cost_center}}. Submitted: {{get-expense-report.submit_date}}.'
assigned_group: Finance_Audit
category: expense_review
consumes:
- type: http
namespace: concur
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: workday
baseUri: https://wd3-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://abnamro.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
Computes daily Value-at-Risk across the trading book by pulling positions from Snowflake, running Monte Carlo simulation in Databricks, storing results, and publishing the risk report to Power BI with breach alerts.
naftiko: '0.5'
info:
label: Market Risk VaR Reporting Pipeline
description: Computes daily Value-at-Risk across the trading book by pulling positions from Snowflake, running Monte Carlo simulation in Databricks, storing results, and publishing the risk report to Power BI with breach alerts.
tags:
- risk-management
- market-risk
- var
- snowflake
- databricks
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-market
port: 8080
tools:
- name: compute-daily-var
description: Given a trading book and date, compute VaR using Monte Carlo simulation and publish results.
inputParameters:
- name: trading_book
in: body
type: string
description: The trading book identifier.
- name: valuation_date
in: body
type: string
description: Valuation date in YYYY-MM-DD format.
- name: simulation_count
in: body
type: number
description: Number of Monte Carlo simulations (e.g., 10000).
steps:
- name: extract-positions
type: call
call: snowflake.execute-query
with:
warehouse: RISK_WH
database: TRADING_DB
query: SELECT * FROM trading_positions WHERE book_id = '{{trading_book}}' AND position_date = '{{valuation_date}}'
- name: run-simulation
type: call
call: databricks.run-job
with:
job_id: monte-carlo-var
parameters:
book_id: '{{trading_book}}'
date: '{{valuation_date}}'
simulations: '{{simulation_count}}'
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
group_id: risk-management-workspace
dataset_id: market-risk-var-daily
- name: alert-risk-management
type: call
call: msteams.send-message
with:
channel: market-risk
text: 'Daily VaR computed: {{trading_book}} for {{valuation_date}}. VaR(99%): {{run-simulation.var_99}}. VaR(95%): {{run-simulation.var_95}}. Simulations: {{simulation_count}}. Dashboard refreshed.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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: databricks
baseUri: https://adb-abnamro.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: 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: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
Tracks digital banking user flows, identifies friction points in Snowflake, creates improvement tasks in Jira, and notifies product.
naftiko: '0.5'
info:
label: Digital Banking User Journey Analyzer
description: Tracks digital banking user flows, identifies friction points in Snowflake, creates improvement tasks in Jira, and notifies product.
tags:
- digital-banking
- analytics
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: digital-banking
port: 8080
tools:
- name: digital_banking_user_journey_analyzer
description: Orchestrate digital banking user journey analyzer workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Queries Apache Kafka cluster metadata for a given topic, returning partition count, replication factor, and consumer group lag for banking event streaming.
naftiko: '0.5'
info:
label: Apache Kafka Topic Lookup
description: Queries Apache Kafka cluster metadata for a given topic, returning partition count, replication factor, and consumer group lag for banking event streaming.
tags:
- messaging
- event-streaming
- apache-kafka
capability:
exposes:
- type: mcp
namespace: event-platform
port: 8080
tools:
- name: get-topic-info
description: Look up Kafka topic metadata. Returns partition count, replication factor, and consumer lag.
inputParameters:
- name: topic_name
in: body
type: string
description: The Kafka topic name.
- name: cluster
in: body
type: string
description: The Kafka cluster identifier.
call: kafka.get-topic
with:
topic_name: '{{topic_name}}'
cluster: '{{cluster}}'
outputParameters:
- name: partition_count
type: string
mapping: $.topic.partitions
- name: replication_factor
type: string
mapping: $.topic.replicationFactor
consumes:
- type: http
namespace: kafka
baseUri: https://kafka-rest.abnamro.com/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: topics
path: /clusters/{{cluster}}/topics/{{topic_name}}
inputParameters:
- name: cluster
in: path
- name: topic_name
in: path
operations:
- name: get-topic
method: GET
Receives complaint from Zendesk, enriches with client history from Salesforce, creates resolution workflow in ServiceNow, and sends response via email.
naftiko: '0.5'
info:
label: Customer Complaint Resolution Pipeline
description: Receives complaint from Zendesk, enriches with client history from Salesforce, creates resolution workflow in ServiceNow, and sends response via email.
tags:
- customer-service
- zendesk
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-service
port: 8080
tools:
- name: customer_complaint_resolution_pipeline
description: Orchestrate customer complaint resolution pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-complaint
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{resource_id}}'
- name: get-history
type: call
call: salesforce.get-client-history
with:
client_id: '{{get-complaint.client_id}}'
- name: create-resolution
type: call
call: servicenow.create-request
with:
short_description: 'Complaint resolution: {{resource_id}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: client-service
text: 'Complaint {{resource_id}} resolution started. Client: {{get-history.name}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://abn-amro.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://abn-amro.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://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Initiates a SWIFT payment through the core banking system, validates the BIC code, creates the payment instruction, and tracks the transaction status with Microsoft Teams notifications at each stage.
naftiko: '0.5'
info:
label: SWIFT Payment Initiation and Tracking
description: Initiates a SWIFT payment through the core banking system, validates the BIC code, creates the payment instruction, and tracks the transaction status with Microsoft Teams notifications at each stage.
tags:
- payments
- swift
- banking
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: payments-swift
port: 8080
tools:
- name: initiate-swift-payment
description: Given payment details, validate BIC, create SWIFT payment instruction, and notify the treasury team of status changes.
inputParameters:
- name: debtor_iban
in: body
type: string
description: Debtor IBAN.
- name: creditor_iban
in: body
type: string
description: Creditor IBAN.
- name: creditor_bic
in: body
type: string
description: Creditor bank BIC/SWIFT code.
- name: amount
in: body
type: number
description: Payment amount.
- name: currency
in: body
type: string
description: Payment currency (ISO 4217).
- name: reference
in: body
type: string
description: Payment reference for the beneficiary.
steps:
- name: validate-bic
type: call
call: core-banking.validate-bic
with:
bic: '{{creditor_bic}}'
- name: create-payment
type: call
call: core-banking.create-swift-payment
with:
debtor_iban: '{{debtor_iban}}'
creditor_iban: '{{creditor_iban}}'
creditor_bic: '{{creditor_bic}}'
amount: '{{amount}}'
currency: '{{currency}}'
reference: '{{reference}}'
- name: notify-treasury
type: call
call: msteams.send-message
with:
channel: treasury-payments
text: 'SWIFT payment initiated: {{create-payment.payment_id}} | {{amount}} {{currency}} to {{creditor_iban}} ({{creditor_bic}}) | Reference: {{reference}} | Status: {{create-payment.status}}'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.abnamro.com/v1/payments
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: bic-validation
path: /bic/validate
operations:
- name: validate-bic
method: POST
- name: swift-payments
path: /swift
operations:
- name: create-swift-payment
method: POST
- type: http
namespace: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
Captures operational risk events, categorizes by Basel taxonomy, calculates capital charges in Snowflake, and notifies risk management.
naftiko: '0.5'
info:
label: Operational Risk Event Pipeline
description: Captures operational risk events, categorizes by Basel taxonomy, calculates capital charges in Snowflake, and notifies risk management.
tags:
- risk
- operational-risk
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: operational_risk_event_pipeline
description: Orchestrate operational risk event pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Orchestrates a new loan application by pulling applicant data from Salesforce, running credit scoring via Snowflake ML models, creating a ServiceNow case for underwriting review, and notifying the relationship manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Loan Application Processing Pipeline
description: Orchestrates a new loan application by pulling applicant data from Salesforce, running credit scoring via Snowflake ML models, creating a ServiceNow case for underwriting review, and notifying the relationship manager in Microsoft Teams.
tags:
- lending
- loan-origination
- salesforce
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: process-loan-application
description: Given a loan application ID and applicant Salesforce ID, orchestrate credit scoring and underwriting workflow.
inputParameters:
- name: application_id
in: body
type: string
description: The loan application reference number.
- name: applicant_id
in: body
type: string
description: The Salesforce account ID of the applicant.
- name: loan_amount
in: body
type: number
description: Requested loan amount in EUR.
- name: loan_type
in: body
type: string
description: 'Loan type: mortgage, corporate, sme, or consumer.'
steps:
- name: get-applicant
type: call
call: salesforce.get-account
with:
account_id: '{{applicant_id}}'
- name: run-credit-score
type: call
call: snowflake.execute-query
with:
warehouse: LENDING_WH
database: LENDING_DB
query: SELECT credit_score, pd_estimate, lgd_estimate FROM ml_credit_scores WHERE customer_id = '{{applicant_id}}' ORDER BY scored_at DESC LIMIT 1
- name: create-case
type: call
call: servicenow.create-record
with:
table: u_loan_underwriting
short_description: 'Loan underwriting: {{get-applicant.name}} — EUR {{loan_amount}}'
description: 'Application: {{application_id}}
Applicant: {{get-applicant.name}}
Type: {{loan_type}}
Amount: EUR {{loan_amount}}
Credit score: {{run-credit-score.credit_score}}
PD: {{run-credit-score.pd_estimate}}'
assigned_group: Underwriting_{{loan_type}}
- name: notify-rm
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-applicant.owner_email}}'
text: 'Loan application {{application_id}} for {{get-applicant.name}} (EUR {{loan_amount}}) is now in underwriting. Credit score: {{run-credit-score.credit_score}}. ServiceNow case: {{create-case.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://abnamro.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: snowflake
baseUri: https://abnamro.eu-west-1.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://abnamro.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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Executes a foreign exchange spot trade through Reuters, validates the rate against Bloomberg market data, books the trade in the core banking system, and confirms execution to the trader via Microsoft Teams.
naftiko: '0.5'
info:
label: FX Spot Trade Execution
description: Executes a foreign exchange spot trade through Reuters, validates the rate against Bloomberg market data, books the trade in the core banking system, and confirms execution to the trader via Microsoft Teams.
tags:
- trading
- foreign-exchange
- reuters
- bloomberg
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trading-fx
port: 8080
tools:
- name: execute-fx-spot
description: Given a currency pair and notional, validate the rate, execute on Reuters, book internally, and confirm to the trader.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair (e.g., EUR/USD).
- name: direction
in: body
type: string
description: 'Trade direction: buy or sell (base currency).'
- name: notional
in: body
type: number
description: Notional amount in base currency.
- name: trader_upn
in: body
type: string
description: The UPN of the executing trader.
steps:
- name: get-market-rate
type: call
call: bloomberg.get-fx-rate
with:
currency_pair: '{{currency_pair}}'
- name: execute-trade
type: call
call: reuters.execute-fx-spot
with:
currency_pair: '{{currency_pair}}'
direction: '{{direction}}'
notional: '{{notional}}'
- name: book-trade
type: call
call: core-banking.book-fx-trade
with:
trade_id: '{{execute-trade.trade_id}}'
currency_pair: '{{currency_pair}}'
rate: '{{execute-trade.executed_rate}}'
notional: '{{notional}}'
direction: '{{direction}}'
- name: confirm-trader
type: call
call: msteams.send-message
with:
recipient_upn: '{{trader_upn}}'
text: 'FX Spot executed: {{direction}} {{notional}} {{currency_pair}} at {{execute-trade.executed_rate}}. Trade ID: {{execute-trade.trade_id}}. Booked: {{book-trade.booking_ref}}. Settlement: {{execute-trade.value_date}}.'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: fx-rates
path: /market/fx/{{currency_pair}}
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: reuters
baseUri: https://api.refinitiv.com/trading/fx/v1
authentication:
type: bearer
token: $secrets.reuters_token
resources:
- name: spot-orders
path: /spot/execute
operations:
- name: execute-fx-spot
method: POST
- type: http
namespace: core-banking
baseUri: https://api.abnamro.com/v1/trading
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: fx-bookings
path: /fx/book
operations:
- name: book-fx-trade
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 P1 incident, creates a Teams channel, pulls recent deployments from GitHub, gathers logs from Splunk, creates a bridge call, and updates StatusPage.
naftiko: '0.5'
info:
label: Incident War Room Orchestrator
description: On P1 incident, creates a Teams channel, pulls recent deployments from GitHub, gathers logs from Splunk, creates a bridge call, and updates StatusPage.
tags:
- incident-management
- github
- splunk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-management
port: 8080
tools:
- name: incident_war_room_orchestrator
description: Orchestrate incident war room orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-incident
type: call
call: pagerduty.get-incident
with:
incident_id: '{{resource_id}}'
- name: get-deployments
type: call
call: github.get-recent-deployments
with:
repo: '{{get-incident.service}}'
- name: get-logs
type: call
call: splunk.search-logs
with:
query: '{{get-incident.service}} error'
time_range: -1h
- name: notify
type: call
call: msteams.send-message
with:
channel: war-room
text: 'P1: {{get-incident.title}}. Recent deploys: {{get-deployments.count}}. Errors: {{get-logs.count}}'
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-op
method: POST
- 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: splunk
baseUri: https://abn-amro-splunk.com/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: splunk-op
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Orchestrates collateral valuation by pulling positions from the core banking system, fetching market prices from Bloomberg, computing haircuts via Databricks, and updating the collateral management system in Snowflake.
naftiko: '0.5'
info:
label: Collateral Valuation Pipeline
description: Orchestrates collateral valuation by pulling positions from the core banking system, fetching market prices from Bloomberg, computing haircuts via Databricks, and updating the collateral management system in Snowflake.
tags:
- collateral-management
- risk-management
- bloomberg
- databricks
- snowflake
capability:
exposes:
- type: mcp
namespace: collateral
port: 8080
tools:
- name: revalue-collateral
description: Given a collateral pool ID and valuation date, revalue all positions using market data and apply regulatory haircuts.
inputParameters:
- name: pool_id
in: body
type: string
description: The collateral pool identifier.
- name: valuation_date
in: body
type: string
description: Valuation date in YYYY-MM-DD format.
steps:
- name: get-positions
type: call
call: snowflake.execute-query
with:
warehouse: COLLATERAL_WH
database: COLLATERAL_DB
query: SELECT security_id, quantity, collateral_type FROM collateral_positions WHERE pool_id = '{{pool_id}}'
- name: get-market-prices
type: call
call: bloomberg.get-bulk-prices
with:
securities: '{{get-positions.security_ids}}'
date: '{{valuation_date}}'
- name: compute-haircuts
type: call
call: databricks.run-job
with:
job_id: collateral-haircut-model
parameters:
pool_id: '{{pool_id}}'
valuation_date: '{{valuation_date}}'
- name: update-valuations
type: call
call: snowflake.execute-query
with:
warehouse: COLLATERAL_WH
database: COLLATERAL_DB
query: CALL sp_update_collateral_valuations('{{pool_id}}', '{{valuation_date}}')
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bulk-prices
path: /market/prices/bulk
operations:
- name: get-bulk-prices
method: POST
- type: http
namespace: databricks
baseUri: https://adb-abnamro.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
Triggers a Power BI dataset refresh, validates the refresh completed successfully by checking status, and notifies the analytics team in Microsoft Teams with the result.
naftiko: '0.5'
info:
label: Power BI Dashboard Refresh with Validation
description: Triggers a Power BI dataset refresh, validates the refresh completed successfully by checking status, and notifies the analytics team in Microsoft Teams with the result.
tags:
- analytics
- reporting
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: refresh-and-validate-powerbi
description: Trigger a Power BI dataset refresh, check completion status, and notify the analytics team.
inputParameters:
- name: group_id
in: body
type: string
description: The Power BI workspace (group) ID.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
- name: report_name
in: body
type: string
description: Human-readable report name for notifications.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
- name: check-status
type: call
call: powerbi.get-refresh-history
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: analytics-reports
text: 'Power BI refresh: {{report_name}} | Status: {{check-status.status}} | Duration: {{check-status.duration}} | Dataset: {{dataset_id}}'
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- name: get-refresh-history
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: channel
in: path
operations:
- name: send-message
method: POST
Extracts payment batches from SWIFT, reconciles against core banking ledger, identifies breaks, creates Jira tickets, and reports to operations.
naftiko: '0.5'
info:
label: Payment Processing Reconciliation
description: Extracts payment batches from SWIFT, reconciles against core banking ledger, identifies breaks, creates Jira tickets, and reports to operations.
tags:
- payments
- reconciliation
- jira
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: payment_processing_reconciliation
description: Orchestrate payment processing reconciliation workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-payments
type: call
call: swift.get-batch
with:
batch_id: '{{resource_id}}'
- name: reconcile
type: call
call: snowflake.run-query
with:
sql_query: CALL reconcile_payments('{{resource_id}}')
warehouse: PAYMENTS_WH
- name: create-breaks
type: call
call: jira.create-issue
with:
project: PAY
summary: 'Payment breaks: batch {{resource_id}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: payment-ops
text: 'Reconciliation complete for batch {{resource_id}}. Breaks: {{reconcile.break_count}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Validates change request in ServiceNow, runs pre-deployment tests, executes Terraform plan, monitors Datadog health, and sends post-change report.
naftiko: '0.5'
info:
label: IT Change Management Pipeline
description: Validates change request in ServiceNow, runs pre-deployment tests, executes Terraform plan, monitors Datadog health, and sends post-change report.
tags:
- change-management
- servicenow
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: it_change_management_pipeline
description: Orchestrate it change management pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-change
type: call
call: servicenow.get-change
with:
change_id: '{{resource_id}}'
- name: run-tests
type: call
call: postman.run-collection
with:
collection_id: pre_change_{{resource_id}}
- name: check-health
type: call
call: datadog.get-monitors
with:
tag: change:{{resource_id}}
- name: notify
type: call
call: msteams.send-message
with:
channel: change-mgmt
text: 'Change {{resource_id}} executed. Health: {{check-health.status}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://abn-amro.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: 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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Retrieves the service dependency map from Datadog for ABN AMRO microservices.
naftiko: '0.5'
info:
label: Datadog Service Map Lookup
description: Retrieves the service dependency map from Datadog for ABN AMRO microservices.
tags:
- observability
- datadog
- service-map
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-service-map
description: Get Datadog service map for a service.
inputParameters:
- name: service_name
in: body
type: string
description: The service_name to look up.
call: datadog.get-service_name
with:
service_name: '{{service_name}}'
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_service_map_lookup
method: GET
Triggers a Postman collection run for banking API regression tests, logs results to Snowflake for trend analysis, and notifies the QA team in Microsoft Teams with pass/fail summary.
naftiko: '0.5'
info:
label: Postman API Regression Suite with Reporting
description: Triggers a Postman collection run for banking API regression tests, logs results to Snowflake for trend analysis, and notifies the QA team in Microsoft Teams with pass/fail summary.
tags:
- testing
- api-testing
- postman
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: api-testing
port: 8080
tools:
- name: run-api-regression-suite
description: Run a Postman collection, log results to Snowflake, and notify the QA team.
inputParameters:
- name: collection_id
in: body
type: string
description: The Postman collection UID.
- name: environment_id
in: body
type: string
description: The Postman environment UID.
- name: suite_name
in: body
type: string
description: Human-readable test suite name.
steps:
- name: run-tests
type: call
call: postman.run-collection
with:
collection: '{{collection_id}}'
environment: '{{environment_id}}'
- name: log-results
type: call
call: snowflake.execute-query
with:
warehouse: QA_WH
database: QA_DB
query: INSERT INTO api_test_results (suite_name, run_id, status, executed_at) VALUES ('{{suite_name}}', '{{run-tests.run_id}}', '{{run-tests.status}}', CURRENT_TIMESTAMP())
- name: notify-qa
type: call
call: msteams.send-message
with:
channel: qa-api-testing
text: 'API Regression: {{suite_name}} | Run: {{run-tests.run_id}} | Status: {{run-tests.status}} | Results logged to Snowflake.'
consumes:
- type: http
namespace: postman
baseUri: https://api.getpostman.com
authentication:
type: bearer
token: $secrets.postman_api_key
resources:
- name: collection-runs
path: /collections/{{collection}}/runs
inputParameters:
- name: collection
in: path
operations:
- name: run-collection
method: POST
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: channel
in: path
operations:
- name: send-message
method: POST
Traces data lineage from Snowflake, identifies downstream dependencies in Alation catalog, assesses impact of schema changes, creates change requests in ServiceNow.
naftiko: '0.5'
info:
label: Data Lineage Impact Analyzer
description: Traces data lineage from Snowflake, identifies downstream dependencies in Alation catalog, assesses impact of schema changes, creates change requests in ServiceNow.
tags:
- data-governance
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: data_lineage_impact_analyzer
description: Orchestrate data lineage impact analyzer workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-lineage
type: call
call: snowflake.get-lineage
with:
table: '{{resource_id}}'
- name: get-dependencies
type: call
call: alation.get-downstream
with:
table: '{{resource_id}}'
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: 'Schema change impact: {{resource_id}}'
downstream_count: '{{get-dependencies.count}}'
- name: notify
type: call
call: slack.send-message
with:
channel: data-eng
text: 'Impact analysis for {{resource_id}}: {{get-dependencies.count}} downstream consumers'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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://abn-amro.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 a bond trade against pre-trade compliance limits in Snowflake, submits the order to Tradeweb for execution, books the trade in the core banking system, and confirms to the trader via Microsoft Teams.
naftiko: '0.5'
info:
label: Tradeweb Bond Execution with Compliance Check
description: Validates a bond trade against pre-trade compliance limits in Snowflake, submits the order to Tradeweb for execution, books the trade in the core banking system, and confirms to the trader via Microsoft Teams.
tags:
- trading
- fixed-income
- tradeweb
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trading-execution
port: 8080
tools:
- name: execute-bond-trade
description: Validate pre-trade limits, submit a bond trade to Tradeweb, book internally, and confirm to the trader.
inputParameters:
- name: isin
in: body
type: string
description: The ISIN of the bond to trade.
- name: direction
in: body
type: string
description: 'Trade direction: buy or sell.'
- name: notional
in: body
type: number
description: Notional amount in the bond's denomination currency.
- name: trader_upn
in: body
type: string
description: The UPN of the executing trader.
steps:
- name: check-limits
type: call
call: snowflake.execute-query
with:
warehouse: TRADING_WH
database: COMPLIANCE_DB
query: SELECT remaining_limit FROM pre_trade_limits WHERE isin = '{{isin}}' AND direction = '{{direction}}'
- name: submit-order
type: call
call: tradeweb.submit-order
with:
isin: '{{isin}}'
direction: '{{direction}}'
notional: '{{notional}}'
- name: book-trade
type: call
call: core-banking.book-trade
with:
trade_id: '{{submit-order.trade_id}}'
isin: '{{isin}}'
direction: '{{direction}}'
notional: '{{notional}}'
price: '{{submit-order.execution_price}}'
- name: confirm-trader
type: call
call: msteams.send-message
with:
recipient_upn: '{{trader_upn}}'
text: 'Bond trade executed: {{direction}} {{notional}} {{isin}} at {{submit-order.execution_price}}. Yield: {{submit-order.yield}}. Settlement: {{submit-order.settlement_date}}. Trade ID: {{submit-order.trade_id}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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: tradeweb
baseUri: https://api.tradeweb.com/v2
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: orders
path: /orders
operations:
- name: submit-order
method: POST
- type: http
namespace: core-banking
baseUri: https://api.abnamro.com/v1/trading
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: bookings
path: /book
operations:
- name: book-trade
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
Performs Know Your Customer screening by querying Salesforce for client data, running sanctions checks against Bloomberg Enterprise Data, and logging results in ServiceNow for compliance audit.
naftiko: '0.5'
info:
label: KYC Customer Screening
description: Performs Know Your Customer screening by querying Salesforce for client data, running sanctions checks against Bloomberg Enterprise Data, and logging results in ServiceNow for compliance audit.
tags:
- compliance
- kyc
- salesforce
- bloomberg-enterprise-data
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance-kyc
port: 8080
tools:
- name: screen-customer
description: Given a customer ID, retrieve Salesforce profile, check Bloomberg sanctions, and log screening outcome in ServiceNow.
inputParameters:
- name: customer_id
in: body
type: string
description: The Salesforce account ID for the customer.
- name: screening_type
in: body
type: string
description: 'Type of screening: initial, periodic, or event-triggered.'
steps:
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{customer_id}}'
- name: check-sanctions
type: call
call: bloomberg.search-sanctions
with:
entity_name: '{{get-customer.name}}'
country: '{{get-customer.billing_country}}'
- name: log-screening
type: call
call: servicenow.create-record
with:
table: u_kyc_screening
short_description: 'KYC {{screening_type}} screening: {{get-customer.name}}'
description: 'Customer: {{get-customer.name}} ({{customer_id}}). Sanctions result: {{check-sanctions.match_status}}. Score: {{check-sanctions.risk_score}}.'
assigned_group: Compliance_KYC
consumes:
- type: http
namespace: salesforce
baseUri: https://abnamro.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: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: sanctions
path: /sanctions/screen
operations:
- name: search-sanctions
method: POST
- type: http
namespace: servicenow
baseUri: https://abnamro.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
Downloads updated sanctions lists from Bloomberg, updates the screening database in Snowflake, triggers a batch re-screening of all active clients, and notifies compliance of any new matches via Jira and Microsoft Teams.
naftiko: '0.5'
info:
label: Sanctions List Update and Screening Refresh
description: Downloads updated sanctions lists from Bloomberg, updates the screening database in Snowflake, triggers a batch re-screening of all active clients, and notifies compliance of any new matches via Jira and Microsoft Teams.
tags:
- compliance
- sanctions
- bloomberg
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-sanctions
port: 8080
tools:
- name: refresh-sanctions-screening
description: Download latest sanctions lists, update screening database, run batch re-screening, and alert on new matches.
inputParameters:
- name: list_type
in: body
type: string
description: 'Sanctions list type: eu, ofac, un, or all.'
- name: trigger_date
in: body
type: string
description: The date of the list update in YYYY-MM-DD format.
steps:
- name: download-lists
type: call
call: bloomberg.get-sanctions-lists
with:
list_type: '{{list_type}}'
effective_date: '{{trigger_date}}'
- name: update-database
type: call
call: snowflake.execute-query
with:
warehouse: COMPLIANCE_WH
database: SANCTIONS_DB
query: CALL sp_update_sanctions_list('{{list_type}}', '{{trigger_date}}')
- name: run-batch-screening
type: call
call: snowflake.execute-query
with:
warehouse: COMPLIANCE_WH
database: SANCTIONS_DB
query: CALL sp_batch_screen_active_clients('{{list_type}}')
- name: create-review-ticket
type: call
call: jira.create-issue
with:
project_key: SANCTIONS
issuetype: Task
summary: '[Sanctions Update] {{list_type}} list refresh — {{trigger_date}}'
description: 'Sanctions list updated: {{list_type}} as of {{trigger_date}}.
New entries: {{download-lists.new_entries_count}}
Batch screening complete. Review any new matches.'
- name: notify-compliance
type: call
call: msteams.send-message
with:
channel: compliance-sanctions
text: 'Sanctions list refreshed: {{list_type}} ({{trigger_date}}). New entries: {{download-lists.new_entries_count}}. Batch re-screening complete. Jira: {{create-review-ticket.key}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: sanctions-lists
path: /sanctions/lists
operations:
- name: get-sanctions-lists
method: POST
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://abnamro.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}}/messages
inputParameters:
- name: channel
in: path
operations:
- name: send-message
method: POST
When a Datadog monitor triggers a critical alert for a banking service, creates a Jira incident ticket and posts a notification to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: Datadog Alert to Jira Incident
description: When a Datadog monitor triggers a critical alert for a banking service, creates a Jira incident ticket and posts a notification to the engineering Microsoft Teams channel.
tags:
- observability
- incident-management
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: handle-datadog-alert
description: Given a Datadog alert ID, create a Jira incident and notify the engineering team in Microsoft Teams.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog monitor alert ID.
- name: service_name
in: body
type: string
description: The affected banking service name.
- name: severity
in: body
type: string
description: 'Alert severity: critical, warning, or info.'
steps:
- name: get-alert-details
type: call
call: datadog.get-monitor
with:
monitor_id: '{{alert_id}}'
- name: create-incident
type: call
call: jira.create-issue
with:
project_key: INC
issuetype: Incident
summary: '[{{severity}}] {{service_name}} — {{get-alert-details.name}}'
description: 'Datadog alert {{alert_id}} triggered.
Service: {{service_name}}
Severity: {{severity}}
Message: {{get-alert-details.message}}
Monitor URL: {{get-alert-details.url}}'
priority: '{{severity}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: platform-engineering-alerts
text: 'Incident Created: {{create-incident.key}} | {{service_name}} | {{severity}} | {{get-alert-details.name}} | Jira: {{create-incident.url}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/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: jira
baseUri: https://abnamro.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}}/messages
inputParameters:
- name: channel
in: path
operations:
- name: send-message
method: POST
Queries vendor data from SAP Ariba, runs risk scoring in Snowflake, creates assessment record in ServiceNow, and notifies procurement.
naftiko: '0.5'
info:
label: Vendor Risk Assessment Pipeline
description: Queries vendor data from SAP Ariba, runs risk scoring in Snowflake, creates assessment record in ServiceNow, and notifies procurement.
tags:
- procurement
- vendor-risk
- snowflake
- servicenow
- 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-vendor
type: call
call: sap.get-vendor
with:
vendor_id: '{{resource_id}}'
- name: score-risk
type: call
call: snowflake.run-query
with:
sql_query: CALL score_vendor_risk('{{resource_id}}')
warehouse: PROC_WH
- name: create-assessment
type: call
call: servicenow.create-record
with:
table: vendor_assessments
vendor_id: '{{resource_id}}'
- name: notify
type: call
call: slack.send-message
with:
channel: procurement
text: 'Vendor {{resource_id}} risk score: {{score-risk.risk_level}}'
consumes:
- type: http
namespace: sap
baseUri: https://abn-amro-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://abn-amro.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://abn-amro.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 client information from Salesforce CRM, Bloomberg financial data, and Snowflake transaction history to produce a unified 360-degree view for relationship managers.
naftiko: '0.5'
info:
label: Client Relationship 360 View
description: Aggregates client information from Salesforce CRM, Bloomberg financial data, and Snowflake transaction history to produce a unified 360-degree view for relationship managers.
tags:
- client-management
- crm
- salesforce
- bloomberg
- snowflake
capability:
exposes:
- type: mcp
namespace: client-360
port: 8080
tools:
- name: get-client-360
description: Given a client Salesforce ID, aggregate CRM data, Bloomberg financials, and transaction history into a unified view.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce account ID for the client.
steps:
- name: get-crm-data
type: call
call: salesforce.get-account
with:
account_id: '{{client_id}}'
- name: get-financials
type: call
call: bloomberg.get-company
with:
company_name: '{{get-crm-data.name}}'
- name: get-transactions
type: call
call: snowflake.execute-query
with:
warehouse: CRM_WH
database: CLIENT_DB
query: SELECT product_type, SUM(volume) as total_volume, COUNT(*) as txn_count FROM client_transactions WHERE client_id = '{{client_id}}' AND txn_date >= DATEADD(month, -12, CURRENT_DATE()) GROUP BY product_type
consumes:
- type: http
namespace: salesforce
baseUri: https://abnamro.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: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: companies
path: /companies/search
operations:
- name: get-company
method: POST
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves employee details from Workday by worker ID, returning name, department, manager, cost center, and employment status.
naftiko: '0.5'
info:
label: Workday Employee Lookup
description: Retrieves employee details from Workday by worker ID, returning name, department, manager, cost center, and employment status.
tags:
- hr
- employee-data
- workday
capability:
exposes:
- type: mcp
namespace: hr-data
port: 8080
tools:
- name: get-employee
description: Look up an employee in Workday by worker ID. Returns full name, department, manager, cost center, and status.
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: department
type: string
mapping: $.worker.department
- name: manager
type: string
mapping: $.worker.managerName
- name: cost_center
type: string
mapping: $.worker.costCenter
consumes:
- type: http
namespace: workday
baseUri: https://wd3-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
Executes read-only queries against ABN AMRO Azure SQL databases for reporting.
naftiko: '0.5'
info:
label: Azure SQL Query Runner
description: Executes read-only queries against ABN AMRO Azure SQL databases for reporting.
tags:
- data
- azure
- sql
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-sql-query
description: Execute a SQL query and return results.
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://abn-amro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: azure_sql_query_runner
method: GET
Calculates derivatives portfolio risk metrics by extracting positions from Snowflake, computing Greeks and VaR via Databricks ML models, publishing to Power BI, and alerting the risk desk when thresholds are breached.
naftiko: '0.5'
info:
label: Derivatives Risk Calculation Pipeline
description: Calculates derivatives portfolio risk metrics by extracting positions from Snowflake, computing Greeks and VaR via Databricks ML models, publishing to Power BI, and alerting the risk desk when thresholds are breached.
tags:
- risk-management
- derivatives
- trading
- snowflake
- databricks
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-derivatives
port: 8080
tools:
- name: calculate-derivatives-risk
description: Given a portfolio and valuation date, compute Greeks and VaR for the derivatives book and alert on threshold breaches.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The derivatives portfolio identifier.
- name: valuation_date
in: body
type: string
description: Valuation date in YYYY-MM-DD format.
- name: var_confidence
in: body
type: string
description: 'VaR confidence level: 95 or 99.'
steps:
- name: extract-positions
type: call
call: snowflake.execute-query
with:
warehouse: RISK_WH
database: DERIVATIVES_DB
query: SELECT * FROM derivatives_positions WHERE portfolio_id = '{{portfolio_id}}' AND position_date = '{{valuation_date}}'
- name: compute-risk
type: call
call: databricks.run-job
with:
job_id: derivatives-risk-engine
parameters:
portfolio_id: '{{portfolio_id}}'
valuation_date: '{{valuation_date}}'
confidence: '{{var_confidence}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
group_id: trading-risk-workspace
dataset_id: derivatives-risk-daily
- name: alert-risk-desk
type: call
call: msteams.send-message
with:
channel: trading-risk-alerts
text: 'Derivatives risk calculation complete: Portfolio {{portfolio_id}} for {{valuation_date}}. VaR({{var_confidence}}%): {{compute-risk.var_amount}}. Delta: {{compute-risk.total_delta}}. Gamma: {{compute-risk.total_gamma}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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: databricks
baseUri: https://adb-abnamro.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: 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: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
When a transaction monitoring alert fires, retrieves alert details from the AML system, enriches with customer data from Salesforce, checks Bloomberg sanctions, and creates a Jira investigation ticket for the financial crime team.
naftiko: '0.5'
info:
label: AML Transaction Monitoring Alert Triage
description: When a transaction monitoring alert fires, retrieves alert details from the AML system, enriches with customer data from Salesforce, checks Bloomberg sanctions, and creates a Jira investigation ticket for the financial crime team.
tags:
- compliance
- aml
- transaction-monitoring
- salesforce
- bloomberg
- jira
capability:
exposes:
- type: mcp
namespace: compliance-aml
port: 8080
tools:
- name: triage-aml-alert
description: Given an AML alert ID, enrich with customer data, run sanctions check, and open a Jira investigation case.
inputParameters:
- name: alert_id
in: body
type: string
description: The AML system alert identifier.
- name: customer_id
in: body
type: string
description: The Salesforce account ID associated with the flagged transaction.
steps:
- name: get-alert
type: call
call: core-banking.get-aml-alert
with:
alert_id: '{{alert_id}}'
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{customer_id}}'
- name: sanctions-check
type: call
call: bloomberg.search-sanctions
with:
entity_name: '{{get-customer.name}}'
country: '{{get-customer.billing_country}}'
- name: create-investigation
type: call
call: jira.create-issue
with:
project_key: FINCRIME
issuetype: Investigation
summary: '[AML Alert] {{get-alert.rule_name}} — {{get-customer.name}}'
description: 'Alert: {{alert_id}}
Rule: {{get-alert.rule_name}}
Amount: {{get-alert.amount}} {{get-alert.currency}}
Customer: {{get-customer.name}}
Sanctions match: {{sanctions-check.match_status}}
Risk score: {{sanctions-check.risk_score}}'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.abnamro.com/v1/aml
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-aml-alert
method: GET
- type: http
namespace: salesforce
baseUri: https://abnamro.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: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: sanctions
path: /sanctions/screen
operations:
- name: search-sanctions
method: POST
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Triggers an Informatica data quality profiling job, stores quality scores in Snowflake for trend analysis, and alerts the data governance team in Microsoft Teams when quality thresholds are breached.
naftiko: '0.5'
info:
label: Informatica Data Quality Pipeline with Reporting
description: Triggers an Informatica data quality profiling job, stores quality scores in Snowflake for trend analysis, and alerts the data governance team in Microsoft Teams when quality thresholds are breached.
tags:
- data-quality
- data-management
- informatica
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-quality-profile-with-reporting
description: Trigger Informatica quality profiling, store scores in Snowflake, and alert on threshold breaches.
inputParameters:
- name: task_name
in: body
type: string
description: The Informatica data quality task name.
- name: data_domain
in: body
type: string
description: The data domain to profile (e.g., customer, transaction, risk).
- name: quality_threshold
in: body
type: number
description: Minimum acceptable quality score percentage.
steps:
- name: run-profiling
type: call
call: informatica.start-quality-task
with:
task_name: '{{task_name}}'
data_domain: '{{data_domain}}'
- name: store-results
type: call
call: snowflake.execute-query
with:
warehouse: DQ_WH
database: DATA_QUALITY_DB
query: INSERT INTO dq_scores (domain, task_name, run_id, score, profiled_at) VALUES ('{{data_domain}}', '{{task_name}}', '{{run-profiling.run_id}}', '{{run-profiling.quality_score}}', CURRENT_TIMESTAMP())
- name: notify-governance
type: call
call: msteams.send-message
with:
channel: data-governance
text: 'Data Quality: {{data_domain}} ({{task_name}}) | Run: {{run-profiling.run_id}} | Score: {{run-profiling.quality_score}}% | Threshold: {{quality_threshold}}%'
consumes:
- type: http
namespace: informatica
baseUri: https://dm-eu.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: jobs
path: /job
operations:
- name: start-quality-task
method: POST
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: channel
in: path
operations:
- name: send-message
method: POST
Retrieves a secret value from Azure Key Vault for secure credential injection in downstream banking system integrations.
naftiko: '0.5'
info:
label: Azure Key Vault Secret Retrieval
description: Retrieves a secret value from Azure Key Vault for secure credential injection in downstream banking system integrations.
tags:
- security
- secrets-management
- azure-key-vault
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: get-secret
description: Retrieve a secret from Azure Key Vault by name. Returns the secret value and version.
inputParameters:
- name: secret_name
in: body
type: string
description: The name of the secret in Azure Key Vault.
call: keyvault.get-secret
with:
secret_name: '{{secret_name}}'
outputParameters:
- name: value
type: string
mapping: $.value
- name: version
type: string
mapping: $.id
consumes:
- type: http
namespace: keyvault
baseUri: https://abnamro-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
Pulls credit exposure data from Snowflake, aggregates by counterparty, and publishes a summary dashboard refresh to Power BI for the risk management team.
naftiko: '0.5'
info:
label: Credit Risk Exposure Report
description: Pulls credit exposure data from Snowflake, aggregates by counterparty, and publishes a summary dashboard refresh to Power BI for the risk management team.
tags:
- risk-management
- credit-risk
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: risk-credit
port: 8080
tools:
- name: refresh-credit-exposure
description: Given a reporting date and portfolio segment, query Snowflake for exposure data and trigger a Power BI dataset refresh.
inputParameters:
- name: reporting_date
in: body
type: string
description: The reporting date in YYYY-MM-DD format.
- name: portfolio_segment
in: body
type: string
description: 'Portfolio segment: corporate, retail, or sme.'
steps:
- name: query-exposures
type: call
call: snowflake.execute-query
with:
warehouse: RISK_WH
database: RISK_DB
query: SELECT counterparty, SUM(exposure) as total_exposure, MAX(pd) as max_pd FROM credit_exposures WHERE report_date = '{{reporting_date}}' AND segment = '{{portfolio_segment}}' GROUP BY counterparty ORDER BY total_exposure DESC
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
group_id: risk-management-workspace
dataset_id: credit-exposure-daily
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Retrieves the status of a GitHub pull request including checks, review status, and merge readiness for banking application repositories.
naftiko: '0.5'
info:
label: GitHub Pull Request Status
description: Retrieves the status of a GitHub pull request including checks, review status, and merge readiness for banking application repositories.
tags:
- devops
- code-review
- github
capability:
exposes:
- type: mcp
namespace: source-control
port: 8080
tools:
- name: get-pr-status
description: Look up a GitHub pull request by repo and PR number. Returns status, checks, and review state.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: pr_number
in: body
type: string
description: The pull request number.
call: github.get-pull-request
with:
repo: '{{repo}}'
pr_number: '{{pr_number}}'
outputParameters:
- name: state
type: string
mapping: $.state
- name: mergeable
type: string
mapping: $.mergeable
- name: title
type: string
mapping: $.title
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pull-requests
path: /repos/{{repo}}/pulls/{{pr_number}}
inputParameters:
- name: repo
in: path
- name: pr_number
in: path
operations:
- name: get-pull-request
method: GET
Processes corporate actions for portfolio adjustments, updates positions in trading systems, reconciles in Snowflake, and notifies portfolio managers.
naftiko: '0.5'
info:
label: Corporate Action Processing Pipeline
description: Processes corporate actions for portfolio adjustments, updates positions in trading systems, reconciles in Snowflake, and notifies portfolio managers.
tags:
- trading
- corporate-actions
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trading
port: 8080
tools:
- name: corporate_action_processing_pipeline
description: Orchestrate corporate action processing pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Retrieves employee compensation details from Workday for ABN AMRO HR operations.
naftiko: '0.5'
info:
label: Workday Compensation Lookup
description: Retrieves employee compensation details from Workday for ABN AMRO HR operations.
tags:
- hr
- workday
- compensation
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-compensation
description: Look up employee compensation by ID.
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/abn-amro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday_compensation_lookup
method: GET
When Microsoft Defender raises a security alert, enriches with Azure AD user context, creates a ServiceNow security incident, and notifies the SOC team in Microsoft Teams.
naftiko: '0.5'
info:
label: Microsoft Defender Threat Alert Triage
description: When Microsoft Defender raises a security alert, enriches with Azure AD user context, creates a ServiceNow security incident, and notifies the SOC team in Microsoft Teams.
tags:
- security
- threat-detection
- microsoft-defender
- azure-active-directory
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-defender-alert
description: Given a Defender alert ID, enrich with user context, create a security incident, and notify the SOC.
inputParameters:
- name: alert_id
in: body
type: string
description: The Microsoft Defender alert ID.
- name: user_principal_name
in: body
type: string
description: The UPN of the affected user.
steps:
- name: get-alert
type: call
call: defender.get-alert
with:
alert_id: '{{alert_id}}'
- name: get-user-context
type: call
call: azuread.get-user
with:
user_principal_name: '{{user_principal_name}}'
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: '[Security] {{get-alert.title}} — {{get-user-context.display_name}}'
description: 'Defender Alert: {{alert_id}}
Severity: {{get-alert.severity}}
Category: {{get-alert.category}}
User: {{get-user-context.display_name}} ({{user_principal_name}})
Department: {{get-user-context.department}}
Description: {{get-alert.description}}'
assigned_group: Security_Operations_Center
impact: '2'
- name: notify-soc
type: call
call: msteams.send-message
with:
channel: soc-alerts
text: 'Security Alert: {{get-alert.title}} | Severity: {{get-alert.severity}} | User: {{get-user-context.display_name}} | ServiceNow: {{create-security-incident.number}}'
consumes:
- type: http
namespace: defender
baseUri: https://api.security.microsoft.com/api
authentication:
type: bearer
token: $secrets.defender_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{user_principal_name}}
inputParameters:
- name: user_principal_name
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: servicenow
baseUri: https://abnamro.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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: channel
in: path
operations:
- name: send-message
method: POST
Monitors employee personal trading activity, validates against restricted lists, creates compliance cases, and notifies compliance officer.
naftiko: '0.5'
info:
label: Employee Trading Compliance Monitor
description: Monitors employee personal trading activity, validates against restricted lists, creates compliance cases, and notifies compliance officer.
tags:
- compliance
- employee-trading
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: employee_trading_compliance_monitor
description: Orchestrate employee trading compliance monitor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Extracts position data from trading systems, calculates RWA in Snowflake, generates Basel III reports, files with DNB via API, and notifies risk management.
naftiko: '0.5'
info:
label: Regulatory Capital Reporting Pipeline
description: Extracts position data from trading systems, calculates RWA in Snowflake, generates Basel III reports, files with DNB via API, and notifies risk management.
tags:
- regulatory
- capital
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: regulatory_capital_reporting_pipeline
description: Orchestrate regulatory capital reporting pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-positions
type: call
call: trading.get-positions
with:
date: '{{resource_id}}'
- name: calculate-rwa
type: call
call: snowflake.run-query
with:
sql_query: CALL calculate_rwa('{{resource_id}}')
warehouse: CAPITAL_WH
- name: file-report
type: call
call: servicenow.create-record
with:
table: regulatory_filings
report_date: '{{resource_id}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: risk-management
text: 'Capital report filed for {{resource_id}}. RWA: {{calculate-rwa.total_rwa}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Retrieves a Jira issue by key, returning summary, status, assignee, and priority for project tracking.
naftiko: '0.5'
info:
label: Jira Issue Lookup
description: Retrieves a Jira issue by key, returning summary, status, assignee, and priority for project tracking.
tags:
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: project-tracking
port: 8080
tools:
- name: get-jira-issue
description: Look up a Jira issue by key. Returns summary, status, assignee, priority, and created date.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key (e.g., RISK-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
consumes:
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue/{{issue_key}}
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Monitors corporate lending covenant compliance by pulling financial ratios from Snowflake, comparing against covenant thresholds, and alerting the credit team via Jira and Microsoft Teams when breaches are detected.
naftiko: '0.5'
info:
label: Corporate Lending Covenant Monitoring
description: Monitors corporate lending covenant compliance by pulling financial ratios from Snowflake, comparing against covenant thresholds, and alerting the credit team via Jira and Microsoft Teams when breaches are detected.
tags:
- lending
- credit-risk
- covenant-monitoring
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lending-covenants
port: 8080
tools:
- name: check-covenant-compliance
description: Given a facility ID and reporting date, check covenant compliance and alert on breaches.
inputParameters:
- name: facility_id
in: body
type: string
description: The lending facility identifier.
- name: reporting_date
in: body
type: string
description: The covenant test date in YYYY-MM-DD format.
- name: borrower_name
in: body
type: string
description: The borrower legal entity name.
steps:
- name: get-financial-ratios
type: call
call: snowflake.execute-query
with:
warehouse: LENDING_WH
database: LENDING_DB
query: SELECT covenant_type, actual_value, threshold_value, CASE WHEN actual_value > threshold_value THEN 'BREACH' ELSE 'COMPLIANT' END as status FROM covenant_monitoring WHERE facility_id = '{{facility_id}}' AND test_date = '{{reporting_date}}'
- name: create-breach-ticket
type: call
call: jira.create-issue
with:
project_key: CREDIT
issuetype: Task
summary: '[Covenant Check] {{borrower_name}} — {{facility_id}} — {{reporting_date}}'
description: 'Covenant compliance check for {{borrower_name}} ({{facility_id}}) as of {{reporting_date}}.
Results: {{get-financial-ratios.row_count}} covenants tested.
Review financial ratios and escalate any breaches.'
- name: notify-credit-team
type: call
call: msteams.send-message
with:
channel: credit-monitoring
text: 'Covenant check complete: {{borrower_name}} ({{facility_id}}) — {{reporting_date}}. Jira: {{create-breach-ticket.key}}. Review results for potential breaches.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://abnamro.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}}/messages
inputParameters:
- name: channel
in: path
operations:
- name: send-message
method: POST
Reconciles ADP payroll data with Workday employee records and Snowflake cost center budgets, creating ServiceNow tasks for discrepancies found during the monthly payroll cycle.
naftiko: '0.5'
info:
label: ADP Payroll Reconciliation
description: Reconciles ADP payroll data with Workday employee records and Snowflake cost center budgets, creating ServiceNow tasks for discrepancies found during the monthly payroll cycle.
tags:
- hr
- payroll
- adp
- workday
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-payroll
port: 8080
tools:
- name: reconcile-payroll
description: Given a pay period, reconcile ADP payroll with Workday and Snowflake budget data, flagging discrepancies.
inputParameters:
- name: pay_period
in: body
type: string
description: The pay period in YYYY-MM format.
- name: business_unit
in: body
type: string
description: The business unit to reconcile.
steps:
- name: get-payroll-data
type: call
call: adp.get-payroll-summary
with:
pay_period: '{{pay_period}}'
business_unit: '{{business_unit}}'
- name: get-headcount
type: call
call: snowflake.execute-query
with:
warehouse: HR_WH
database: HR_DB
query: SELECT department, COUNT(*) as headcount, SUM(budgeted_salary) as budget_total FROM employee_budget WHERE business_unit = '{{business_unit}}' AND period = '{{pay_period}}' GROUP BY department
- name: create-reconciliation-task
type: call
call: servicenow.create-record
with:
table: u_payroll_reconciliation
short_description: 'Payroll reconciliation: {{business_unit}} — {{pay_period}}'
description: 'ADP total: {{get-payroll-data.total_gross}}. Budget total from Snowflake. Review and resolve discrepancies.'
assigned_group: HR_Payroll
consumes:
- type: http
namespace: adp
baseUri: https://api.adp.com/hr/v2
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: payroll
path: /workers/payroll-summary?payPeriod={{pay_period}}&businessUnit={{business_unit}}
inputParameters:
- name: pay_period
in: query
- name: business_unit
in: query
operations:
- name: get-payroll-summary
method: GET
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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://abnamro.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
Triggers portfolio rebalancing based on drift analysis, executes trades, updates positions, generates client reports, and notifies advisors.
naftiko: '0.5'
info:
label: Client Portfolio Rebalancing Pipeline
description: Triggers portfolio rebalancing based on drift analysis, executes trades, updates positions, generates client reports, and notifies advisors.
tags:
- wealth-management
- portfolio
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: wealth-management
port: 8080
tools:
- name: client_portfolio_rebalancing_pipeline
description: Orchestrate client portfolio rebalancing pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Reconciles trade settlement data between Bloomberg Tradebook and the core banking system, identifies breaks, and creates Jira tickets for operations to investigate discrepancies.
naftiko: '0.5'
info:
label: Trade Settlement Reconciliation
description: Reconciles trade settlement data between Bloomberg Tradebook and the core banking system, identifies breaks, and creates Jira tickets for operations to investigate discrepancies.
tags:
- operations
- settlement
- reconciliation
- bloomberg-tradebook
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: trade-ops
port: 8080
tools:
- name: reconcile-settlements
description: Given a trade date, compare Tradebook and core banking settlement records, identify breaks, and create Jira tickets.
inputParameters:
- name: trade_date
in: body
type: string
description: The trade date to reconcile in YYYY-MM-DD format.
- name: asset_class
in: body
type: string
description: 'Asset class: equities, fixed_income, fx, or derivatives.'
steps:
- name: get-tradebook-settlements
type: call
call: bloomberg-tradebook.get-settlements
with:
trade_date: '{{trade_date}}'
asset_class: '{{asset_class}}'
- name: get-internal-settlements
type: call
call: snowflake.execute-query
with:
warehouse: OPS_WH
database: SETTLEMENTS_DB
query: SELECT trade_id, counterparty, amount, currency, status FROM settlements WHERE trade_date = '{{trade_date}}' AND asset_class = '{{asset_class}}'
- name: create-break-ticket
type: call
call: jira.create-issue
with:
project_key: TRADEOPS
issuetype: Task
summary: '[Settlement Break] {{asset_class}} — {{trade_date}}'
description: 'Reconciliation results for {{trade_date}} ({{asset_class}}).
Tradebook records: {{get-tradebook-settlements.count}}
Internal records: {{get-internal-settlements.row_count}}
Review breaks and resolve.'
consumes:
- type: http
namespace: bloomberg-tradebook
baseUri: https://api.bloomberg.com/tradebook/v1
authentication:
type: bearer
token: $secrets.bloomberg_tradebook_token
resources:
- name: settlements
path: /settlements?tradeDate={{trade_date}}&assetClass={{asset_class}}
inputParameters:
- name: trade_date
in: query
- name: asset_class
in: query
operations:
- name: get-settlements
method: GET
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Validates proposed trades against investment guidelines, checks exposure limits in Snowflake, approves or blocks, and logs decisions.
naftiko: '0.5'
info:
label: Investment Compliance Pre-Trade Check
description: Validates proposed trades against investment guidelines, checks exposure limits in Snowflake, approves or blocks, and logs decisions.
tags:
- compliance
- trading
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: investment_compliance_pre_trade_check
description: Orchestrate investment compliance pre-trade check workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Fetches yield curve data from Bloomberg, runs VaR calculations in Snowflake, generates risk report in Power BI, and notifies treasury via Teams.
naftiko: '0.5'
info:
label: Interest Rate Risk Calculator
description: Fetches yield curve data from Bloomberg, runs VaR calculations in Snowflake, generates risk report in Power BI, and notifies treasury via Teams.
tags:
- risk
- treasury
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: interest_rate_risk_calculator
description: Orchestrate interest rate risk calculator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-yield-curve
type: call
call: bloomberg.get-yield-curve
with:
currency: '{{resource_id}}'
- name: calculate-var
type: call
call: snowflake.run-query
with:
sql_query: CALL calculate_var('{{resource_id}}')
warehouse: RISK_WH
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: interest_rate_risk
- name: notify
type: call
call: msteams.send-message
with:
channel: treasury
text: 'IR risk report updated for {{resource_id}}. VaR: {{calculate-var.var_amount}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Queries Microsoft Entra for conditional access policies applied to a user, returning policy names, grant controls, and session controls for security audit.
naftiko: '0.5'
info:
label: Microsoft Entra Conditional Access Policy Check
description: Queries Microsoft Entra for conditional access policies applied to a user, returning policy names, grant controls, and session controls for security audit.
tags:
- security
- identity-management
- microsoft-entra
capability:
exposes:
- type: mcp
namespace: identity-security
port: 8080
tools:
- name: get-conditional-access
description: List conditional access policies affecting a user. Returns policy names, states, and grant conditions.
inputParameters:
- name: user_principal_name
in: body
type: string
description: The user principal name (UPN) to check policies for.
call: entra.get-policies
with:
user_principal_name: '{{user_principal_name}}'
outputParameters:
- name: policy_count
type: string
mapping: $.value.length
consumes:
- type: http
namespace: entra
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: policies
path: /identity/conditionalAccess/policies?$filter=conditions/users/includeUsers/any(u:u eq '{{user_principal_name}}')
inputParameters:
- name: user_principal_name
in: query
operations:
- name: get-policies
method: GET
Collects cash positions from multiple bank accounts, aggregates in Snowflake, updates treasury dashboard in Power BI, and sends morning report to CFO.
naftiko: '0.5'
info:
label: Treasury Cash Position Aggregator
description: Collects cash positions from multiple bank accounts, aggregates in Snowflake, updates treasury dashboard in Power BI, and sends morning report to CFO.
tags:
- treasury
- cash-management
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: treasury_cash_position_aggregator
description: Orchestrate treasury cash position aggregator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-positions
type: call
call: swift.get-mt940
with:
date: '{{resource_id}}'
- name: aggregate
type: call
call: snowflake.run-query
with:
sql_query: CALL aggregate_cash('{{resource_id}}')
warehouse: TREASURY_WH
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: cash_positions
- name: notify
type: call
call: msteams.send-message
with:
channel: treasury-mgmt
text: 'Cash position report for {{resource_id}}: Total: {{aggregate.total_balance}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Searches ABN AMRO transaction logs in Elasticsearch by criteria.
naftiko: '0.5'
info:
label: Elasticsearch Transaction Search
description: Searches ABN AMRO transaction logs in Elasticsearch by criteria.
tags:
- data
- elasticsearch
- transactions
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: search-transactions
description: Search transactions by query.
inputParameters:
- name: search_query
in: body
type: string
description: The search_query to look up.
call: elasticsearch.get-search_query
with:
search_query: '{{search_query}}'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://abn-amro-es.com:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: elasticsearch_transaction_sear
method: GET
On PR merge, runs SAST scan via SonarQube, checks dependency vulnerabilities, validates container image, approves or blocks deployment, and notifies dev team.
naftiko: '0.5'
info:
label: CI/CD Security Gate Pipeline
description: On PR merge, runs SAST scan via SonarQube, checks dependency vulnerabilities, validates container image, approves or blocks deployment, and notifies dev team.
tags:
- devops
- security
- github
- jira
- slack
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: cicd_security_gate_pipeline
description: Orchestrate ci/cd security gate pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-pr
type: call
call: github.get-pull-request
with:
pr_id: '{{resource_id}}'
- name: run-sast
type: call
call: sonarqube.analyze-project
with:
project_key: '{{get-pr.repo}}'
- name: check-deps
type: call
call: snyk.test-project
with:
project_id: '{{get-pr.repo}}'
- name: notify
type: call
call: slack.send-message
with:
channel: security-reviews
text: 'Security gate for {{resource_id}}: SAST {{run-sast.status}}, Deps {{check-deps.issues}}'
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://abn-amro.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 change request details by number from ABN AMRO ServiceNow instance.
naftiko: '0.5'
info:
label: ServiceNow Change Request Lookup
description: Retrieves change request details by number from ABN AMRO ServiceNow instance.
tags:
- itsm
- servicenow
- change-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-change-request
description: Look up a change request by number.
inputParameters:
- name: change_number
in: body
type: string
description: The change_number to look up.
call: servicenow.get-change_number
with:
change_number: '{{change_number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://abn-amro.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_change_request_look
method: GET
Scans API gateway for deprecated endpoints, identifies consuming applications, sends deprecation notices via email, creates migration tasks in Jira, and updates Confluence docs.
naftiko: '0.5'
info:
label: API Deprecation Notification Pipeline
description: Scans API gateway for deprecated endpoints, identifies consuming applications, sends deprecation notices via email, creates migration tasks in Jira, and updates Confluence docs.
tags:
- api-management
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: api-management
port: 8080
tools:
- name: api_deprecation_notification_pipeline
description: Orchestrate api deprecation notification pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: scan-apis
type: call
call: kong.get-deprecated-routes
with:
gateway_id: '{{resource_id}}'
- name: identify-consumers
type: call
call: apigee.get-consumers
with:
route_id: '{{scan-apis.route_id}}'
- name: create-migration
type: call
call: jira.create-issue
with:
project: API
summary: 'Migrate from deprecated API: {{resource_id}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: api-platform
text: 'API deprecation: {{resource_id}}. Migration ticket: {{create-migration.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://abn-amro.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: confluence
baseUri: https://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Validates incoming market data feeds against expected patterns, identifies anomalies in Snowflake, creates alerts in PagerDuty, and logs quality metrics in Grafana.
naftiko: '0.5'
info:
label: Market Data Quality Monitor
description: Validates incoming market data feeds against expected patterns, identifies anomalies in Snowflake, creates alerts in PagerDuty, and logs quality metrics in Grafana.
tags:
- market-data
- quality
- snowflake
- pagerduty
- grafana
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: market_data_quality_monitor
description: Orchestrate market data quality monitor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: validate-feeds
type: call
call: bloomberg.validate-feed
with:
feed_id: '{{resource_id}}'
- name: check-anomalies
type: call
call: snowflake.run-query
with:
sql_query: CALL check_market_data_quality('{{resource_id}}')
warehouse: MARKET_WH
- name: create-alert
type: call
call: pagerduty.create-incident
with:
title: 'Market data quality: {{resource_id}}'
severity: '{{check-anomalies.severity}}'
- name: log-metrics
type: call
call: grafana.push-metrics
with:
dashboard_uid: market-data-quality
quality_score: '{{check-anomalies.score}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://abn-amro.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty-op
method: POST
- type: http
namespace: grafana
baseUri: https://abn-amro-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana-op
method: POST
Triggers a Microsoft Purview data classification scan on a specified data source and returns scan status and discovered sensitive data types for data governance compliance.
naftiko: '0.5'
info:
label: Microsoft Purview Data Classification Scan
description: Triggers a Microsoft Purview data classification scan on a specified data source and returns scan status and discovered sensitive data types for data governance compliance.
tags:
- data-governance
- classification
- microsoft-purview
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: trigger-classification-scan
description: Trigger a Purview classification scan on a data source. Returns scan run ID and status.
inputParameters:
- name: data_source_name
in: body
type: string
description: The Purview registered data source name.
- name: scan_name
in: body
type: string
description: The scan definition name.
call: purview.run-scan
with:
data_source_name: '{{data_source_name}}'
scan_name: '{{scan_name}}'
outputParameters:
- name: run_id
type: string
mapping: $.scanRunId
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: purview
baseUri: https://abnamro-purview.purview.azure.com
authentication:
type: bearer
token: $secrets.purview_token
resources:
- name: scans
path: /scan/datasources/{{data_source_name}}/scans/{{scan_name}}/runs?api-version=2023-09-01
inputParameters:
- name: data_source_name
in: path
- name: scan_name
in: path
operations:
- name: run-scan
method: POST
Identifies incomplete client records, creates remediation tasks, tracks completion progress, and reports to client data management.
naftiko: '0.5'
info:
label: Client Data Remediation Pipeline
description: Identifies incomplete client records, creates remediation tasks, tracks completion progress, and reports to client data management.
tags:
- data-quality
- client-data
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: client_data_remediation_pipeline
description: Orchestrate client data remediation pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions Azure Active Directory account, and sends a Microsoft Teams welcome message.
naftiko: '0.5'
info:
label: Employee Onboarding Orchestrator
description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions Azure Active Directory account, and sends a Microsoft Teams welcome message.
tags:
- hr
- onboarding
- workday
- servicenow
- azure-active-directory
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: Given a Workday employee ID and start date, orchestrate onboarding across ServiceNow, Azure AD, and Microsoft Teams.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID for the new hire.
- name: start_date
in: body
type: string
description: The employee start date in YYYY-MM-DD format.
- name: department
in: body
type: string
description: The department the new hire is joining.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: open-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-employee.full_name}}'
category: hr_onboarding
assigned_group: IT_Onboarding
description: Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}.
- name: provision-account
type: call
call: azuread.create-user
with:
display_name: '{{get-employee.full_name}}'
user_principal_name: '{{get-employee.work_email}}'
department: '{{department}}'
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: Welcome to ABN AMRO, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Your Azure AD account has been provisioned.
consumes:
- type: http
namespace: workday
baseUri: https://wd3-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://abnamro.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users
operations:
- name: create-user
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the current sprint status and velocity for an ABN AMRO engineering team board.
naftiko: '0.5'
info:
label: Jira Sprint Status
description: Retrieves the current sprint status and velocity for an ABN AMRO engineering team board.
tags:
- devops
- jira
- agile
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-sprint
description: Get current sprint status by board ID.
inputParameters:
- name: board_id
in: body
type: string
description: The board_id to look up.
call: jira.get-board_id
with:
board_id: '{{board_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://abn-amro.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_sprint_status
method: GET
Checks if a user has access to a specific Okta application at ABN AMRO.
naftiko: '0.5'
info:
label: Okta Application Assignment Check
description: Checks if a user has access to a specific Okta application at ABN AMRO.
tags:
- security
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: check-app-access
description: Check user application access in Okta.
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://abn-amro.okta.com/api/v1
authentication:
type: apiKey
key: $secrets.okta_api_token
header: Authorization
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: okta_application_assignment_ch
method: GET
Searches Splunk SIEM for security events matching a query pattern at ABN AMRO.
naftiko: '0.5'
info:
label: Splunk Security Log Search
description: Searches Splunk SIEM for security events matching a query pattern at ABN AMRO.
tags:
- security
- splunk
- siem
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: search-security-logs
description: Search security logs by query.
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://abn-amro-splunk.com/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: splunk_security_log_search
method: GET
Audits data catalog completeness, validates data classifications, creates remediation tasks, and notifies data stewards.
naftiko: '0.5'
info:
label: Data Catalog Governance Pipeline
description: Audits data catalog completeness, validates data classifications, creates remediation tasks, and notifies data stewards.
tags:
- data-governance
- catalog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: data_catalog_governance_pipeline
description: Orchestrate data catalog governance pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Retrieves a Salesforce opportunity by ID, returning stage, amount, close date, and owner for the sales team.
naftiko: '0.5'
info:
label: Salesforce Opportunity Lookup
description: Retrieves a Salesforce opportunity by ID, returning stage, amount, close date, and owner for the sales team.
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: sales-crm
port: 8080
tools:
- name: get-opportunity
description: Look up a Salesforce opportunity by ID. Returns name, stage, amount, close date, and owner.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
outputParameters:
- name: name
type: string
mapping: $.Name
- name: stage
type: string
mapping: $.StageName
- name: amount
type: string
mapping: $.Amount
- name: close_date
type: string
mapping: $.CloseDate
consumes:
- type: http
namespace: salesforce
baseUri: https://abnamro.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
Analyzes trade execution quality metrics, compares against benchmarks in Snowflake, identifies improvements, and reports to trading desk.
naftiko: '0.5'
info:
label: Trade Execution Quality Analyzer
description: Analyzes trade execution quality metrics, compares against benchmarks in Snowflake, identifies improvements, and reports to trading desk.
tags:
- trading
- analytics
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trading
port: 8080
tools:
- name: trade_execution_quality_analyzer
description: Orchestrate trade execution quality analyzer workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Queries Dynatrace for application performance metrics, compares against historical baselines in Snowflake, and creates a Jira performance ticket when degradation is detected.
naftiko: '0.5'
info:
label: Dynatrace Performance Baseline Comparison
description: Queries Dynatrace for application performance metrics, compares against historical baselines in Snowflake, and creates a Jira performance ticket when degradation is detected.
tags:
- observability
- performance
- dynatrace
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: observability-metrics
port: 8080
tools:
- name: check-performance-baseline
description: Query Dynatrace for metrics, compare against Snowflake baselines, and create a Jira ticket on degradation.
inputParameters:
- name: entity_id
in: body
type: string
description: The Dynatrace entity ID of the service.
- name: service_name
in: body
type: string
description: Human-readable service name.
- name: time_range
in: body
type: string
description: Time range for metrics (e.g., last2h, last24h, last7d).
steps:
- name: get-current-metrics
type: call
call: dynatrace.get-metrics
with:
entity_id: '{{entity_id}}'
time_range: '{{time_range}}'
- name: get-baseline
type: call
call: snowflake.execute-query
with:
warehouse: OPS_WH
database: OBSERVABILITY_DB
query: SELECT avg_response_time, avg_error_rate, p95_response_time FROM service_baselines WHERE entity_id = '{{entity_id}}'
- name: create-perf-ticket
type: call
call: jira.create-issue
with:
project_key: PERF
issuetype: Task
summary: '[Performance] {{service_name}} — baseline deviation'
description: 'Service: {{service_name}} ({{entity_id}})
Current response time: {{get-current-metrics.response_time_ms}}ms
Baseline: {{get-baseline.avg_response_time}}ms
Current error rate: {{get-current-metrics.error_rate}}%
Baseline error rate: {{get-baseline.avg_error_rate}}%'
consumes:
- type: http
namespace: dynatrace
baseUri: https://abnamro.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query?entityId={{entity_id}}&from={{time_range}}
inputParameters:
- name: entity_id
in: query
- name: time_range
in: query
operations:
- name: get-metrics
method: GET
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Triggers a Terraform deployment through Azure DevOps pipelines for banking infrastructure changes, with approval gating and Teams notification.
naftiko: '0.5'
info:
label: Terraform Infrastructure Deployment
description: Triggers a Terraform deployment through Azure DevOps pipelines for banking infrastructure changes, with approval gating and Teams notification.
tags:
- infrastructure
- devops
- terraform
- azure-devops
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-deploy
port: 8080
tools:
- name: deploy-infrastructure
description: Given a Terraform workspace and environment, trigger an Azure DevOps pipeline run and notify the platform team.
inputParameters:
- name: workspace
in: body
type: string
description: The Terraform workspace name.
- name: environment
in: body
type: string
description: 'Target environment: dev, staging, or production.'
- name: change_ticket
in: body
type: string
description: The ServiceNow change request number for audit trail.
steps:
- name: trigger-pipeline
type: call
call: azuredevops.run-pipeline
with:
project: banking-infra
pipeline_id: terraform-apply
variables:
workspace: '{{workspace}}'
environment: '{{environment}}'
change_ticket: '{{change_ticket}}'
- name: notify-platform
type: call
call: msteams.send-message
with:
channel: platform-deployments
text: 'Infrastructure deployment triggered: {{workspace}} to {{environment}}. Pipeline run: {{trigger-pipeline.run_id}}. Change ticket: {{change_ticket}}.'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/abnamro
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: pipelines
path: /{{project}}/_apis/pipelines/{{pipeline_id}}/runs?api-version=7.1
inputParameters:
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: run-pipeline
method: POST
- type: http
namespace: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
Retrieves a document from SharePoint by site and document path, returning the download URL, modified date, and author for banking document management.
naftiko: '0.5'
info:
label: SharePoint Document Retrieval
description: Retrieves a document from SharePoint by site and document path, returning the download URL, modified date, and author for banking document management.
tags:
- document-management
- sharepoint
capability:
exposes:
- type: mcp
namespace: document-mgmt
port: 8080
tools:
- name: get-document
description: Retrieve a document from SharePoint. Returns download URL, last modified date, and author.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID.
- name: document_path
in: body
type: string
description: The document path relative to the site root.
call: sharepoint.get-document
with:
site_id: '{{site_id}}'
document_path: '{{document_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: drive-items
path: /{{site_id}}/drive/root:/{{document_path}}
inputParameters:
- name: site_id
in: path
- name: document_path
in: path
operations:
- name: get-document
method: GET
Reconciles nostro accounts with correspondent banks, identifies breaks in Snowflake, creates resolution tickets, and notifies operations.
naftiko: '0.5'
info:
label: Nostro Reconciliation Pipeline
description: Reconciles nostro accounts with correspondent banks, identifies breaks in Snowflake, creates resolution tickets, and notifies operations.
tags:
- operations
- reconciliation
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: nostro_reconciliation_pipeline
description: Orchestrate nostro reconciliation pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
When a critical banking service goes down, sends mass notifications via Everbridge to affected stakeholders and creates a ServiceNow major incident record.
naftiko: '0.5'
info:
label: Everbridge Mass Notification for IT Incidents
description: When a critical banking service goes down, sends mass notifications via Everbridge to affected stakeholders and creates a ServiceNow major incident record.
tags:
- incident-management
- business-continuity
- everbridge
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crisis-management
port: 8080
tools:
- name: trigger-mass-notification
description: Given an incident description and impacted service, send Everbridge notifications, create a ServiceNow major incident, and post to Teams.
inputParameters:
- name: service_name
in: body
type: string
description: The name of the impacted banking service.
- name: incident_summary
in: body
type: string
description: Brief description of the incident.
- name: severity
in: body
type: string
description: 'Incident severity: P1, P2, P3.'
- name: contact_group
in: body
type: string
description: The Everbridge contact group to notify.
steps:
- name: send-notification
type: call
call: everbridge.send-notification
with:
notification_type: Standard
subject: '[{{severity}}] {{service_name}} — Service Disruption'
body: '{{incident_summary}}'
contact_group: '{{contact_group}}'
- name: create-major-incident
type: call
call: servicenow.create-incident
with:
short_description: '[{{severity}}] {{service_name}} — {{incident_summary}}'
impact: '1'
urgency: '1'
assigned_group: Major_Incident_Management
category: service_disruption
- name: post-to-teams
type: call
call: msteams.send-message
with:
channel: major-incidents
text: 'MAJOR INCIDENT: {{severity}} | {{service_name}} | {{incident_summary}} | ServiceNow: {{create-major-incident.number}} | Everbridge notification sent to {{contact_group}}'
consumes:
- type: http
namespace: everbridge
baseUri: https://api.everbridge.net/rest
authentication:
type: bearer
token: $secrets.everbridge_token
resources:
- name: notifications
path: /notifications
operations:
- name: send-notification
method: POST
- type: http
namespace: servicenow
baseUri: https://abnamro.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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: channel
in: path
operations:
- name: send-message
method: POST
Checks the last refresh status of a Power BI dataset used for ABN AMRO reporting.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh Status
description: Checks the last refresh status of a Power BI dataset used for ABN AMRO reporting.
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-refresh-status
description: Get Power BI dataset refresh status.
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_dataset_refresh_statu
method: GET
Receives mortgage application, runs credit check, validates documents in SharePoint, creates workflow in ServiceNow, and notifies the applicant via email.
naftiko: '0.5'
info:
label: Mortgage Application Processor
description: Receives mortgage application, runs credit check, validates documents in SharePoint, creates workflow in ServiceNow, and notifies the applicant via email.
tags:
- lending
- mortgage
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: mortgage_application_processor
description: Orchestrate mortgage application processor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-application
type: call
call: lending.get-application
with:
app_id: '{{resource_id}}'
- name: run-credit-check
type: call
call: creditbureau.check-score
with:
ssn: '{{get-application.ssn}}'
- name: create-workflow
type: call
call: servicenow.create-request
with:
short_description: 'Mortgage: {{resource_id}}'
credit_score: '{{run-credit-check.score}}'
- name: notify
type: call
call: msteams.send-message
with:
channel: lending-ops
text: 'Mortgage {{resource_id}} processed. Score: {{run-credit-check.score}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://abn-amro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: msteams-op
method: POST
Searches ABN AMRO Confluence knowledge base for articles matching a query.
naftiko: '0.5'
info:
label: Confluence Knowledge Search
description: Searches ABN AMRO Confluence knowledge base for articles matching a query.
tags:
- collaboration
- confluence
- knowledge-base
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: search-articles
description: Search Confluence articles by query.
inputParameters:
- name: search_query
in: body
type: string
description: The search_query to look up.
call: confluence.get-search_query
with:
search_query: '{{search_query}}'
consumes:
- type: http
namespace: confluence
baseUri: https://abn-amro.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_knowledge_search
method: GET
When a real-time fraud detection model flags a suspicious transaction in Snowflake, enriches the alert with customer data from Salesforce, blocks the card via Mastercard API, and notifies the fraud operations team in Microsoft Teams.
naftiko: '0.5'
info:
label: Fraud Detection Alert Pipeline
description: When a real-time fraud detection model flags a suspicious transaction in Snowflake, enriches the alert with customer data from Salesforce, blocks the card via Mastercard API, and notifies the fraud operations team in Microsoft Teams.
tags:
- fraud-detection
- security
- snowflake
- salesforce
- mastercard
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: handle-fraud-alert
description: Given a fraud alert ID, enrich with customer data, optionally block the card, and notify fraud ops.
inputParameters:
- name: alert_id
in: body
type: string
description: The fraud detection alert ID from the ML pipeline.
- name: customer_id
in: body
type: string
description: The Salesforce customer account ID.
- name: card_number_token
in: body
type: string
description: Tokenized card number for Mastercard API.
- name: block_card
in: body
type: string
description: 'Whether to block the card: true or false.'
steps:
- name: get-alert-data
type: call
call: snowflake.execute-query
with:
warehouse: FRAUD_WH
database: FRAUD_DB
query: SELECT * FROM fraud_alerts WHERE alert_id = '{{alert_id}}'
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{customer_id}}'
- name: block-card
type: call
call: mastercard.block-card
with:
card_token: '{{card_number_token}}'
reason: fraud_suspected
- name: notify-fraud-ops
type: call
call: msteams.send-message
with:
channel: fraud-operations
text: 'Fraud Alert: {{alert_id}} | Customer: {{get-customer.name}} | Card blocked: {{block_card}} | Transaction details from Snowflake query. Review immediately.'
consumes:
- type: http
namespace: snowflake
baseUri: https://abnamro.eu-west-1.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://abnamro.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: mastercard
baseUri: https://api.mastercard.com/fraud/v1
authentication:
type: bearer
token: $secrets.mastercard_token
resources:
- name: cards
path: /cards/block
operations:
- name: block-card
method: POST
- type: http
namespace: msteams
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: channel
in: path
operations:
- name: send-message
method: POST
Checks the review status and approval state of a GitHub pull request.
naftiko: '0.5'
info:
label: GitHub PR Review Status
description: Checks the review status and approval state of a GitHub pull request.
tags:
- devops
- github
- code-review
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-pr-status
description: Get PR review status by number.
inputParameters:
- name: pr_number
in: body
type: string
description: The pr_number to look up.
call: github.get-pr_number
with:
pr_number: '{{pr_number}}'
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_pr_review_status
method: GET
Queries the MuleSoft Anypoint Platform for API deployment status and health metrics, compares against SLA thresholds in Datadog, and creates a ServiceNow incident when error rates exceed acceptable levels.
naftiko: '0.5'
info:
label: MuleSoft API Health Check with Incident Creation
description: Queries the MuleSoft Anypoint Platform for API deployment status and health metrics, compares against SLA thresholds in Datadog, and creates a ServiceNow incident when error rates exceed acceptable levels.
tags:
- api-management
- integration
- mulesoft
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: api-gateway
port: 8080
tools:
- name: check-api-health-with-escalation
description: Check MuleSoft API health, compare against Datadog SLA metrics, and create a ServiceNow incident on degradation.
inputParameters:
- name: api_id
in: body
type: string
description: The MuleSoft Anypoint API instance ID.
- name: environment
in: body
type: string
description: 'Deployment environment: sandbox or production.'
- name: error_rate_threshold
in: body
type: number
description: Error rate threshold percentage for escalation.
steps:
- name: get-api-status
type: call
call: mulesoft.get-api-status
with:
api_id: '{{api_id}}'
environment: '{{environment}}'
- name: get-datadog-metrics
type: call
call: datadog.get-metrics
with:
query: avg:mulesoft.api.error_rate{api_id:{{api_id}},env:{{environment}}}
time_range: 1h
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'API degradation: {{api_id}} in {{environment}}'
description: 'MuleSoft API {{api_id}} ({{environment}}) is degraded.
Status: {{get-api-status.status}}
Error rate: {{get-datadog-metrics.error_rate}}%
Threshold: {{error_rate_threshold}}%'
assigned_group: API_Platform
category: api_degradation
consumes:
- type: http
namespace: mulesoft
baseUri: https://anypoint.mulesoft.com/apimanager/api/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: apis
path: /organizations/{{org_id}}/environments/{{environment}}/apis/{{api_id}}
inputParameters:
- name: api_id
in: path
- name: environment
in: path
operations:
- name: get-api-status
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: metrics
path: /query
operations:
- name: get-metrics
method: GET
- type: http
namespace: servicenow
baseUri: https://abnamro.service-now.com/api/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 Prometheus for active alerts on Kubernetes-hosted banking microservices, enriches with Datadog APM trace data, and creates Jira incident tickets for critical alerts.
naftiko: '0.5'
info:
label: Prometheus Alert Triage and Escalation
description: Queries Prometheus for active alerts on Kubernetes-hosted banking microservices, enriches with Datadog APM trace data, and creates Jira incident tickets for critical alerts.
tags:
- observability
- alerting
- prometheus
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: triage-prometheus-alerts
description: Query Prometheus alerts, enrich with Datadog traces, and create Jira incidents for critical ones.
inputParameters:
- name: namespace
in: body
type: string
description: The Kubernetes namespace to filter alerts.
- name: severity_filter
in: body
type: string
description: 'Minimum severity to triage: critical, warning, or info.'
steps:
- name: get-alerts
type: call
call: prometheus.query-alerts
with:
namespace: '{{namespace}}'
- name: get-traces
type: call
call: datadog.get-traces
with:
service: '{{namespace}}'
time_range: 1h
- name: create-incident
type: call
call: jira.create-issue
with:
project_key: INC
issuetype: Incident
summary: '[Prometheus] {{namespace}} — {{get-alerts.alert_count}} active alerts'
description: 'Namespace: {{namespace}}
Active alerts: {{get-alerts.alert_count}}
Severity filter: {{severity_filter}}
Datadog traces available for correlation.'
consumes:
- type: http
namespace: prometheus
baseUri: https://prometheus.abnamro.com/api/v1
authentication:
type: bearer
token: $secrets.prometheus_token
resources:
- name: alerts
path: /alerts?filter=namespace%3D{{namespace}}
inputParameters:
- name: namespace
in: query
operations:
- name: query-alerts
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: traces
path: /traces?service={{service}}&timeRange={{time_range}}
inputParameters:
- name: service
in: query
- name: time_range
in: query
operations:
- name: get-traces
method: GET
- type: http
namespace: jira
baseUri: https://abnamro.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Validates wire transfers against AML rules, screens beneficiaries, creates compliance records, and notifies compliance team.
naftiko: '0.5'
info:
label: Wire Transfer Compliance Pipeline
description: Validates wire transfers against AML rules, screens beneficiaries, creates compliance records, and notifies compliance team.
tags:
- payments
- compliance
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: wire_transfer_compliance_pipeline
description: Orchestrate wire transfer compliance pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Generates annual client review documents from portfolio data, compliance records, and performance metrics, and sends to advisors.
naftiko: '0.5'
info:
label: Annual Review Document Generator
description: Generates annual client review documents from portfolio data, compliance records, and performance metrics, and sends to advisors.
tags:
- client-management
- documents
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: client-management
port: 8080
tools:
- name: annual_review_document_generator
description: Orchestrate annual review document generator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: fetch-data
type: call
call: primary.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-data
type: call
call: processor.transform
with:
input: '{{fetch-data.result}}'
- name: create-record
type: call
call: servicenow.create-record
with:
table: records
data: '{{process-data.output}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: operations
text: 'Workflow {{resource_id}} complete. Record: {{create-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://co.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/records
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/{{channel}}/channels/general/messages
operations:
- name: send-message
method: POST
Fetches real-time market data from Bloomberg Terminal API for ABN AMRO trading desks.
naftiko: '0.5'
info:
label: Bloomberg Terminal Data Fetch
description: Fetches real-time market data from Bloomberg Terminal API for ABN AMRO trading desks.
tags:
- trading
- bloomberg
- market-data
capability:
exposes:
- type: mcp
namespace: trading
port: 8080
tools:
- name: get-market-data
description: Fetch Bloomberg market data by ticker.
inputParameters:
- name: ticker
in: body
type: string
description: The ticker to look up.
call: salesforce.get-ticker
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://abn-amro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: bloomberg_terminal_data_fetch
method: GET
Queries distributed traces from the OpenTelemetry-backed tracing backend for a given trace ID, returning span details and latency breakdown for banking microservice debugging.
naftiko: '0.5'
info:
label: OpenTelemetry Trace Lookup
description: Queries distributed traces from the OpenTelemetry-backed tracing backend for a given trace ID, returning span details and latency breakdown for banking microservice debugging.
tags:
- observability
- tracing
- opentelemetry
capability:
exposes:
- type: mcp
namespace: distributed-tracing
port: 8080
tools:
- name: get-trace
description: Look up a distributed trace by trace ID. Returns span tree, total duration, and error spans.
inputParameters:
- name: trace_id
in: body
type: string
description: The OpenTelemetry trace ID (32-char hex).
call: otel.get-trace
with:
trace_id: '{{trace_id}}'
outputParameters:
- name: span_count
type: string
mapping: $.spans.length
- name: total_duration_ms
type: string
mapping: $.duration
consumes:
- type: http
namespace: otel
baseUri: https://tracing.abnamro.com/api/v2
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
Retrieves the current discount rate and fee structure for a merchant enrolled in the Amex network.
naftiko: '0.5'
info:
label: Merchant Fee Rate Lookup
description: Retrieves the current discount rate and fee structure for a merchant enrolled in the Amex network.
tags:
- merchants
- payments
- fees
capability:
exposes:
- type: mcp
namespace: amex-merchant-data
port: 8080
tools:
- name: get-fee-rate
description: Given a merchant ID, return the discount rate, transaction fee, and effective date. Use when reviewing merchant fee arrangements.
inputParameters:
- name: merchant_id
in: body
type: string
description: The merchant identifier.
call: amex-merchant-data.get-fee-rate
with:
merchant_id: '{{merchant_id}}'
outputParameters:
- name: discount_rate
type: number
mapping: $.discount_rate
- name: transaction_fee
type: number
mapping: $.transaction_fee
- name: effective_date
type: string
mapping: $.effective_date
consumes:
- namespace: amex-merchant-data
type: http
baseUri: https://api.americanexpress.com/v1/merchants
authentication:
type: bearer
token: $secrets.amex_merchant_token
resources:
- name: fees
path: /merchants/{merchant_id}/fees
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-fee-rate
method: GET
Escalates high-priority Zendesk support tickets by fetching ticket details, creating a Jira issue for the product team, and alerting the support lead via Slack.
naftiko: '0.5'
info:
label: Zendesk Ticket Escalation Workflow
description: Escalates high-priority Zendesk support tickets by fetching ticket details, creating a Jira issue for the product team, and alerting the support lead via Slack.
tags:
- zendesk
- customer-support
- jira
- slack
capability:
exposes:
- type: mcp
namespace: ticket-escalation
port: 8080
tools:
- name: escalate-ticket
description: Escalate a Zendesk ticket to the product team via Jira and notify the support lead. Use when a support ticket requires product team intervention.
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-jira
type: call
call: jira.create-issue
with:
project_key: SUP
issuetype: Bug
summary: 'Escalation: {{get-ticket.subject}}'
description: 'Zendesk #{{ticket_id}}: {{get-ticket.description}}. Priority: {{get-ticket.priority}}.'
- name: alert-lead
type: call
call: slack.post-message
with:
channel: support-escalations
text: 'Ticket escalated: #{{ticket_id}} — {{get-ticket.subject}} | Priority: {{get-ticket.priority}} | Jira: {{create-jira.key}}'
consumes:
- namespace: zendesk
type: http
baseUri: https://americanexpress.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
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Triggers a Tableau workbook refresh for monthly financial reporting dashboards and posts the refresh status to the Finance Slack channel.
naftiko: '0.5'
info:
label: Tableau Financial Dashboard Refresh
description: Triggers a Tableau workbook refresh for monthly financial reporting dashboards and posts the refresh status to the Finance Slack channel.
tags:
- data
- analytics
- tableau
- slack
- finance
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: refresh-financial-dashboard
description: Given a Tableau workbook ID, trigger a datasource refresh and post the job status to the finance Slack channel once complete. Use at month-end or quarter-end to refresh executive financial dashboards.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID to refresh.
- name: site_id
in: body
type: string
description: The Tableau site ID where the workbook is hosted.
steps:
- name: trigger-refresh
type: call
call: tableau.refresh-workbook
with:
site_id: '{{site_id}}'
workbook_id: '{{workbook_id}}'
- name: post-status
type: call
call: slack-finance.post-message
with:
channel: finance-reporting
text: 'Tableau dashboard refresh triggered | Workbook: {{workbook_id}} | Job ID: {{trigger-refresh.job_id}} | Status: {{trigger-refresh.status}}'
consumes:
- namespace: tableau
type: http
baseUri: https://americanexpress.tableau.com/api/2.8
authentication:
type: apikey
key: X-Tableau-Auth
value: $secrets.tableau_auth_token
placement: header
resources:
- name: workbook-refresh
path: /sites/{site_id}/workbooks/{workbook_id}/refresh
inputParameters:
- name: site_id
in: path
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- namespace: slack-finance
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Processes a chargeback by retrieving the original transaction, filing the chargeback with the merchant acquirer, updating the cardholder ledger, and sending status notification.
naftiko: '0.5'
info:
label: Cardholder Chargeback Processing
description: Processes a chargeback by retrieving the original transaction, filing the chargeback with the merchant acquirer, updating the cardholder ledger, and sending status notification.
tags:
- chargebacks
- payments
- cardholder
- settlements
capability:
exposes:
- type: mcp
namespace: chargeback-ops
port: 8080
tools:
- name: process-chargeback
description: File a chargeback, issue provisional credit, and notify the cardholder. Use when a cardholder disputes a transaction and a chargeback is warranted.
inputParameters:
- name: transaction_id
in: body
type: string
description: Original transaction ID.
- name: reason_code
in: body
type: string
description: Chargeback reason code.
- name: cardholder_email
in: body
type: string
description: Cardholder email address.
steps:
- name: get-txn
type: call
call: amex-transactions.get-transaction
with:
txn_id: '{{transaction_id}}'
- name: file-cb
type: call
call: amex-chargebacks.file-chargeback
with:
transaction_id: '{{transaction_id}}'
reason_code: '{{reason_code}}'
amount: '{{get-txn.amount}}'
- name: credit-ledger
type: call
call: amex-ledger.create-entry
with:
account_id: '{{get-txn.account_id}}'
amount: '{{get-txn.amount}}'
type: provisional_credit
reference: '{{file-cb.chargeback_id}}'
- name: notify
type: call
call: email.send-email
with:
to: '{{cardholder_email}}'
subject: Chargeback filed — provisional credit issued
body: 'A provisional credit of ${{get-txn.amount}} has been applied. Chargeback ID: {{file-cb.chargeback_id}}'
consumes:
- namespace: amex-transactions
type: http
baseUri: https://api.americanexpress.com/v1/transactions
authentication:
type: bearer
token: $secrets.amex_transactions_token
resources:
- name: transaction
path: /transactions/{txn_id}
inputParameters:
- name: txn_id
in: path
operations:
- name: get-transaction
method: GET
- namespace: amex-chargebacks
type: http
baseUri: https://api.americanexpress.com/v1/chargebacks
authentication:
type: bearer
token: $secrets.amex_chargebacks_token
resources:
- name: chargeback
path: /chargebacks
operations:
- name: file-chargeback
method: POST
- namespace: amex-ledger
type: http
baseUri: https://api.americanexpress.com/v1/ledger
authentication:
type: bearer
token: $secrets.amex_ledger_token
resources:
- name: entries
path: /entries
operations:
- name: create-entry
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
When a Snowflake data quality check fails for a critical financial dataset, logs the failure details and creates a Jira data engineering issue for remediation.
naftiko: '0.5'
info:
label: Snowflake Data Quality Monitoring Alert
description: When a Snowflake data quality check fails for a critical financial dataset, logs the failure details and creates a Jira data engineering issue for remediation.
tags:
- data
- analytics
- snowflake
- jira
- data-quality
- monitoring
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: handle-data-quality-failure
description: Given a Snowflake table name, failed check name, and failure details, create a Jira issue for the data engineering team and post a Slack notification to the data ops channel. Use when automated data quality checks fail on financial or compliance datasets.
inputParameters:
- name: table_name
in: body
type: string
description: The fully-qualified Snowflake table name (database.schema.table) where the quality check failed.
- name: check_name
in: body
type: string
description: The name of the data quality check that failed (e.g., null_count_check, row_count_threshold).
- name: failure_details
in: body
type: string
description: A description of why the check failed and what values were observed.
steps:
- name: create-dq-issue
type: call
call: jira-data.create-issue
with:
project_key: DATA
issuetype: Bug
summary: 'Data quality failure: {{check_name}} on {{table_name}}'
description: 'Table: {{table_name}}
Check: {{check_name}}
Details: {{failure_details}}'
priority: High
- name: post-data-alert
type: call
call: slack-data.post-message
with:
channel: data-ops
text: 'Data Quality Failure | Table: {{table_name}} | Check: {{check_name}} | Jira: {{create-dq-issue.key}}'
consumes:
- namespace: jira-data
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack-data
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Responds to DDoS attacks by activating Cloudflare under-attack mode, creating a security incident in ServiceNow, alerting via PagerDuty, and posting status to Slack.
naftiko: '0.5'
info:
label: Cloudflare DDoS Mitigation Response
description: Responds to DDoS attacks by activating Cloudflare under-attack mode, creating a security incident in ServiceNow, alerting via PagerDuty, and posting status to Slack.
tags:
- cloudflare
- security
- servicenow
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: ddos-response
port: 8080
tools:
- name: mitigate-ddos
description: Activate DDoS mitigation and alert security teams. Use when a DDoS attack is detected.
inputParameters:
- name: zone_id
in: body
type: string
description: Cloudflare zone ID.
steps:
- name: activate-uam
type: call
call: cloudflare.set-security-level
with:
zone_id: '{{zone_id}}'
value: under_attack
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: DDoS attack — {{zone_id}}
category: security
priority: '1'
- name: page-security
type: call
call: pagerduty.create-incident
with:
title: 'DDoS attack: zone {{zone_id}}'
service_id: $secrets.pd_security_service_id
urgency: high
- name: post-status
type: call
call: slack.post-message
with:
channel: security-ops
text: 'DDoS mitigation active: {{zone_id}} | SNOW: {{create-incident.number}} | PD: {{page-security.incident_number}}'
consumes:
- namespace: cloudflare
type: http
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: zones
path: /zones/{zone_id}/settings/security_level
inputParameters:
- name: zone_id
in: path
operations:
- name: set-security-level
method: PATCH
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Responds to Dynatrace application slowdown alerts by fetching problem details, creating a PagerDuty incident, and opening a Jira issue for the responsible team.
naftiko: '0.5'
info:
label: Dynatrace Application Slowdown Response
description: Responds to Dynatrace application slowdown alerts by fetching problem details, creating a PagerDuty incident, and opening a Jira issue for the responsible team.
tags:
- dynatrace
- monitoring
- pagerduty
- jira
capability:
exposes:
- type: mcp
namespace: dt-response
port: 8080
tools:
- name: handle-slowdown
description: Respond to a Dynatrace slowdown by paging on-call and creating a tracking issue. Use when Dynatrace detects application performance degradation.
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: page-team
type: call
call: pagerduty.create-incident
with:
title: 'App slowdown: {{get-problem.title}}'
service_id: $secrets.pd_app_service_id
urgency: high
body: 'Impact: {{get-problem.impactLevel}}. Root cause: {{get-problem.rootCauseEntity}}.'
- name: create-issue
type: call
call: jira.create-issue
with:
project_key: OPS
issuetype: Bug
summary: 'Dynatrace: {{get-problem.title}}'
description: 'Problem ID: {{problem_id}}. Impact: {{get-problem.impactLevel}}. PagerDuty: {{page-team.incident_number}}.'
consumes:
- namespace: dynatrace
type: http
baseUri: https://americanexpress.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
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
When a role change is recorded in Workday, updates the employee's Okta group memberships and notifies the employee via Microsoft Teams of their new access.
naftiko: '0.5'
info:
label: Okta Access Provisioning for New Role
description: When a role change is recorded in Workday, updates the employee's Okta group memberships and notifies the employee via Microsoft Teams of their new access.
tags:
- identity
- security
- okta
- workday
- microsoft-teams
- access-management
capability:
exposes:
- type: mcp
namespace: identity-provisioning
port: 8080
tools:
- name: provision-role-access
description: Given a Workday employee ID and new role, retrieve the employee's Okta user ID, update their group memberships to reflect the new role, and notify them via Teams. Use when an employee changes roles and needs updated system access.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID of the employee whose role is changing.
- name: new_role
in: body
type: string
description: The new role or job title as defined in Workday.
- name: okta_group_id
in: body
type: string
description: The Okta group ID corresponding to the new role's access profile.
steps:
- name: get-employee
type: call
call: workday-iam.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: get-okta-user
type: call
call: okta.get-user-by-login
with:
login: '{{get-employee.work_email}}'
- name: add-to-group
type: call
call: okta-groups.add-user-to-group
with:
group_id: '{{okta_group_id}}'
user_id: '{{get-okta-user.id}}'
- name: notify-employee
type: call
call: msteams-iam.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: 'Your access has been updated for your new role: {{new_role}}. If you have questions, contact the IT help desk.'
consumes:
- namespace: workday-iam
type: http
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_access_token
resources:
- name: worker
path: /workers/{worker_id}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: okta
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user
path: /users/{login}
inputParameters:
- name: login
in: path
operations:
- name: get-user-by-login
method: GET
- namespace: okta-groups
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-membership
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: msteams-iam
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/{recipient_upn}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the latest settlement status and payout details for a merchant from the settlements service.
naftiko: '0.5'
info:
label: Merchant Settlement Status Lookup
description: Retrieves the latest settlement status and payout details for a merchant from the settlements service.
tags:
- merchants
- payments
- settlements
capability:
exposes:
- type: mcp
namespace: amex-settlements
port: 8080
tools:
- name: get-settlement-status
description: Given a merchant ID, return the latest settlement amount, status, and payout date. Use when a merchant inquires about payment settlement.
inputParameters:
- name: merchant_id
in: body
type: string
description: The merchant identifier.
call: amex-settlements.get-settlement-status
with:
merchant_id: '{{merchant_id}}'
outputParameters:
- name: settlement_amount
type: number
mapping: $.amount
- name: status
type: string
mapping: $.status
- name: payout_date
type: string
mapping: $.payout_date
consumes:
- namespace: amex-settlements
type: http
baseUri: https://api.americanexpress.com/v1/settlements
authentication:
type: bearer
token: $secrets.amex_settlements_token
resources:
- name: settlement
path: /merchants/{merchant_id}/settlements/latest
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-settlement-status
method: GET
When a new lead is created in Salesforce for a card product, enriches the lead with firmographic data from ZoomInfo and updates the Salesforce record with company and contact details.
naftiko: '0.5'
info:
label: Salesforce Lead to Card Applicant Enrichment
description: When a new lead is created in Salesforce for a card product, enriches the lead with firmographic data from ZoomInfo and updates the Salesforce record with company and contact details.
tags:
- sales
- crm
- salesforce
- zoominfo
- lead-enrichment
capability:
exposes:
- type: mcp
namespace: lead-enrichment
port: 8080
tools:
- name: enrich-card-lead
description: Given a Salesforce lead ID, retrieve lead details, search ZoomInfo for matching company and contact data, and update the Salesforce lead record with enriched firmographic information. Use when new B2B card product leads are created.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID to enrich.
steps:
- name: get-lead
type: call
call: salesforce-leads.get-lead
with:
lead_id: '{{lead_id}}'
- name: search-zoominfo
type: call
call: zoominfo.search-contact
with:
first_name: '{{get-lead.first_name}}'
last_name: '{{get-lead.last_name}}'
company_name: '{{get-lead.company}}'
- name: update-lead
type: call
call: salesforce-leads-update.update-lead
with:
lead_id: '{{lead_id}}'
company_revenue: '{{search-zoominfo.company_revenue}}'
employee_count: '{{search-zoominfo.employee_count}}'
industry: '{{search-zoominfo.industry}}'
linkedin_url: '{{search-zoominfo.linkedin_url}}'
consumes:
- namespace: salesforce-leads
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: lead
path: /sobjects/Lead/{lead_id}
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- namespace: zoominfo
type: http
baseUri: https://api.zoominfo.com/search
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: contact
path: /contact
operations:
- name: search-contact
method: POST
- namespace: salesforce-leads-update
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: lead
path: /sobjects/Lead/{lead_id}
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
Generates a sprint retrospective digest by pulling completed stories from Jira, calculating velocity metrics, and posting the summary to Confluence and Slack.
naftiko: '0.5'
info:
label: Jira Sprint Retrospective Digest
description: Generates a sprint retrospective digest by pulling completed stories from Jira, calculating velocity metrics, and posting the summary to Confluence and Slack.
tags:
- jira
- engineering
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: sprint-retro
port: 8080
tools:
- name: generate-retro-digest
description: Generate a sprint retrospective by summarizing completed work and posting to Confluence and Slack. Use at the end of each sprint.
inputParameters:
- name: project_key
in: body
type: string
description: Jira project key.
- name: sprint_id
in: body
type: string
description: Sprint ID.
- name: confluence_space
in: body
type: string
description: Confluence space key.
- name: team_channel
in: body
type: string
description: Team Slack channel.
steps:
- name: get-completed
type: call
call: jira.search-issues
with:
jql: project={{project_key}} AND sprint={{sprint_id}} AND status=Done
- name: create-retro
type: call
call: confluence.create-page
with:
spaceKey: '{{confluence_space}}'
title: Sprint {{sprint_id}} Retrospective
body: 'Completed: {{get-completed.total}} stories. Story points: {{get-completed.total_points}}.'
- name: post-digest
type: call
call: slack.post-message
with:
channel: '{{team_channel}}'
text: 'Sprint {{sprint_id}} complete: {{get-completed.total}} stories ({{get-completed.total_points}} pts). Retro: {{create-retro.url}}'
consumes:
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search
operations:
- name: search-issues
method: GET
- namespace: confluence
type: http
baseUri: https://americanexpress.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
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves a cardholder's current Membership Rewards point balance and tier status from the rewards platform and returns a structured summary.
naftiko: '0.5'
info:
label: Cardholder Rewards Balance Lookup
description: Retrieves a cardholder's current Membership Rewards point balance and tier status from the rewards platform and returns a structured summary.
tags:
- rewards
- payments
- cardholder
- lookup
capability:
exposes:
- type: mcp
namespace: rewards
port: 8080
tools:
- name: get-rewards-balance
description: Given a cardholder account ID, return the current Membership Rewards point balance, tier, and expiry date. Use when an agent or representative needs to check a cardholder's rewards standing.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID for which to retrieve rewards balance.
call: amex-rewards.get-balance
with:
account_id: '{{account_id}}'
outputParameters:
- name: points_balance
type: number
mapping: $.points_balance
- name: tier
type: string
mapping: $.tier
- name: expiry_date
type: string
mapping: $.expiry_date
consumes:
- namespace: amex-rewards
type: http
baseUri: https://api.americanexpress.com/v1/rewards
authentication:
type: bearer
token: $secrets.amex_rewards_token
resources:
- name: balance
path: /accounts/{account_id}/balance
inputParameters:
- name: account_id
in: path
operations:
- name: get-balance
method: GET
Provisions a cardholder's card into a digital wallet by verifying identity, generating a token, registering with the wallet provider, and confirming via push notification.
naftiko: '0.5'
info:
label: Cardholder Digital Wallet Provisioning
description: Provisions a cardholder's card into a digital wallet by verifying identity, generating a token, registering with the wallet provider, and confirming via push notification.
tags:
- cardholder
- digital-wallets
- payments
- security
capability:
exposes:
- type: mcp
namespace: wallet-provision
port: 8080
tools:
- name: provision-wallet
description: Provision a card into a digital wallet with identity verification and token generation. Use when a cardholder adds their card to Apple Pay or Google Pay.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: card_id
in: body
type: string
description: Card ID to provision.
- name: wallet_type
in: body
type: string
description: Wallet type (apple-pay, google-pay).
- name: device_id
in: body
type: string
description: Device identifier.
- name: verification_method
in: body
type: string
description: Verification method (sms, email).
steps:
- name: verify
type: call
call: amex-identity.verify-identity
with:
account_id: '{{account_id}}'
verification_method: '{{verification_method}}'
- name: tokenize
type: call
call: amex-tokens.generate-token
with:
card_id: '{{card_id}}'
wallet_type: '{{wallet_type}}'
- name: register
type: call
call: amex-wallets.register-wallet
with:
token_id: '{{tokenize.token_id}}'
wallet_type: '{{wallet_type}}'
device_id: '{{device_id}}'
- name: confirm
type: call
call: amex-push.send-push
with:
account_id: '{{account_id}}'
title: Card added to {{wallet_type}}
body: Your card ending in {{tokenize.last_four}} is now available in {{wallet_type}}.
consumes:
- namespace: amex-identity
type: http
baseUri: https://api.americanexpress.com/v1/identity
authentication:
type: bearer
token: $secrets.amex_identity_token
resources:
- name: verify
path: /verify
operations:
- name: verify-identity
method: POST
- namespace: amex-tokens
type: http
baseUri: https://api.americanexpress.com/v1/tokens
authentication:
type: bearer
token: $secrets.amex_tokens_token
resources:
- name: tokens
path: /tokens
operations:
- name: generate-token
method: POST
- namespace: amex-wallets
type: http
baseUri: https://api.americanexpress.com/v1/wallets
authentication:
type: bearer
token: $secrets.amex_wallets_token
resources:
- name: registrations
path: /registrations
operations:
- name: register-wallet
method: POST
- namespace: amex-push
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: push
path: /push/send
operations:
- name: send-push
method: POST
Queries Datadog for the current health status and error rate of a specified American Express microservice.
naftiko: '0.5'
info:
label: Datadog Service Health Check
description: Queries Datadog for the current health status and error rate of a specified American Express microservice.
tags:
- datadog
- monitoring
- infrastructure
capability:
exposes:
- type: mcp
namespace: datadog
port: 8080
tools:
- name: get-service-health
description: Given a service name, return the current monitor status and error rate from Datadog. Use when checking the health of a production service.
inputParameters:
- name: service_name
in: body
type: string
description: The microservice name to check.
call: datadog.get-service-health
with:
service_name: '{{service_name}}'
outputParameters:
- name: status
type: string
mapping: $.monitors[0].overall_state
- name: error_rate
type: number
mapping: $.monitors[0].error_rate
- name: name
type: string
mapping: $.monitors[0].name
consumes:
- namespace: datadog
type: http
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor/search
operations:
- name: get-service-health
method: GET
Checks whether a cardholder is eligible for a specific Amex Offer based on account profile and spending history.
naftiko: '0.5'
info:
label: Cardholder Offer Eligibility Check
description: Checks whether a cardholder is eligible for a specific Amex Offer based on account profile and spending history.
tags:
- offers
- cardholder
- marketing
capability:
exposes:
- type: mcp
namespace: amex-offers
port: 8080
tools:
- name: check-eligibility
description: Given an offer ID and account ID, return eligibility status, reason, and offer name. Use when verifying if a cardholder qualifies for a specific Amex Offer.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
- name: offer_id
in: body
type: string
description: The Amex Offer identifier.
call: amex-offers.check-eligibility
with:
account_id: '{{account_id}}'
offer_id: '{{offer_id}}'
outputParameters:
- name: eligible
type: boolean
mapping: $.eligible
- name: reason
type: string
mapping: $.reason
- name: offer_name
type: string
mapping: $.offer_name
consumes:
- namespace: amex-offers
type: http
baseUri: https://api.americanexpress.com/v1/offers
authentication:
type: bearer
token: $secrets.amex_offers_token
resources:
- name: eligibility
path: /offers/{offer_id}/eligibility/{account_id}
inputParameters:
- name: account_id
in: path
- name: offer_id
in: path
operations:
- name: check-eligibility
method: GET
Retrieves the current status, credit limit, and outstanding balance for a cardholder account from the American Express accounts platform.
naftiko: '0.5'
info:
label: Cardholder Account Status Lookup
description: Retrieves the current status, credit limit, and outstanding balance for a cardholder account from the American Express accounts platform.
tags:
- payments
- cardholder
- lookup
- account-management
capability:
exposes:
- type: mcp
namespace: account-lookup
port: 8080
tools:
- name: get-account-status
description: Given a cardholder account ID, return the account status, credit limit, current balance, and payment due date. Use when a customer service representative or agent needs to check account standing before processing a request.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID to look up.
call: amex-accounts.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: status
type: string
mapping: $.account_status
- name: credit_limit
type: number
mapping: $.credit_limit
- name: current_balance
type: number
mapping: $.current_balance
- name: payment_due_date
type: string
mapping: $.payment_due_date
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: account
path: /{account_id}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Deprovisions a terminated employee by deactivating their Okta account, revoking all app assignments, creating a ServiceNow closure ticket, and notifying security via Slack.
naftiko: '0.5'
info:
label: Okta User Deprovisioning Workflow
description: Deprovisions a terminated employee by deactivating their Okta account, revoking all app assignments, creating a ServiceNow closure ticket, and notifying security via Slack.
tags:
- identity
- okta
- servicenow
- security
- offboarding
capability:
exposes:
- type: mcp
namespace: okta-deprovision
port: 8080
tools:
- name: deprovision-user
description: Deactivate an Okta user, revoke app assignments, create a closure ticket, and notify security. Use when an employee is terminated.
inputParameters:
- name: user_id
in: body
type: string
description: Okta user ID of the terminated employee.
steps:
- name: deactivate
type: call
call: okta.deactivate-user
with:
user_id: '{{user_id}}'
- name: revoke-apps
type: call
call: okta.list-apps
with:
user_id: '{{user_id}}'
- name: create-ticket
type: call
call: servicenow.create-request
with:
short_description: User deprovisioned — {{user_id}}
description: 'Okta account deactivated. App assignments revoked: {{revoke-apps.app_count}}.'
- name: notify-security
type: call
call: slack.post-message
with:
channel: security-ops
text: 'User deprovisioned: {{user_id}}. {{revoke-apps.app_count}} app assignments revoked. SNOW: {{create-ticket.number}}'
consumes:
- namespace: okta
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_token
resources:
- name: users
path: /users/{user_id}
inputParameters:
- name: user_id
in: path
operations:
- name: deactivate-user
method: POST
- name: list-apps
method: GET
- namespace: servicenow
type: http
baseUri: https://americanexpress.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
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Detects corporate card expense policy violations, creates a compliance case in Jira, notifies the employee's manager via email, and flags the expense in the expense management system.
naftiko: '0.5'
info:
label: Corporate Expense Policy Violation Handler
description: Detects corporate card expense policy violations, creates a compliance case in Jira, notifies the employee's manager via email, and flags the expense in the expense management system.
tags:
- corporate
- compliance
- jira
- expense-management
capability:
exposes:
- type: mcp
namespace: expense-compliance
port: 8080
tools:
- name: handle-policy-violation
description: Flag a policy-violating expense, create a compliance case, and notify the manager. Use when an expense policy violation is detected.
inputParameters:
- name: expense_id
in: body
type: string
description: Expense record ID.
- name: violation_reason
in: body
type: string
description: Reason for the policy violation.
steps:
- name: get-expense
type: call
call: amex-expenses.get-expense
with:
expense_id: '{{expense_id}}'
- name: flag-violation
type: call
call: amex-expenses.flag-expense
with:
expense_id: '{{expense_id}}'
flag: policy-violation
reason: '{{violation_reason}}'
- name: create-case
type: call
call: jira.create-issue
with:
project_key: COMP
issuetype: Task
summary: Expense policy violation — {{get-expense.employee_name}}
description: 'Expense: ${{get-expense.amount}} at {{get-expense.merchant}}. Violation: {{violation_reason}}.'
- name: notify-manager
type: call
call: email.send-email
with:
to: '{{get-expense.manager_email}}'
subject: Expense policy violation flagged
body: 'An expense by {{get-expense.employee_name}} for ${{get-expense.amount}} has been flagged. Jira: {{create-case.key}}'
consumes:
- namespace: amex-expenses
type: http
baseUri: https://api.americanexpress.com/v1/expenses
authentication:
type: bearer
token: $secrets.amex_expenses_token
resources:
- name: expense
path: /expenses/{expense_id}
inputParameters:
- name: expense_id
in: path
operations:
- name: get-expense
method: GET
- name: flag-expense
method: PUT
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Generates a postmortem for a PagerDuty incident by fetching incident timeline, creating a Confluence postmortem page, and notifying stakeholders via Slack.
naftiko: '0.5'
info:
label: PagerDuty Incident Postmortem Generator
description: Generates a postmortem for a PagerDuty incident by fetching incident timeline, creating a Confluence postmortem page, and notifying stakeholders via Slack.
tags:
- pagerduty
- incident-management
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: postmortem-gen
port: 8080
tools:
- name: generate-postmortem
description: Generate a postmortem document from a PagerDuty incident and share it. Use after an incident is resolved.
inputParameters:
- name: incident_id
in: body
type: string
description: PagerDuty incident ID.
steps:
- name: get-incident
type: call
call: pagerduty.get-incident
with:
incident_id: '{{incident_id}}'
- name: get-timeline
type: call
call: pagerduty.get-timeline
with:
incident_id: '{{incident_id}}'
- name: create-postmortem
type: call
call: confluence.create-page
with:
spaceKey: ENG
title: 'Postmortem: {{get-incident.title}}'
body: 'Severity: {{get-incident.urgency}}. Duration: {{get-incident.duration}}. Timeline entries: {{get-timeline.total}}.'
- name: notify
type: call
call: slack.post-message
with:
channel: engineering
text: 'Postmortem ready: {{get-incident.title}} | Severity: {{get-incident.urgency}} | Doc: {{create-postmortem.url}}'
consumes:
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents/{incident_id}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- name: logs
path: /incidents/{incident_id}/log_entries
inputParameters:
- name: incident_id
in: path
operations:
- name: get-timeline
method: GET
- namespace: confluence
type: http
baseUri: https://americanexpress.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
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Screens high-value transactions for anti-money laundering by running sanctions checks, creating a compliance review case, and filing a suspicious activity report if needed.
naftiko: '0.5'
info:
label: AML Transaction Screening Workflow
description: Screens high-value transactions for anti-money laundering by running sanctions checks, creating a compliance review case, and filing a suspicious activity report if needed.
tags:
- compliance
- aml
- security
- servicenow
capability:
exposes:
- type: mcp
namespace: aml-screening
port: 8080
tools:
- name: screen-transaction
description: Screen a transaction for AML, create a compliance case, and file a SAR if warranted. Use when a high-value transaction triggers AML rules.
inputParameters:
- name: transaction_id
in: body
type: string
description: Transaction ID to screen.
- name: amount
in: body
type: string
description: Transaction amount.
- name: parties
in: body
type: string
description: Comma-separated party names.
steps:
- name: screen
type: call
call: amex-sanctions.screen-transaction
with:
transaction_id: '{{transaction_id}}'
amount: '{{amount}}'
parties: '{{parties}}'
- name: create-review
type: call
call: servicenow.create-case
with:
short_description: AML screening — txn {{transaction_id}}
category: aml
priority: '{{screen.risk_level}}'
description: 'Screening result: {{screen.result}}. Hit count: {{screen.hit_count}}.'
- name: file-report
type: call
call: amex-sar.file-sar
with:
transaction_id: '{{transaction_id}}'
case_id: '{{create-review.sys_id}}'
screening_result: '{{screen.result}}'
consumes:
- namespace: amex-sanctions
type: http
baseUri: https://api.americanexpress.com/v1/sanctions
authentication:
type: bearer
token: $secrets.amex_sanctions_token
resources:
- name: screening
path: /screen
operations:
- name: screen-transaction
method: POST
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cases
path: /table/sn_compliance_case
operations:
- name: create-case
method: POST
- namespace: amex-sar
type: http
baseUri: https://api.americanexpress.com/v1/sar
authentication:
type: bearer
token: $secrets.amex_sar_token
resources:
- name: reports
path: /reports
operations:
- name: file-sar
method: POST
Orchestrates employee termination by updating Workday, deactivating Okta, revoking corporate card, and creating a ServiceNow offboarding ticket.
naftiko: '0.5'
info:
label: Workday Employee Termination Orchestration
description: Orchestrates employee termination by updating Workday, deactivating Okta, revoking corporate card, and creating a ServiceNow offboarding ticket.
tags:
- hr
- workday
- okta
- offboarding
- servicenow
capability:
exposes:
- type: mcp
namespace: termination-ops
port: 8080
tools:
- name: orchestrate-termination
description: Process an employee termination across all systems. Use when HR initiates an employee separation.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID.
- name: okta_user_id
in: body
type: string
description: Okta user ID.
- name: card_id
in: body
type: string
description: Corporate card ID.
- name: termination_date
in: body
type: string
description: Last day of employment.
- name: reason
in: body
type: string
description: Termination reason.
steps:
- name: terminate-wd
type: call
call: workday.terminate-worker
with:
worker_id: '{{worker_id}}'
termination_date: '{{termination_date}}'
reason: '{{reason}}'
- name: deactivate-okta
type: call
call: okta.deactivate-user
with:
user_id: '{{okta_user_id}}'
- name: cancel-card
type: call
call: amex-corporate.cancel-card
with:
card_id: '{{card_id}}'
- name: create-ticket
type: call
call: servicenow.create-request
with:
short_description: Offboarding — {{worker_id}}
description: 'Workday terminated. Okta deactivated. Corporate card cancelled. Termination date: {{termination_date}}.'
consumes:
- namespace: workday
type: http
baseUri: https://wd3-impl-services1.workday.com/ccx/service/amex
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{worker_id}/terminate
inputParameters:
- name: worker_id
in: path
operations:
- name: terminate-worker
method: POST
- namespace: okta
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_token
resources:
- name: users
path: /users/{user_id}/lifecycle/deactivate
inputParameters:
- name: user_id
in: path
operations:
- name: deactivate-user
method: POST
- namespace: amex-corporate
type: http
baseUri: https://api.americanexpress.com/v1/corporate
authentication:
type: bearer
token: $secrets.amex_corporate_token
resources:
- name: cards
path: /cards/{card_id}/cancel
inputParameters:
- name: card_id
in: path
operations:
- name: cancel-card
method: POST
- namespace: servicenow
type: http
baseUri: https://americanexpress.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
When AWS Cost Explorer detects a spend anomaly above threshold, retrieves the anomaly details, opens a ServiceNow change request, and notifies the cloud FinOps Slack channel.
naftiko: '0.5'
info:
label: Cloud Cost Anomaly Response
description: When AWS Cost Explorer detects a spend anomaly above threshold, retrieves the anomaly details, opens a ServiceNow change request, and notifies the cloud FinOps Slack channel.
tags:
- cloud
- finops
- aws
- servicenow
- slack
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an AWS cost anomaly ID and the affected service/account, retrieve anomaly details from AWS Cost Explorer, open a ServiceNow change request for cost investigation, and alert the FinOps Slack channel. Invoke when a cost spike exceeds defined thresholds.
inputParameters:
- name: anomaly_id
in: body
type: string
description: The AWS Cost Explorer anomaly ID.
- name: aws_account_id
in: body
type: string
description: The AWS account ID where the anomaly was detected.
- name: estimated_overage_usd
in: body
type: number
description: Estimated cost overage in USD.
steps:
- name: get-anomaly
type: call
call: aws-cost.get-anomaly
with:
anomaly_id: '{{anomaly_id}}'
- name: open-change-request
type: call
call: servicenow-cloud.create-change
with:
category: cloud_cost
short_description: Cost anomaly on AWS account {{aws_account_id}} — est. overage ${{estimated_overage_usd}}
description: 'Anomaly ID: {{anomaly_id}}
Service: {{get-anomaly.service}}
Root cause hypothesis: {{get-anomaly.root_cause}}
Impact period: {{get-anomaly.start_date}} to {{get-anomaly.end_date}}'
- name: post-alert
type: call
call: slack-finops.post-message
with:
channel: cloud-finops
text: 'AWS Cost Anomaly | Account: {{aws_account_id}} | Service: {{get-anomaly.service}} | Overage: ${{estimated_overage_usd}} | ServiceNow: {{open-change-request.number}}'
consumes:
- namespace: aws-cost
type: http
baseUri: https://ce.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sigv4_auth
placement: header
resources:
- name: anomaly
path: /GetAnomalies
operations:
- name: get-anomaly
method: POST
- namespace: servicenow-cloud
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change
path: /table/change_request
operations:
- name: create-change
method: POST
- namespace: slack-finops
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Rotates TLS certificates for payment gateway endpoints by generating a new certificate, deploying it via Terraform, validating connectivity, and notifying the infrastructure team via Slack.
naftiko: '0.5'
info:
label: Payment Gateway Certificate Rotation
description: Rotates TLS certificates for payment gateway endpoints by generating a new certificate, deploying it via Terraform, validating connectivity, and notifying the infrastructure team via Slack.
tags:
- security
- infrastructure
- terraform
- slack
capability:
exposes:
- type: mcp
namespace: cert-rotation
port: 8080
tools:
- name: rotate-gateway-cert
description: Generate a new TLS certificate, deploy via Terraform, validate, and notify the team. Use during scheduled certificate rotation windows.
inputParameters: []
steps:
- name: generate-cert
type: call
call: amex-pki.generate-cert
with:
domain: gateway.americanexpress.com
validity_days: '365'
- name: deploy-cert
type: call
call: terraform-cloud.trigger-apply
with:
workspace_id: $secrets.tf_gateway_workspace
message: Cert rotation — {{generate-cert.serial_number}}
- name: validate
type: call
call: amex-gateway.check-health
with: {}
- name: notify
type: call
call: slack.post-message
with:
channel: infra-ops
text: 'TLS cert rotated for gateway.americanexpress.com. Serial: {{generate-cert.serial_number}}. Health: {{validate.status}}'
consumes:
- namespace: amex-pki
type: http
baseUri: https://api.americanexpress.com/v1/pki
authentication:
type: bearer
token: $secrets.amex_pki_token
resources:
- name: certificates
path: /certificates
operations:
- name: generate-cert
method: POST
- namespace: terraform-cloud
type: http
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /runs
operations:
- name: trigger-apply
method: POST
- namespace: amex-gateway
type: http
baseUri: https://api.americanexpress.com/v1/gateway
authentication:
type: bearer
token: $secrets.amex_gateway_token
resources:
- name: health
path: /health
operations:
- name: check-health
method: GET
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Routes a vendor invoice through approval by validating the PO in SAP, creating an approval task in ServiceNow, and notifying the approver via Slack.
naftiko: '0.5'
info:
label: Vendor Invoice Approval Workflow
description: Routes a vendor invoice through approval by validating the PO in SAP, creating an approval task in ServiceNow, and notifying the approver via Slack.
tags:
- finance
- procurement
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: invoice-approval
port: 8080
tools:
- name: route-invoice-approval
description: Validate a purchase order, create an approval task, and notify the approver. Use when a vendor invoice requires approval routing.
inputParameters:
- name: po_number
in: body
type: string
description: Purchase order number.
- name: vendor_name
in: body
type: string
description: Vendor name.
- name: invoice_amount
in: body
type: string
description: Invoice amount.
steps:
- name: validate-po
type: call
call: sap.get-po
with:
po_number: '{{po_number}}'
- name: create-approval
type: call
call: servicenow.create-approval
with:
source_table: ap_invoice
approver: '{{validate-po.budget_owner}}'
state: requested
- name: notify-approver
type: call
call: slack.post-message
with:
channel: '{{validate-po.budget_owner_slack}}'
text: 'Invoice approval needed: PO {{po_number}} | Vendor: {{vendor_name}} | Amount: ${{invoice_amount}} | Approval: {{create-approval.sys_id}}'
consumes:
- namespace: sap
type: http
baseUri: https://api.americanexpress.com/v1/sap
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
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-approval
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Checks the PCI-DSS compliance status of a merchant from the compliance registry.
naftiko: '0.5'
info:
label: PCI Compliance Status Lookup
description: Checks the PCI-DSS compliance status of a merchant from the compliance registry.
tags:
- compliance
- merchants
- security
capability:
exposes:
- type: mcp
namespace: amex-compliance
port: 8080
tools:
- name: get-pci-status
description: Given a merchant ID, return the PCI-DSS compliance status, last assessment date, and compliance level. Use when verifying merchant security compliance.
inputParameters:
- name: merchant_id
in: body
type: string
description: The merchant identifier.
call: amex-compliance.get-pci-status
with:
merchant_id: '{{merchant_id}}'
outputParameters:
- name: compliant
type: boolean
mapping: $.compliant
- name: last_assessment
type: string
mapping: $.last_assessment
- name: level
type: string
mapping: $.level
consumes:
- namespace: amex-compliance
type: http
baseUri: https://api.americanexpress.com/v1/compliance
authentication:
type: bearer
token: $secrets.amex_compliance_token
resources:
- name: pci-status
path: /merchants/{merchant_id}/pci-status
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-pci-status
method: GET
Provisions Tableau dashboard access for a user by verifying their role in Okta, adding them to the Tableau site, and confirming via email.
naftiko: '0.5'
info:
label: Tableau Dashboard Access Provisioning
description: Provisions Tableau dashboard access for a user by verifying their role in Okta, adding them to the Tableau site, and confirming via email.
tags:
- tableau
- okta
- access-management
- email
capability:
exposes:
- type: mcp
namespace: tableau-access
port: 8080
tools:
- name: provision-tableau-access
description: Verify a user's role and provision Tableau access. Use when a user requests dashboard access.
inputParameters:
- name: user_id
in: body
type: string
description: Okta user ID.
- name: tableau_role
in: body
type: string
description: Tableau site role (Viewer, Explorer, Creator).
steps:
- name: verify-role
type: call
call: okta.get-user
with:
user_id: '{{user_id}}'
- name: add-to-tableau
type: call
call: tableau.add-user
with:
site_id: $secrets.tableau_site_id
email: '{{verify-role.profile.email}}'
role: '{{tableau_role}}'
- name: confirm
type: call
call: email.send-email
with:
to: '{{verify-role.profile.email}}'
subject: Tableau access granted
body: You now have {{tableau_role}} access to the Tableau site. Login at https://americanexpress.online.tableau.com
consumes:
- namespace: okta
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_token
resources:
- name: users
path: /users/{user_id}
inputParameters:
- name: user_id
in: path
operations:
- name: get-user
method: GET
- namespace: tableau
type: http
baseUri: https://americanexpress.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: users
path: /sites/{site_id}/users
inputParameters:
- name: site_id
in: path
operations:
- name: add-user
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Retrieves weekly campaign performance metrics from Adobe Analytics and posts a formatted digest to the marketing Slack channel and Microsoft Teams marketing hub.
naftiko: '0.5'
info:
label: Marketing Campaign Performance Digest
description: Retrieves weekly campaign performance metrics from Adobe Analytics and posts a formatted digest to the marketing Slack channel and Microsoft Teams marketing hub.
tags:
- marketing
- adobe-analytics
- slack
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: marketing-reporting
port: 8080
tools:
- name: digest-campaign-performance
description: Given an Adobe Analytics report suite ID and date range, retrieve campaign performance metrics (impressions, clicks, conversions) and post a summary digest to the marketing Slack channel and Teams. Use for weekly or monthly campaign performance reviews.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID to query.
- name: from_date
in: body
type: string
description: Start date for the performance period in YYYY-MM-DD format.
- name: to_date
in: body
type: string
description: End date for the performance period 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: '{{from_date}}'
date_to: '{{to_date}}'
metrics: pageviews,visits,orders,revenue
- name: post-slack-digest
type: call
call: slack-marketing.post-message
with:
channel: marketing-performance
text: 'Campaign Performance {{from_date}} to {{to_date}} | Visits: {{get-metrics.visits}} | Conversions: {{get-metrics.orders}} | Revenue: ${{get-metrics.revenue}}'
- name: post-teams-digest
type: call
call: msteams-marketing.post-channel-message
with:
channel_id: $secrets.teams_marketing_channel_id
content: 'Weekly Campaign Summary ({{from_date}} — {{to_date}})
Visits: {{get-metrics.visits}}
Orders: {{get-metrics.orders}}
Revenue: ${{get-metrics.revenue}}'
consumes:
- namespace: adobe-analytics
type: http
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: report
path: /{global_company_id}/reports
inputParameters:
- name: global_company_id
in: path
operations:
- name: get-report
method: POST
- namespace: slack-marketing
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
- namespace: msteams-marketing
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-message
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves the current status of a merchant onboarding application from the merchant services platform and returns structured status details.
naftiko: '0.5'
info:
label: Merchant Onboarding Application Status Check
description: Retrieves the current status of a merchant onboarding application from the merchant services platform and returns structured status details.
tags:
- merchant-services
- onboarding
- payments
- lookup
capability:
exposes:
- type: mcp
namespace: merchant-onboarding
port: 8080
tools:
- name: get-merchant-application-status
description: Given a merchant application ID, return the current onboarding status, review stage, and any pending requirements. Use when a merchant services agent needs to check where an application stands.
inputParameters:
- name: application_id
in: body
type: string
description: The merchant onboarding application ID issued at submission.
call: amex-merchant.get-application
with:
application_id: '{{application_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: review_stage
type: string
mapping: $.review_stage
- name: pending_items
type: array
mapping: $.pending_items
consumes:
- namespace: amex-merchant
type: http
baseUri: https://api.americanexpress.com/v1/merchant-services
authentication:
type: bearer
token: $secrets.amex_merchant_token
resources:
- name: application
path: /applications/{application_id}
inputParameters:
- name: application_id
in: path
operations:
- name: get-application
method: GET
Generates a merchant renewal pipeline digest by querying Salesforce opportunities, summarizing in Snowflake, and distributing via Slack.
naftiko: '0.5'
info:
label: Salesforce Renewal Pipeline Digest
description: Generates a merchant renewal pipeline digest by querying Salesforce opportunities, summarizing in Snowflake, and distributing via Slack.
tags:
- salesforce
- renewals
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: renewal-digest
port: 8080
tools:
- name: generate-renewal-digest
description: Summarize the renewal pipeline and share with the team. Use for weekly pipeline reviews.
inputParameters: []
steps:
- name: get-renewals
type: call
call: salesforce.run-soql
with:
q: SELECT Name, Amount, CloseDate FROM Opportunity WHERE StageName='Renewal' AND CloseDate=THIS_QUARTER
- name: summarize
type: call
call: snowflake.run-query
with:
query: SELECT COUNT(*) as total, SUM(amount) as pipeline_value FROM SALES_DB.PUBLIC.RENEWAL_PIPELINE WHERE quarter=CURRENT_QUARTER()
- name: post-digest
type: call
call: slack.post-message
with:
channel: merchant-renewals
text: 'Renewal pipeline: {{summarize.total}} renewals | ${{summarize.pipeline_value}} | Details in Salesforce'
consumes:
- namespace: salesforce
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
operations:
- name: run-soql
method: GET
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Triggers the annual performance review cycle in Workday for a specified business unit and sends a Microsoft Teams notification to all managers in that unit.
naftiko: '0.5'
info:
label: Employee Performance Review Cycle Initiation
description: Triggers the annual performance review cycle in Workday for a specified business unit and sends a Microsoft Teams notification to all managers in that unit.
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: performance-hr
port: 8080
tools:
- name: initiate-performance-review
description: Given a Workday business unit ID and review period, trigger the performance review process in Workday and send a Teams notification to all managers in the unit with instructions. Use at the start of annual or mid-year review cycles.
inputParameters:
- name: business_unit_id
in: body
type: string
description: The Workday business unit ID for which to initiate the review cycle.
- name: review_period
in: body
type: string
description: The review period label (e.g., 2026-Annual, 2026-MidYear).
- name: due_date
in: body
type: string
description: The deadline for review completion in YYYY-MM-DD format.
steps:
- name: start-review-process
type: call
call: workday-perf.initiate-review
with:
business_unit_id: '{{business_unit_id}}'
review_period: '{{review_period}}'
due_date: '{{due_date}}'
- name: notify-managers
type: call
call: msteams-hr.post-channel-message
with:
channel_id: $secrets.teams_managers_channel_id
content: 'The {{review_period}} performance review cycle has been initiated. Please complete reviews for your direct reports by {{due_date}}. Process ID: {{start-review-process.process_id}}'
consumes:
- namespace: workday-perf
type: http
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_access_token
resources:
- name: review
path: /performanceReviews
operations:
- name: initiate-review
method: POST
- namespace: msteams-hr
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-message
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Responds to CloudWatch alarms for Lambda error spikes by fetching error logs, creating a PagerDuty incident, and posting diagnostics to Slack.
naftiko: '0.5'
info:
label: CloudWatch Lambda Error Spike Response
description: Responds to CloudWatch alarms for Lambda error spikes by fetching error logs, creating a PagerDuty incident, and posting diagnostics to Slack.
tags:
- aws
- cloudwatch
- lambda
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: lambda-errors
port: 8080
tools:
- name: respond-lambda-errors
description: Fetch Lambda error logs, page on-call, and post diagnostics. Use when CloudWatch detects an error spike in a Lambda function.
inputParameters:
- name: function_name
in: body
type: string
description: AWS Lambda function name.
steps:
- name: get-errors
type: call
call: cloudwatch.get-log-events
with:
logGroupName: /aws/lambda/{{function_name}}
filterPattern: ERROR
limit: '25'
- name: page-team
type: call
call: pagerduty.create-incident
with:
title: 'Lambda error spike: {{function_name}}'
service_id: $secrets.pd_lambda_service_id
urgency: high
- name: post-diagnostics
type: call
call: slack.post-message
with:
channel: serverless-ops
text: 'Lambda error spike: {{function_name}} | Errors: {{get-errors.event_count}} | PD: {{page-team.incident_number}} | Latest: {{get-errors.events[0].message}}'
consumes:
- namespace: cloudwatch
type: http
baseUri: https://logs.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_token
resources:
- name: logs
path: /
operations:
- name: get-log-events
method: POST
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When CrowdStrike detects a suspicious login event for a privileged account, suspends the Okta user session, opens a ServiceNow security incident, and alerts the SOC Slack channel.
naftiko: '0.5'
info:
label: Suspicious Login Threat Response
description: When CrowdStrike detects a suspicious login event for a privileged account, suspends the Okta user session, opens a ServiceNow security incident, and alerts the SOC Slack channel.
tags:
- security
- crowdstrike
- okta
- servicenow
- slack
- identity
- threat-response
capability:
exposes:
- type: mcp
namespace: soc-response
port: 8080
tools:
- name: respond-to-suspicious-login
description: Given a CrowdStrike detection ID and the affected user's email, retrieve detection details, suspend the user's Okta sessions, open a ServiceNow security incident, and alert the SOC Slack channel. Use for privileged account compromise response.
inputParameters:
- name: detection_id
in: body
type: string
description: The CrowdStrike Falcon detection ID for the suspicious login event.
- name: user_email
in: body
type: string
description: The email address of the account flagged in the detection.
steps:
- name: get-detection
type: call
call: crowdstrike.get-detection
with:
detection_id: '{{detection_id}}'
- name: get-okta-user
type: call
call: okta-soc.get-user-by-login
with:
login: '{{user_email}}'
- name: clear-sessions
type: call
call: okta-sessions.clear-user-sessions
with:
user_id: '{{get-okta-user.id}}'
- name: create-sec-incident
type: call
call: servicenow-soc.create-incident
with:
category: security
subcategory: suspicious_login
short_description: Suspicious login detected for {{user_email}}
description: 'CrowdStrike Detection: {{detection_id}}
User: {{user_email}}
Okta sessions cleared: true
Detection details: {{get-detection.description}}'
urgency: '1'
impact: '2'
- name: alert-soc
type: call
call: slack-soc.post-message
with:
channel: soc-alerts
text: 'Suspicious Login Response | User: {{user_email}} | Detection: {{detection_id}} | Okta sessions cleared | SNOW: {{create-sec-incident.number}}'
consumes:
- namespace: crowdstrike
type: http
baseUri: https://api.crowdstrike.com
authentication:
type: bearer
token: $secrets.crowdstrike_access_token
resources:
- name: detection
path: /detects/entities/detect/v2
operations:
- name: get-detection
method: GET
- namespace: okta-soc
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user
path: /users/{login}
inputParameters:
- name: login
in: path
operations:
- name: get-user-by-login
method: GET
- namespace: okta-sessions
type: http
baseUri: https://americanexpress.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-sessions
path: /users/{user_id}/sessions
inputParameters:
- name: user_id
in: path
operations:
- name: clear-user-sessions
method: DELETE
- namespace: servicenow-soc
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incident
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: slack-soc
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Looks up a merchant category code and returns its description and risk classification from the merchant data service.
naftiko: '0.5'
info:
label: Merchant Category Code Lookup
description: Looks up a merchant category code and returns its description and risk classification from the merchant data service.
tags:
- merchants
- payments
- data
capability:
exposes:
- type: mcp
namespace: amex-merchant-data
port: 8080
tools:
- name: get-mcc
description: Given a merchant category code, return its description, risk level, and category. Use when classifying merchant transactions.
inputParameters:
- name: mcc_code
in: body
type: string
description: The merchant category code to look up.
call: amex-merchant-data.get-mcc
with:
mcc_code: '{{mcc_code}}'
outputParameters:
- name: description
type: string
mapping: $.description
- name: risk_level
type: string
mapping: $.risk_level
- name: category
type: string
mapping: $.category
consumes:
- namespace: amex-merchant-data
type: http
baseUri: https://api.americanexpress.com/v1/merchants
authentication:
type: bearer
token: $secrets.amex_merchant_token
resources:
- name: mcc
path: /mcc/{mcc_code}
inputParameters:
- name: mcc_code
in: path
operations:
- name: get-mcc
method: GET
Checks whether a cardholder has active travel notifications on file and returns destination and date ranges.
naftiko: '0.5'
info:
label: Cardholder Travel Notification Status
description: Checks whether a cardholder has active travel notifications on file and returns destination and date ranges.
tags:
- cardholder
- travel
- notifications
capability:
exposes:
- type: mcp
namespace: amex-travel
port: 8080
tools:
- name: get-travel-notifications
description: Given a cardholder account ID, return active travel notifications including destinations and dates. Use when verifying travel alerts before flagging foreign transactions.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-travel.get-travel-notifications
with:
account_id: '{{account_id}}'
outputParameters:
- name: notifications
type: array
mapping: $.notifications
- name: active_count
type: number
mapping: $.active_count
consumes:
- namespace: amex-travel
type: http
baseUri: https://api.americanexpress.com/v1/travel
authentication:
type: bearer
token: $secrets.amex_travel_token
resources:
- name: notifications
path: /accounts/{account_id}/travel-notifications
inputParameters:
- name: account_id
in: path
operations:
- name: get-travel-notifications
method: GET
Pulls a headcount snapshot from Workday by department and pushes the data to Snowflake for aggregation in workforce analytics dashboards.
naftiko: '0.5'
info:
label: Headcount Reporting Snapshot
description: Pulls a headcount snapshot from Workday by department and pushes the data to Snowflake for aggregation in workforce analytics dashboards.
tags:
- hr
- workforce-analytics
- workday
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: publish-headcount-snapshot
description: Given a department ID and reporting period, retrieve headcount data from Workday and insert a snapshot record into the Snowflake workforce analytics table. Use for monthly headcount reporting and workforce planning.
inputParameters:
- name: department_id
in: body
type: string
description: The Workday department ID to pull headcount data for.
- name: reporting_period
in: body
type: string
description: The reporting period in YYYY-MM format (e.g., 2026-03).
steps:
- name: get-headcount
type: call
call: workday-hr.get-headcount
with:
department_id: '{{department_id}}'
as_of_date: '{{reporting_period}}'
- name: insert-snapshot
type: call
call: snowflake-hr.insert-headcount
with:
department_id: '{{department_id}}'
period: '{{reporting_period}}'
headcount: '{{get-headcount.total_headcount}}'
fte_count: '{{get-headcount.fte_count}}'
contractor_count: '{{get-headcount.contractor_count}}'
consumes:
- namespace: workday-hr
type: http
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_access_token
resources:
- name: headcount
path: /organizations/{department_id}/headcount
inputParameters:
- name: department_id
in: path
operations:
- name: get-headcount
method: GET
- namespace: snowflake-hr
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: headcount
path: /statements
operations:
- name: insert-headcount
method: POST
Launches a targeted Amex Offers campaign by querying eligible cardholders in Snowflake, creating the offer in the offers platform, and triggering email notifications via Adobe Campaign.
naftiko: '0.5'
info:
label: Amex Offer Activation Campaign
description: Launches a targeted Amex Offers campaign by querying eligible cardholders in Snowflake, creating the offer in the offers platform, and triggering email notifications via Adobe Campaign.
tags:
- offers
- marketing
- snowflake
- adobe-campaign
capability:
exposes:
- type: mcp
namespace: offer-campaigns
port: 8080
tools:
- name: launch-offer-campaign
description: Find eligible cardholders, create an offer, and trigger the email campaign. Use when launching a new Amex Offers promotion.
inputParameters:
- name: offer_name
in: body
type: string
description: Name of the Amex Offer.
- name: merchant_id
in: body
type: string
description: Participating merchant ID.
- name: discount_percent
in: body
type: string
description: Discount percentage.
- name: target_segment
in: body
type: string
description: Target cardholder segment.
- name: campaign_template_id
in: body
type: string
description: Adobe Campaign template ID.
steps:
- name: find-eligible
type: call
call: snowflake.run-query
with:
query: SELECT account_id FROM MARKETING_DB.PUBLIC.CARDHOLDER_SEGMENTS WHERE segment='{{target_segment}}' AND eligible=TRUE
- name: create-offer
type: call
call: amex-offers.create-offer
with:
name: '{{offer_name}}'
merchant_id: '{{merchant_id}}'
discount: '{{discount_percent}}'
segment: '{{target_segment}}'
- name: trigger-emails
type: call
call: adobe-campaign.trigger-campaign
with:
campaign_id: '{{campaign_template_id}}'
offer_id: '{{create-offer.offer_id}}'
audience_count: '{{find-eligible.row_count}}'
consumes:
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: amex-offers
type: http
baseUri: https://api.americanexpress.com/v1/offers
authentication:
type: bearer
token: $secrets.amex_offers_token
resources:
- name: offers
path: /offers
operations:
- name: create-offer
method: POST
- namespace: adobe-campaign
type: http
baseUri: https://mc.adobe.io/americanexpress/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: trigger-campaign
method: POST
Generates a campaign ROI report by pulling performance data from Google Analytics, enriching with spend data from Snowflake, and distributing via email.
naftiko: '0.5'
info:
label: Google Analytics Campaign ROI Report
description: Generates a campaign ROI report by pulling performance data from Google Analytics, enriching with spend data from Snowflake, and distributing via email.
tags:
- google-analytics
- marketing
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: campaign-roi
port: 8080
tools:
- name: generate-roi-report
description: Pull campaign performance, enrich with spend data, and distribute. Use for periodic campaign reporting.
inputParameters:
- name: ga_property_id
in: body
type: string
description: Google Analytics property ID.
- name: date_range
in: body
type: string
description: Date range for the report.
steps:
- name: get-performance
type: call
call: google-analytics.run-report
with:
property_id: '{{ga_property_id}}'
dateRange: '{{date_range}}'
- name: get-spend
type: call
call: snowflake.run-query
with:
query: SELECT SUM(spend) as total_spend FROM MARKETING_DB.PUBLIC.CAMPAIGN_SPEND WHERE date_range='{{date_range}}'
- name: distribute
type: call
call: email.send-email
with:
to: marketing-leadership@americanexpress.com
subject: Campaign ROI Report — {{date_range}}
body: 'Sessions: {{get-performance.totals.sessions}}. Conversions: {{get-performance.totals.conversions}}. Revenue: ${{get-performance.totals.revenue}}. Spend: ${{get-spend.total_spend}}.'
consumes:
- namespace: google-analytics
type: http
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
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Pulls approved corporate card transactions from SAP Concur and posts summarized expense entries to SAP S/4HANA for financial reconciliation.
naftiko: '0.5'
info:
label: Corporate Card Expense Report Sync
description: Pulls approved corporate card transactions from SAP Concur and posts summarized expense entries to SAP S/4HANA for financial reconciliation.
tags:
- finance
- expense-management
- sap-concur
- sap-s4hana
- reconciliation
capability:
exposes:
- type: mcp
namespace: expense-finance
port: 8080
tools:
- name: sync-expense-report
description: Given a Concur expense report ID, fetch the approved report and post each line item as a journal entry in SAP S/4HANA. Use when corporate card expenses need to be reconciled in the general ledger.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID to sync.
- name: company_code
in: body
type: string
description: The SAP S/4HANA company code for posting journal entries (e.g., 1000).
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: post-journal
type: call
call: s4hana.post-journal-entry
with:
company_code: '{{company_code}}'
amount: '{{get-report.total_amount}}'
currency: '{{get-report.currency_code}}'
cost_center: '{{get-report.cost_center}}'
reference: '{{report_id}}'
consumes:
- namespace: concur
type: http
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_access_token
resources:
- name: expense-report
path: /expense/reports/{report_id}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- namespace: s4hana
type: http
baseUri: https://americanexpress-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
authentication:
type: basic
username: $secrets.s4hana_user
password: $secrets.s4hana_password
resources:
- name: journal-entry
path: /JournalEntryItemBasic
operations:
- name: post-journal-entry
method: POST
Retrieves a compliance document from SharePoint, submits it to Anthropic Claude for key obligation extraction, and posts the summary to the Legal & Compliance Teams channel.
naftiko: '0.5'
info:
label: Regulatory Compliance Document Summarization
description: Retrieves a compliance document from SharePoint, submits it to Anthropic Claude for key obligation extraction, and posts the summary to the Legal & Compliance Teams channel.
tags:
- compliance
- legal
- sharepoint
- anthropic
- ai
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-ai
port: 8080
tools:
- name: summarize-compliance-doc
description: Given a SharePoint document site ID and file path, retrieve the document, send it to Anthropic Claude to extract key regulatory obligations and risk items, and post the summary to a Teams channel. Use when legal or compliance teams need rapid document triage.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID where the compliance document is stored.
- name: file_path
in: body
type: string
description: The relative file path of the document within the SharePoint site.
- name: teams_channel_id
in: body
type: string
description: The Microsoft Teams channel ID to post the summary to.
steps:
- name: get-document
type: call
call: sharepoint.get-file-content
with:
site_id: '{{site_id}}'
file_path: '{{file_path}}'
- name: extract-obligations
type: call
call: anthropic.create-message
with:
model: claude-opus-4-5
prompt: 'You are a regulatory compliance analyst. Extract and list: (1) key obligations, (2) compliance deadlines, (3) risk areas from this document. Be concise. Document: {{get-document.content}}'
- name: post-to-teams
type: call
call: msteams-compliance.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
content: 'Compliance Summary for {{file_path}}:
{{extract-obligations.content}}'
consumes:
- namespace: sharepoint
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: file-content
path: /sites/{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
- 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
- namespace: msteams-compliance
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-message
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Provisions corporate cards in bulk by reading employee data from Workday, creating card accounts, and sending activation instructions via email.
naftiko: '0.5'
info:
label: Corporate Card Bulk Provisioning
description: Provisions corporate cards in bulk by reading employee data from Workday, creating card accounts, and sending activation instructions via email.
tags:
- corporate
- cards
- workday
- onboarding
capability:
exposes:
- type: mcp
namespace: bulk-provision
port: 8080
tools:
- name: bulk-provision-cards
description: Provision corporate cards for a department by pulling employees from Workday and creating card accounts. Use during new department onboarding.
inputParameters:
- name: department
in: body
type: string
description: Department name.
- name: card_program
in: body
type: string
description: Corporate card program ID.
- name: spending_limit
in: body
type: string
description: Default spending limit.
- name: distribution_list
in: body
type: string
description: Distribution list email.
steps:
- name: get-employees
type: call
call: workday.get-workers
with:
department: '{{department}}'
status: active
- name: provision-cards
type: call
call: amex-corporate.bulk-provision
with:
employees: '{{get-employees.workers}}'
card_program: '{{card_program}}'
spending_limit: '{{spending_limit}}'
- name: send-instructions
type: call
call: email.send-email
with:
to: '{{distribution_list}}'
subject: Corporate Amex cards provisioned
body: '{{provision-cards.provisioned_count}} cards provisioned for {{department}}. Employees will receive activation instructions individually.'
consumes:
- namespace: workday
type: http
baseUri: https://wd3-impl-services1.workday.com/ccx/service/amex
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers
operations:
- name: get-workers
method: GET
- namespace: amex-corporate
type: http
baseUri: https://api.americanexpress.com/v1/corporate
authentication:
type: bearer
token: $secrets.amex_corporate_token
resources:
- name: cards
path: /cards/bulk-provision
operations:
- name: bulk-provision
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Monitors Bloomberg market data feeds for significant movements, creates an alert in ServiceNow, and notifies the trading desk via Slack with context from Snowflake analytics.
naftiko: '0.5'
info:
label: Bloomberg Market Data Alert Workflow
description: Monitors Bloomberg market data feeds for significant movements, creates an alert in ServiceNow, and notifies the trading desk via Slack with context from Snowflake analytics.
tags:
- bloomberg
- market-data
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: market-alerts
port: 8080
tools:
- name: process-market-alert
description: Process a market data movement by calculating exposure, creating an incident, and alerting the desk. Use when Bloomberg detects significant price movements.
inputParameters:
- name: dataset
in: body
type: string
description: Bloomberg dataset identifier.
- name: securities
in: body
type: string
description: Comma-separated security identifiers.
steps:
- name: get-data
type: call
call: bloomberg.get-market-data
with:
dataset: '{{dataset}}'
securities: '{{securities}}'
- name: get-exposure
type: call
call: snowflake.run-query
with:
query: SELECT SUM(notional) as exposure FROM TREASURY_DB.PUBLIC.POSITIONS WHERE security IN ('{{securities}}')
- name: create-alert
type: call
call: servicenow.create-incident
with:
short_description: 'Market movement alert: {{securities}}'
category: market-risk
description: 'Movement: {{get-data.change_pct}}%. Exposure: ${{get-exposure.exposure}}.'
- name: notify-desk
type: call
call: slack.post-message
with:
channel: trading-desk
text: 'Market alert: {{securities}} moved {{get-data.change_pct}}%. Our exposure: ${{get-exposure.exposure}}. SNOW: {{create-alert.number}}'
consumes:
- namespace: bloomberg
type: http
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: data
path: /data/{dataset}
inputParameters:
- name: dataset
in: path
operations:
- name: get-market-data
method: GET
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Salesforce opportunity for a new corporate card program is marked Closed-Won, creates the program account in the corporate card platform and sends confirmation to the sales rep via email.
naftiko: '0.5'
info:
label: Salesforce Opportunity to Card Program Sync
description: When a Salesforce opportunity for a new corporate card program is marked Closed-Won, creates the program account in the corporate card platform and sends confirmation to the sales rep via email.
tags:
- sales
- crm
- salesforce
- payments
- corporate-cards
capability:
exposes:
- type: mcp
namespace: sales-card-sync
port: 8080
tools:
- name: activate-card-program
description: Given a Salesforce opportunity ID for a closed-won corporate card program deal, retrieve opportunity details, create the card program account, and notify the responsible sales representative. Use when a B2B card program deal is won and needs activation.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID for the closed-won card program.
steps:
- name: get-opportunity
type: call
call: salesforce-crm.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-program
type: call
call: amex-programs.create-program
with:
company_name: '{{get-opportunity.account_name}}'
credit_limit: '{{get-opportunity.amount}}'
billing_contact_email: '{{get-opportunity.billing_email}}'
program_type: corporate_card
- name: notify-rep
type: call
call: salesforce-email.send-email
with:
to: '{{get-opportunity.owner_email}}'
subject: Card program activated for {{get-opportunity.account_name}}
body: 'The corporate card program for {{get-opportunity.account_name}} has been activated. Program ID: {{create-program.program_id}}.'
consumes:
- namespace: salesforce-crm
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: opportunity
path: /sobjects/Opportunity/{opportunity_id}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- namespace: amex-programs
type: http
baseUri: https://api.americanexpress.com/v1/corporate
authentication:
type: bearer
token: $secrets.amex_corp_token
resources:
- name: program
path: /programs
operations:
- name: create-program
method: POST
- namespace: salesforce-email
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: email
path: /actions/standard/emailSimple
operations:
- name: send-email
method: POST
Recovers from a Snowflake data pipeline failure by checking pipeline status, retrying the failed task, creating a ServiceNow incident, and notifying the data engineering team via Slack.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Failure Recovery
description: Recovers from a Snowflake data pipeline failure by checking pipeline status, retrying the failed task, creating a ServiceNow incident, and notifying the data engineering team via Slack.
tags:
- snowflake
- data-engineering
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: pipeline-recovery
port: 8080
tools:
- name: recover-pipeline
description: Check a failed Snowflake pipeline, retry execution, create an incident, and notify the team. Use when a data pipeline task fails.
inputParameters:
- name: task_name
in: body
type: string
description: Snowflake task name.
steps:
- name: check-status
type: call
call: snowflake.run-query
with:
query: SELECT * FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY()) WHERE NAME='{{task_name}}' AND STATE='FAILED' ORDER BY SCHEDULED_TIME DESC LIMIT 1
- name: retry-task
type: call
call: snowflake.run-query
with:
query: EXECUTE TASK {{task_name}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Snowflake pipeline failure: {{task_name}}'
category: data-engineering
priority: '2'
description: 'Task {{task_name}} failed. Error: {{check-status.error_message}}. Retry initiated.'
- name: notify-team
type: call
call: slack.post-message
with:
channel: data-engineering
text: 'Pipeline failure: {{task_name}}. Error: {{check-status.error_message}}. Retry initiated. SNOW: {{create-incident.number}}'
consumes:
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Performs merchant risk assessment by aggregating transaction data from Snowflake, running a risk model, updating the merchant profile in Salesforce, and filing findings in ServiceNow.
naftiko: '0.5'
info:
label: Merchant Risk Assessment Workflow
description: Performs merchant risk assessment by aggregating transaction data from Snowflake, running a risk model, updating the merchant profile in Salesforce, and filing findings in ServiceNow.
tags:
- merchants
- risk
- snowflake
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: merchant-risk
port: 8080
tools:
- name: assess-merchant-risk
description: Assess merchant risk by analyzing transaction patterns and scoring. Use during periodic merchant risk reviews.
inputParameters:
- name: merchant_id
in: body
type: string
description: Merchant ID.
- name: sf_account_id
in: body
type: string
description: Salesforce account ID.
steps:
- name: get-txn-data
type: call
call: snowflake.run-query
with:
query: SELECT AVG(amount) as avg_txn, COUNT(*) as txn_count, SUM(chargeback_amount) as cb_total FROM MERCHANT_DB.PUBLIC.TRANSACTIONS WHERE merchant_id='{{merchant_id}}' AND date >= DATEADD(month, -6, CURRENT_DATE())
- name: score
type: call
call: amex-risk.score-merchant
with:
merchant_id: '{{merchant_id}}'
avg_transaction: '{{get-txn-data.avg_txn}}'
chargeback_total: '{{get-txn-data.cb_total}}'
- name: update-sf
type: call
call: salesforce.update-account
with:
account_id: '{{sf_account_id}}'
Risk_Score__c: '{{score.risk_score}}'
Last_Assessment__c: '{{score.assessment_date}}'
- name: file-findings
type: call
call: servicenow.create-case
with:
short_description: Merchant risk assessment — {{merchant_id}}
description: 'Risk score: {{score.risk_score}}. Avg txn: ${{get-txn-data.avg_txn}}. Chargeback total: ${{get-txn-data.cb_total}}.'
consumes:
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: amex-risk
type: http
baseUri: https://api.americanexpress.com/v1/risk
authentication:
type: bearer
token: $secrets.amex_risk_token
resources:
- name: merchant-risk
path: /merchants/score
operations:
- name: score-merchant
method: POST
- namespace: salesforce
type: http
baseUri: https://americanexpress.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
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cases
path: /table/sn_risk_case
operations:
- name: create-case
method: POST
Generates personalized spending insights for a cardholder by analyzing spend categories in Snowflake, creating a visual in Tableau, and delivering via email.
naftiko: '0.5'
info:
label: Cardholder Spend Category Insights Digest
description: Generates personalized spending insights for a cardholder by analyzing spend categories in Snowflake, creating a visual in Tableau, and delivering via email.
tags:
- cardholder
- analytics
- snowflake
- tableau
- personalization
capability:
exposes:
- type: mcp
namespace: spend-insights
port: 8080
tools:
- name: generate-spend-insights
description: Analyze spending patterns and deliver a personalized insights digest. Use for monthly cardholder engagement.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: month
in: body
type: string
description: Month for insights (e.g. 2026-03).
- name: cardholder_email
in: body
type: string
description: Cardholder email.
steps:
- name: analyze-spend
type: call
call: snowflake.run-query
with:
query: SELECT category, SUM(amount) as total FROM CARDHOLDER_DB.PUBLIC.TRANSACTIONS WHERE account_id='{{account_id}}' AND month='{{month}}' GROUP BY category ORDER BY total DESC LIMIT 5
- name: generate-visual
type: call
call: tableau.get-view-image
with:
site_id: $secrets.tableau_site_id
view_id: $secrets.spend_insights_view_id
- name: deliver
type: call
call: email.send-email
with:
to: '{{cardholder_email}}'
subject: Your {{month}} Spending Insights
body: Your top category was {{analyze-spend.results[0].category}} at ${{analyze-spend.results[0].total}}.
consumes:
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: tableau
type: http
baseUri: https://americanexpress.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/{site_id}/views/{view_id}/image
inputParameters:
- name: site_id
in: path
- name: view_id
in: path
operations:
- name: get-view-image
method: GET
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Fetches real-time currency exchange rates from the Amex FX service for a given currency pair.
naftiko: '0.5'
info:
label: Currency Exchange Rate Lookup
description: Fetches real-time currency exchange rates from the Amex FX service for a given currency pair.
tags:
- payments
- forex
- data
capability:
exposes:
- type: mcp
namespace: amex-fx
port: 8080
tools:
- name: get-exchange-rate
description: Given base and target currencies, return the current exchange rate, spread, and timestamp. Use when processing international transactions or quoting FX rates.
inputParameters:
- name: base_currency
in: body
type: string
description: The base currency code (e.g. USD).
- name: target_currency
in: body
type: string
description: The target currency code (e.g. EUR).
call: amex-fx.get-exchange-rate
with:
base_currency: '{{base_currency}}'
target_currency: '{{target_currency}}'
outputParameters:
- name: rate
type: number
mapping: $.rate
- name: spread
type: number
mapping: $.spread
- name: timestamp
type: string
mapping: $.timestamp
consumes:
- namespace: amex-fx
type: http
baseUri: https://api.americanexpress.com/v1/fx
authentication:
type: bearer
token: $secrets.amex_fx_token
resources:
- name: rates
path: /rates/{base_currency}/{target_currency}
inputParameters:
- name: base_currency
in: path
- name: target_currency
in: path
operations:
- name: get-exchange-rate
method: GET
Verifies a cardholder's lounge access entitlement based on card product and returns nearby eligible lounges for a given airport.
naftiko: '0.5'
info:
label: Global Lounge Access Lookup
description: Verifies a cardholder's lounge access entitlement based on card product and returns nearby eligible lounges for a given airport.
tags:
- travel
- cardholder
- lounges
capability:
exposes:
- type: mcp
namespace: amex-lounges
port: 8080
tools:
- name: get-lounge-access
description: Given a card product and airport code, return lounge eligibility and available lounges. Use when a cardholder asks about airport lounge access.
inputParameters:
- name: airport_code
in: body
type: string
description: The IATA airport code.
- name: card_product
in: body
type: string
description: The card product identifier.
call: amex-lounges.get-lounge-access
with:
airport_code: '{{airport_code}}'
card_product: '{{card_product}}'
outputParameters:
- name: eligible
type: boolean
mapping: $.eligible
- name: lounges
type: array
mapping: $.lounges
- name: pass_type
type: string
mapping: $.pass_type
consumes:
- namespace: amex-lounges
type: http
baseUri: https://api.americanexpress.com/v1/lounges
authentication:
type: bearer
token: $secrets.amex_lounges_token
resources:
- name: access
path: /cards/{card_product}/airports/{airport_code}/lounges
inputParameters:
- name: airport_code
in: path
- name: card_product
in: path
operations:
- name: get-lounge-access
method: GET
Retrieves the spending limits and current utilization for a corporate card account.
naftiko: '0.5'
info:
label: Corporate Card Spending Limit Lookup
description: Retrieves the spending limits and current utilization for a corporate card account.
tags:
- corporate
- payments
- accounts
capability:
exposes:
- type: mcp
namespace: amex-corporate
port: 8080
tools:
- name: get-spending-limit
description: Given a corporate card ID, return the monthly spending limit, current utilization, and remaining balance. Use when checking corporate card spending capacity.
inputParameters:
- name: card_id
in: body
type: string
description: The corporate card ID.
call: amex-corporate.get-spending-limit
with:
card_id: '{{card_id}}'
outputParameters:
- name: monthly_limit
type: number
mapping: $.monthly_limit
- name: utilized
type: number
mapping: $.utilized
- name: remaining
type: number
mapping: $.remaining
consumes:
- namespace: amex-corporate
type: http
baseUri: https://api.americanexpress.com/v1/corporate
authentication:
type: bearer
token: $secrets.amex_corporate_token
resources:
- name: spending-limits
path: /cards/{card_id}/spending-limits
inputParameters:
- name: card_id
in: path
operations:
- name: get-spending-limit
method: GET
Generates a conversion funnel report from Adobe Analytics, stores results in Snowflake, and distributes findings via Slack and email to the product team.
naftiko: '0.5'
info:
label: Adobe Analytics Conversion Funnel Report
description: Generates a conversion funnel report from Adobe Analytics, stores results in Snowflake, and distributes findings via Slack and email to the product team.
tags:
- adobe-analytics
- analytics
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: funnel-report
port: 8080
tools:
- name: generate-funnel-report
description: Generate a conversion funnel report and distribute to stakeholders. Use for periodic product analytics reviews.
inputParameters:
- name: report_suite_id
in: body
type: string
description: Adobe Analytics report suite ID.
steps:
- name: run-funnel
type: call
call: adobe-analytics.run-report
with:
rsid: '{{report_suite_id}}'
dimension: evar1
metrics: visits,applications,approvals
- name: store-results
type: call
call: snowflake.run-query
with:
query: INSERT INTO ANALYTICS_DB.PUBLIC.FUNNEL_REPORTS VALUES ('{{report_suite_id}}', {{run-funnel.visits}}, {{run-funnel.applications}}, {{run-funnel.approvals}}, CURRENT_TIMESTAMP())
- name: post-summary
type: call
call: slack.post-message
with:
channel: product-analytics
text: 'Funnel: Visits={{run-funnel.visits}} > Applications={{run-funnel.applications}} > Approvals={{run-funnel.approvals}}'
consumes:
- namespace: adobe-analytics
type: http
baseUri: https://analytics.adobe.io/api/americanexpress/reports
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /ranked
operations:
- name: run-report
method: POST
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves the list of supplementary cards associated with a primary cardholder account.
naftiko: '0.5'
info:
label: Supplementary Card List Lookup
description: Retrieves the list of supplementary cards associated with a primary cardholder account.
tags:
- cardholder
- accounts
- cards
capability:
exposes:
- type: mcp
namespace: amex-accounts
port: 8080
tools:
- name: get-supplementary-cards
description: Given a primary cardholder account ID, return all supplementary cards with their status and holder names. Use when managing additional cards on an account.
inputParameters:
- name: account_id
in: body
type: string
description: The primary cardholder account ID.
call: amex-accounts.get-supplementary-cards
with:
account_id: '{{account_id}}'
outputParameters:
- name: cards
type: array
mapping: $.cards
- name: total_count
type: number
mapping: $.total_count
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: supplementary-cards
path: /accounts/{account_id}/supplementary-cards
inputParameters:
- name: account_id
in: path
operations:
- name: get-supplementary-cards
method: GET
Identifies underutilized Azure resources by querying cost data, creates a Jira ticket for the cloud team, and posts a summary to Slack.
naftiko: '0.5'
info:
label: Azure Resource Cost Optimization Alert
description: Identifies underutilized Azure resources by querying cost data, creates a Jira ticket for the cloud team, and posts a summary to Slack.
tags:
- cloud
- azure
- finops
- jira
- slack
capability:
exposes:
- type: mcp
namespace: azure-finops
port: 8080
tools:
- name: alert-cost-optimization
description: Query Azure costs, create a remediation ticket, and alert the FinOps team. Use when Azure cost thresholds are breached.
inputParameters:
- name: subscription_id
in: body
type: string
description: Azure subscription ID.
steps:
- name: query-costs
type: call
call: azure.query-costs
with:
subscription_id: '{{subscription_id}}'
timeframe: MonthToDate
type: Usage
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: CLOUD
issuetype: Task
summary: Azure cost optimization — ${{query-costs.total_cost}}
description: 'Subscription: {{subscription_id}}. Total MTD: ${{query-costs.total_cost}}. Top resource: {{query-costs.top_resource}}.'
- name: post-summary
type: call
call: slack.post-message
with:
channel: cloud-finops
text: 'Azure cost alert: ${{query-costs.total_cost}} MTD for subscription {{subscription_id}}. Top resource: {{query-costs.top_resource}}. Jira: {{create-ticket.key}}'
consumes:
- namespace: azure
type: http
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: cost
path: /subscriptions/{subscription_id}/providers/Microsoft.CostManagement/query
inputParameters:
- name: subscription_id
in: path
operations:
- name: query-costs
method: POST
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Evaluates a cardholder's spend history to determine annual fee waiver eligibility, creates a decision record, and sends the outcome notification.
naftiko: '0.5'
info:
label: Cardholder Annual Fee Waiver Evaluation
description: Evaluates a cardholder's spend history to determine annual fee waiver eligibility, creates a decision record, and sends the outcome notification.
tags:
- cardholder
- billing
- retention
- salesforce
capability:
exposes:
- type: mcp
namespace: fee-waiver
port: 8080
tools:
- name: evaluate-fee-waiver
description: Evaluate fee waiver eligibility based on spend history, record the decision, and notify the cardholder. Use when a cardholder requests an annual fee waiver.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: cardholder_email
in: body
type: string
description: Cardholder email.
steps:
- name: get-spend
type: call
call: amex-accounts.get-spend-summary
with:
account_id: '{{account_id}}'
- name: create-decision
type: call
call: salesforce.create-case
with:
Subject: Fee waiver evaluation — {{account_id}}
Description: 'Annual spend: ${{get-spend.annual_spend}}. Tenure: {{get-spend.tenure_years}} years.'
Type: Fee Waiver
- name: send-outcome
type: call
call: email.send-email
with:
to: '{{cardholder_email}}'
subject: Annual Fee Review Complete
body: 'Based on your ${{get-spend.annual_spend}} annual spend and {{get-spend.tenure_years}} year membership, your fee waiver decision has been recorded. Reference: {{create-decision.id}}'
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: spend-summary
path: /accounts/{account_id}/spend-summary
inputParameters:
- name: account_id
in: path
operations:
- name: get-spend-summary
method: GET
- namespace: salesforce
type: http
baseUri: https://americanexpress.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
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
When a Datadog monitor detects payment network latency breaching SLA thresholds, creates a PagerDuty critical incident, updates a ServiceNow major incident, and posts a status update to the executive Slack channel.
naftiko: '0.5'
info:
label: Payment Network Incident Escalation
description: When a Datadog monitor detects payment network latency breaching SLA thresholds, creates a PagerDuty critical incident, updates a ServiceNow major incident, and posts a status update to the executive Slack channel.
tags:
- payments
- sla
- datadog
- pagerduty
- servicenow
- incident-response
capability:
exposes:
- type: mcp
namespace: network-incident
port: 8080
tools:
- name: escalate-network-incident
description: Given a Datadog monitor ID and affected payment network segment, retrieve monitor state, create a critical PagerDuty incident, open a ServiceNow major incident, and post an executive Slack alert. Use when payment network SLAs are breached.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID for the payment network SLA check.
- name: network_segment
in: body
type: string
description: The affected payment network segment (e.g., card-auth, settlement).
- name: latency_p99_ms
in: body
type: number
description: The measured P99 latency in milliseconds that breached SLA.
steps:
- name: get-monitor-state
type: call
call: datadog-network.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-pd-critical
type: call
call: pagerduty-network.create-incident
with:
title: 'CRITICAL: Payment network SLA breach — {{network_segment}}'
service_id: $secrets.pagerduty_network_service_id
urgency: high
body: 'Segment: {{network_segment}} | P99: {{latency_p99_ms}}ms | Monitor: {{monitor_id}}'
- name: open-major-incident
type: call
call: servicenow-network.create-incident
with:
category: network
subcategory: payment_processing
short_description: 'Payment network SLA breach: {{network_segment}} P99={{latency_p99_ms}}ms'
urgency: '1'
impact: '1'
severity: '1'
- name: post-executive-alert
type: call
call: slack-executive.post-message
with:
channel: exec-alerts
text: 'CRITICAL | Payment Network | Segment: {{network_segment}} | P99 Latency: {{latency_p99_ms}}ms | PagerDuty: {{create-pd-critical.incident_number}} | SNOW: {{open-major-incident.number}}'
consumes:
- namespace: datadog-network
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: monitor
path: /monitor/{monitor_id}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- namespace: pagerduty-network
type: http
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_api_key
placement: header
resources:
- name: incident
path: /incidents
operations:
- name: create-incident
method: POST
- namespace: servicenow-network
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incident
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: slack-executive
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When GitHub Dependabot raises a critical vulnerability alert on an American Express repository, opens a Jira security issue and sends a Slack notification to the AppSec team.
naftiko: '0.5'
info:
label: GitHub Security Vulnerability Triage
description: When GitHub Dependabot raises a critical vulnerability alert on an American Express repository, opens a Jira security issue and sends a Slack notification to the AppSec team.
tags:
- security
- devops
- github
- jira
- slack
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: appsec-triage
port: 8080
tools:
- name: triage-vulnerability-alert
description: Given a GitHub repository and Dependabot alert number, retrieve alert details, open a Jira security issue, and notify the AppSec Slack channel. Use when a critical or high severity Dependabot alert is raised.
inputParameters:
- name: repo_owner
in: body
type: string
description: The GitHub organization or owner of the repository (e.g., americanexpress).
- name: repo_name
in: body
type: string
description: The name of the GitHub repository with the vulnerability.
- name: alert_number
in: body
type: integer
description: The Dependabot alert number from GitHub.
steps:
- name: get-alert
type: call
call: github.get-dependabot-alert
with:
owner: '{{repo_owner}}'
repo: '{{repo_name}}'
alert_number: '{{alert_number}}'
- name: create-security-issue
type: call
call: jira-security.create-issue
with:
project_key: SEC
issuetype: Security Vulnerability
summary: '[Dependabot] {{get-alert.dependency_name}} {{get-alert.severity}} in {{repo_name}}'
description: 'CVE: {{get-alert.cve_id}}
Package: {{get-alert.dependency_name}}
Severity: {{get-alert.severity}}
Repo: {{repo_owner}}/{{repo_name}}
Alert: {{alert_number}}
Fixed version: {{get-alert.fixed_version}}'
- name: notify-appsec
type: call
call: slack-appsec.post-message
with:
channel: appsec-alerts
text: 'Vulnerability Alert | Repo: {{repo_owner}}/{{repo_name}} | Package: {{get-alert.dependency_name}} | Severity: {{get-alert.severity}} | CVE: {{get-alert.cve_id}} | Jira: {{create-security-issue.key}}'
consumes:
- namespace: github
type: http
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: dependabot-alert
path: /repos/{owner}/{repo}/dependabot/alerts/{alert_number}
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: alert_number
in: path
operations:
- name: get-dependabot-alert
method: GET
- namespace: jira-security
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack-appsec
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Evaluates a cardholder's credit limit increase request by pulling account history, running a risk score, creating a Jira review task, and notifying the cardholder via SMS.
naftiko: '0.5'
info:
label: Cardholder Credit Limit Increase Review
description: Evaluates a cardholder's credit limit increase request by pulling account history, running a risk score, creating a Jira review task, and notifying the cardholder via SMS.
tags:
- cardholder
- credit
- risk
- jira
capability:
exposes:
- type: mcp
namespace: cli-review
port: 8080
tools:
- name: review-cli-request
description: Evaluate a credit limit increase request by checking account history, scoring risk, and creating a review task. Use when a cardholder requests a credit limit increase.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: requested_amount
in: body
type: string
description: Requested credit limit increase amount.
steps:
- name: get-account
type: call
call: amex-accounts.get-account
with:
account_id: '{{account_id}}'
- name: risk-score
type: call
call: amex-risk.get-risk-score
with:
account_id: '{{account_id}}'
requested_increase: '{{requested_amount}}'
- name: create-review
type: call
call: jira.create-issue
with:
project_key: CLR
issuetype: Task
summary: CLI review — {{account_id}} risk={{risk-score.score}}
description: 'Requested: ${{requested_amount}}. Current limit: ${{get-account.credit_limit}}. Risk score: {{risk-score.score}}.'
- name: notify-cardholder
type: call
call: amex-sms.send-sms
with:
phone: '{{get-account.phone}}'
message: 'Your credit limit increase request is under review. Reference: {{create-review.key}}'
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: account
path: /accounts/{account_id}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- namespace: amex-risk
type: http
baseUri: https://api.americanexpress.com/v1/risk
authentication:
type: bearer
token: $secrets.amex_risk_token
resources:
- name: scoring
path: /score
operations:
- name: get-risk-score
method: POST
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: amex-sms
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: sms
path: /sms/send
operations:
- name: send-sms
method: POST
Synchronizes cardholder benefits enrollment by fetching card product details, enrolling the cardholder in benefits, and confirming via push notification.
naftiko: '0.5'
info:
label: Cardholder Benefits Enrollment Sync
description: Synchronizes cardholder benefits enrollment by fetching card product details, enrolling the cardholder in benefits, and confirming via push notification.
tags:
- cardholder
- benefits
- enrollment
- notifications
capability:
exposes:
- type: mcp
namespace: benefits-sync
port: 8080
tools:
- name: sync-benefits
description: Enroll a cardholder in their card product benefits and confirm activation. Use when a new card is activated or a product upgrade occurs.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: product_id
in: body
type: string
description: Card product ID.
steps:
- name: get-product
type: call
call: amex-products.get-product
with:
product_id: '{{product_id}}'
- name: enroll-benefits
type: call
call: amex-benefits.enroll
with:
account_id: '{{account_id}}'
benefits: '{{get-product.included_benefits}}'
- name: confirm
type: call
call: amex-push.send-push
with:
account_id: '{{account_id}}'
title: Benefits activated
body: Your {{get-product.name}} benefits are now active. {{enroll-benefits.benefit_count}} benefits enrolled.
consumes:
- namespace: amex-products
type: http
baseUri: https://api.americanexpress.com/v1/products
authentication:
type: bearer
token: $secrets.amex_products_token
resources:
- name: products
path: /products/{product_id}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
- namespace: amex-benefits
type: http
baseUri: https://api.americanexpress.com/v1/benefits
authentication:
type: bearer
token: $secrets.amex_benefits_token
resources:
- name: enrollment
path: /enrollment
operations:
- name: enroll
method: POST
- namespace: amex-push
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: push
path: /push/send
operations:
- name: send-push
method: POST
Processes a cardholder account closure by verifying zero balance, closing the account, archiving data to S3, and sending a confirmation letter via DocuSign.
naftiko: '0.5'
info:
label: Cardholder Account Closure Workflow
description: Processes a cardholder account closure by verifying zero balance, closing the account, archiving data to S3, and sending a confirmation letter via DocuSign.
tags:
- cardholder
- accounts
- s3
- docusign
capability:
exposes:
- type: mcp
namespace: account-closure
port: 8080
tools:
- name: close-account
description: Close a cardholder account, archive data, and send confirmation. Use when a cardholder requests account closure.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: closure_reason
in: body
type: string
description: Reason for closure.
- name: cardholder_email
in: body
type: string
description: Cardholder email.
steps:
- name: verify-balance
type: call
call: amex-accounts.get-account
with:
account_id: '{{account_id}}'
- name: close
type: call
call: amex-accounts.close-account
with:
account_id: '{{account_id}}'
reason: '{{closure_reason}}'
- name: archive
type: call
call: s3.upload-archive
with:
account_id: '{{account_id}}'
data: '{{close.archive_payload}}'
- name: send-letter
type: call
call: docusign.send-envelope
with:
ds_account_id: $secrets.docusign_account_id
recipient_email: '{{cardholder_email}}'
template_id: $secrets.closure_template_id
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: account
path: /accounts/{account_id}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- name: close-account
method: POST
- namespace: s3
type: http
baseUri: https://s3.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_token
resources:
- name: objects
path: /amex-archive/{account_id}
inputParameters:
- name: account_id
in: path
operations:
- name: upload-archive
method: PUT
- namespace: docusign
type: http
baseUri: https://na4.docusign.net/restapi/v2.1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /accounts/{ds_account_id}/envelopes
inputParameters:
- name: ds_account_id
in: path
operations:
- name: send-envelope
method: POST
When a ServiceNow change request reaches the Approval state, retrieves the change details and notifies all relevant stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Management Notification
description: When a ServiceNow change request reaches the Approval state, retrieves the change details and notifies all relevant stakeholders via Microsoft Teams.
tags:
- itsm
- servicenow
- microsoft-teams
- change-management
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: notify-change-approvers
description: Given a ServiceNow change request number, retrieve change details and send a Teams notification to all listed approvers with context and an approval link. Use when change requests require stakeholder awareness and sign-off.
inputParameters:
- name: change_number
in: body
type: string
description: The ServiceNow change request number (e.g., CHG0012345).
- name: approver_upns
in: body
type: string
description: Comma-separated list of approver UPNs (email addresses) to notify.
steps:
- name: get-change
type: call
call: servicenow-chg.get-change
with:
number: '{{change_number}}'
- name: notify-team
type: call
call: msteams-change.post-channel-message
with:
channel_id: $secrets.teams_change_mgmt_channel_id
content: 'Change Request Pending Approval
CHG: {{change_number}}
Summary: {{get-change.short_description}}
Scheduled: {{get-change.start_date}}
Risk: {{get-change.risk}}
Approvers: {{approver_upns}}'
consumes:
- namespace: servicenow-chg
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change
path: /table/change_request
inputParameters:
- name: number
in: query
operations:
- name: get-change
method: GET
- namespace: msteams-change
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-message
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a fraud alert triggers, retrieves transaction details, creates a case in the fraud investigation system, suspends the card, and notifies the cardholder via push notification.
naftiko: '0.5'
info:
label: Fraud Alert Investigation Workflow
description: When a fraud alert triggers, retrieves transaction details, creates a case in the fraud investigation system, suspends the card, and notifies the cardholder via push notification.
tags:
- fraud
- security
- cardholder
- investigations
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: investigate-fraud-alert
description: Investigate a fraud alert by fetching details, creating a case, suspending the card, and notifying the cardholder. Use when a fraud detection alert fires.
inputParameters:
- name: alert_id
in: body
type: string
description: The fraud alert identifier.
steps:
- name: get-alert
type: call
call: amex-fraud.get-alert
with:
alert_id: '{{alert_id}}'
- name: create-case
type: call
call: amex-fraud.create-case
with:
alert_id: '{{alert_id}}'
amount: '{{get-alert.amount}}'
merchant: '{{get-alert.merchant_name}}'
card_id: '{{get-alert.card_id}}'
- name: suspend-card
type: call
call: amex-cards.suspend-card
with:
card_id: '{{get-alert.card_id}}'
- name: notify-cardholder
type: call
call: amex-push.send-push
with:
account_id: '{{get-alert.account_id}}'
title: Suspicious activity detected
body: 'A ${{get-alert.amount}} charge at {{get-alert.merchant_name}} was flagged. Your card has been temporarily suspended. Case: {{create-case.case_id}}'
consumes:
- namespace: amex-fraud
type: http
baseUri: https://api.americanexpress.com/v1/fraud
authentication:
type: bearer
token: $secrets.amex_fraud_token
resources:
- name: alerts
path: /alerts/{alert_id}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- name: cases
path: /cases
operations:
- name: create-case
method: POST
- namespace: amex-cards
type: http
baseUri: https://api.americanexpress.com/v1/cards
authentication:
type: bearer
token: $secrets.amex_cards_token
resources:
- name: card
path: /cards/{card_id}/suspend
inputParameters:
- name: card_id
in: path
operations:
- name: suspend-card
method: POST
- namespace: amex-push
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: push
path: /push/send
operations:
- name: send-push
method: POST
Retrieves the latest statement balance and minimum payment due for a cardholder account.
naftiko: '0.5'
info:
label: Cardholder Statement Balance Lookup
description: Retrieves the latest statement balance and minimum payment due for a cardholder account.
tags:
- payments
- cardholder
- billing
capability:
exposes:
- type: mcp
namespace: amex-billing
port: 8080
tools:
- name: get-statement-balance
description: Given a cardholder account ID, return the current statement balance, minimum payment due, and due date. Use when a representative needs billing information.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-billing.get-statement-balance
with:
account_id: '{{account_id}}'
outputParameters:
- name: statement_balance
type: number
mapping: $.statement_balance
- name: minimum_payment
type: number
mapping: $.minimum_payment
- name: due_date
type: string
mapping: $.due_date
consumes:
- namespace: amex-billing
type: http
baseUri: https://api.americanexpress.com/v1/billing
authentication:
type: bearer
token: $secrets.amex_billing_token
resources:
- name: statement
path: /accounts/{account_id}/statement
inputParameters:
- name: account_id
in: path
operations:
- name: get-statement-balance
method: GET
When Palo Alto Networks detects a blocked threat on the corporate network, retrieves the threat log entry and creates a ServiceNow security incident for the SOC team to review.
naftiko: '0.5'
info:
label: Palo Alto Networks Threat Block and Incident Log
description: When Palo Alto Networks detects a blocked threat on the corporate network, retrieves the threat log entry and creates a ServiceNow security incident for the SOC team to review.
tags:
- security
- palo-alto-networks
- servicenow
- threat-response
- network-security
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: log-network-threat
description: Given a Palo Alto Networks threat log entry ID, retrieve the threat details and create a ServiceNow security incident for SOC review. Use when automated threat blocking events require case tracking and analyst review.
inputParameters:
- name: threat_log_id
in: body
type: string
description: The Palo Alto Networks threat log entry ID.
- name: firewall_hostname
in: body
type: string
description: The hostname of the Palo Alto firewall that generated the log.
steps:
- name: get-threat-log
type: call
call: paloalto.get-threat-log
with:
log_id: '{{threat_log_id}}'
- name: create-soc-incident
type: call
call: servicenow-netsec.create-incident
with:
category: security
subcategory: network_threat
short_description: 'Network threat blocked by {{firewall_hostname}}: {{get-threat-log.threat_name}}'
description: 'Firewall: {{firewall_hostname}}
Threat: {{get-threat-log.threat_name}}
Severity: {{get-threat-log.severity}}
Source IP: {{get-threat-log.source_ip}}
Destination: {{get-threat-log.destination_ip}}
Action: {{get-threat-log.action}}'
urgency: '2'
consumes:
- namespace: paloalto
type: http
baseUri: https://panorama.americanexpress.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: threat-log
path: /Objects/Threats/{log_id}
inputParameters:
- name: log_id
in: path
operations:
- name: get-threat-log
method: GET
- namespace: servicenow-netsec
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incident
path: /table/incident
operations:
- name: create-incident
method: POST
Generates a quarterly revenue report for a merchant by querying Snowflake analytics, creating a Tableau extract refresh, and distributing the report via email.
naftiko: '0.5'
info:
label: Quarterly Merchant Revenue Report
description: Generates a quarterly revenue report for a merchant by querying Snowflake analytics, creating a Tableau extract refresh, and distributing the report via email.
tags:
- merchants
- analytics
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: merchant-reports
port: 8080
tools:
- name: generate-revenue-report
description: Generate a quarterly revenue report for a merchant using Snowflake data and Tableau visualization. Use at quarter end for merchant reporting.
inputParameters:
- name: merchant_id
in: body
type: string
description: Merchant ID for the report.
- name: quarter
in: body
type: string
description: Quarter identifier (e.g. Q1-2026).
- name: merchant_email
in: body
type: string
description: Merchant contact email.
- name: datasource_id
in: body
type: string
description: Tableau datasource ID.
steps:
- name: run-revenue-query
type: call
call: snowflake.run-query
with:
query: SELECT SUM(amount) as total_revenue, COUNT(*) as txn_count FROM MERCHANT_DB.PUBLIC.TRANSACTIONS WHERE merchant_id='{{merchant_id}}' AND quarter='{{quarter}}'
- name: refresh-tableau
type: call
call: tableau.refresh-extract
with:
site_id: $secrets.tableau_site_id
datasource_id: '{{datasource_id}}'
- name: send-report
type: call
call: email.send-email
with:
to: '{{merchant_email}}'
subject: Q{{quarter}} Revenue Report
body: 'Total revenue: ${{run-revenue-query.total_revenue}}. Transaction count: {{run-revenue-query.txn_count}}. Your Tableau dashboard has been refreshed.'
consumes:
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: tableau
type: http
baseUri: https://americanexpress.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: extracts
path: /sites/{site_id}/datasources/{datasource_id}/refresh
inputParameters:
- name: site_id
in: path
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
When a purchase order is submitted in SAP Ariba, retrieves PO details and creates a ServiceNow approval task for the appropriate budget owner.
naftiko: '0.5'
info:
label: Purchase Order Approval Workflow
description: When a purchase order is submitted in SAP Ariba, retrieves PO details and creates a ServiceNow approval task for the appropriate budget owner.
tags:
- procurement
- finance
- sap-ariba
- servicenow
- approval
capability:
exposes:
- type: mcp
namespace: procurement-approval
port: 8080
tools:
- name: route-po-for-approval
description: Given an SAP Ariba purchase order ID, retrieve PO details including amount and vendor, and create a ServiceNow approval task for the budget owner. Use when purchase orders above threshold require additional approval routing.
inputParameters:
- name: po_id
in: body
type: string
description: The SAP Ariba purchase order ID to route for approval.
- name: approver_email
in: body
type: string
description: The email address of the designated budget approver.
steps:
- name: get-po
type: call
call: ariba.get-purchase-order
with:
po_id: '{{po_id}}'
- name: create-approval
type: call
call: servicenow-procurement.create-task
with:
category: procurement_approval
short_description: 'PO approval required: {{po_id}} — ${{get-po.total_amount}} {{get-po.currency}}'
description: 'PO: {{po_id}}
Vendor: {{get-po.vendor_name}}
Amount: ${{get-po.total_amount}} {{get-po.currency}}
Line items: {{get-po.line_item_count}}
Requested by: {{get-po.requester_name}}'
assigned_to: '{{approver_email}}'
consumes:
- namespace: ariba
type: http
baseUri: https://openapi.ariba.com/api/purchase-orders/v1
authentication:
type: bearer
token: $secrets.ariba_access_token
resources:
- name: purchase-order
path: /purchaseOrders/{po_id}
inputParameters:
- name: po_id
in: path
operations:
- name: get-purchase-order
method: GET
- namespace: servicenow-procurement
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: task
path: /table/sc_task
operations:
- name: create-task
method: POST
Retrieves the weekly SLO compliance summary from Datadog across all payment processing services and posts a structured digest to the engineering Slack channel.
naftiko: '0.5'
info:
label: Datadog SLO Breach Weekly Digest
description: Retrieves the weekly SLO compliance summary from Datadog across all payment processing services and posts a structured digest to the engineering Slack channel.
tags:
- observability
- datadog
- slo
- slack
- payments
- reporting
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: digest-slo-compliance
description: Given a list of Datadog SLO IDs and a reporting week, retrieve SLO compliance data for all payment services and post a digest to Slack. Use every Monday to review the prior week's SLO performance.
inputParameters:
- name: slo_ids
in: body
type: string
description: Comma-separated list of Datadog SLO IDs to include in the digest.
- name: week_start
in: body
type: string
description: Start date of the reporting week in YYYY-MM-DD format.
steps:
- name: get-slo-history
type: call
call: datadog-slo.get-slo-history
with:
slo_ids: '{{slo_ids}}'
from_ts: '{{week_start}}'
- name: post-digest
type: call
call: slack-slo.post-message
with:
channel: engineering-slo
text: 'SLO Compliance Digest | Week of {{week_start}} | Overall: {{get-slo-history.overall_compliance}}% | Breaches: {{get-slo-history.breach_count}} | Details in Datadog.'
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-history
path: /slo/history
operations:
- name: get-slo-history
method: GET
- namespace: slack-slo
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Checks the current AutoPay enrollment status and payment method for a cardholder account.
naftiko: '0.5'
info:
label: Cardholder AutoPay Status Lookup
description: Checks the current AutoPay enrollment status and payment method for a cardholder account.
tags:
- payments
- cardholder
- autopay
capability:
exposes:
- type: mcp
namespace: amex-payments
port: 8080
tools:
- name: get-autopay-status
description: Given a cardholder account ID, return the AutoPay enrollment status, payment method, and amount type. Use when verifying automatic payment settings.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-payments.get-autopay-status
with:
account_id: '{{account_id}}'
outputParameters:
- name: enrolled
type: boolean
mapping: $.enrolled
- name: payment_method
type: string
mapping: $.payment_method
- name: amount_type
type: string
mapping: $.amount_type
consumes:
- namespace: amex-payments
type: http
baseUri: https://api.americanexpress.com/v1/payments
authentication:
type: bearer
token: $secrets.amex_payments_token
resources:
- name: autopay
path: /accounts/{account_id}/autopay
inputParameters:
- name: account_id
in: path
operations:
- name: get-autopay-status
method: GET
Retrieves the current credit limit and available credit for a cardholder account from the accounts platform.
naftiko: '0.5'
info:
label: Cardholder Credit Limit Lookup
description: Retrieves the current credit limit and available credit for a cardholder account from the accounts platform.
tags:
- payments
- cardholder
- accounts
capability:
exposes:
- type: mcp
namespace: amex-accounts
port: 8080
tools:
- name: get-credit-limit
description: Given a cardholder account ID, return the current credit limit, available credit, and currency. Use when an agent needs to check a cardholder's credit availability.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-accounts.get-credit-limit
with:
account_id: '{{account_id}}'
outputParameters:
- name: credit_limit
type: number
mapping: $.credit_limit
- name: available_credit
type: number
mapping: $.available_credit
- name: currency
type: string
mapping: $.currency
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: credit-limit
path: /accounts/{account_id}/credit-limit
inputParameters:
- name: account_id
in: path
operations:
- name: get-credit-limit
method: GET
Synchronizes new contacts from HubSpot to Salesforce by fetching contact details, creating the Salesforce record, and logging the sync in Snowflake.
naftiko: '0.5'
info:
label: HubSpot to Salesforce Contact Sync
description: Synchronizes new contacts from HubSpot to Salesforce by fetching contact details, creating the Salesforce record, and logging the sync in Snowflake.
tags:
- hubspot
- salesforce
- data-sync
- snowflake
capability:
exposes:
- type: mcp
namespace: contact-sync
port: 8080
tools:
- name: sync-contact
description: Sync a HubSpot contact to Salesforce and log the operation. Use when a new contact is created in HubSpot.
inputParameters:
- name: contact_id
in: body
type: string
description: HubSpot contact ID.
steps:
- name: get-hs-contact
type: call
call: hubspot.get-contact
with:
contact_id: '{{contact_id}}'
- name: create-sf-contact
type: call
call: salesforce.create-contact
with:
FirstName: '{{get-hs-contact.properties.firstname}}'
LastName: '{{get-hs-contact.properties.lastname}}'
Email: '{{get-hs-contact.properties.email}}'
Company: '{{get-hs-contact.properties.company}}'
- name: log-sync
type: call
call: snowflake.run-query
with:
query: INSERT INTO SYNC_DB.PUBLIC.CONTACT_SYNC_LOG VALUES ('{{contact_id}}', '{{create-sf-contact.id}}', CURRENT_TIMESTAMP())
consumes:
- namespace: hubspot
type: http
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
- namespace: salesforce
type: http
baseUri: https://americanexpress.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
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Prepares quarterly compliance audit materials by extracting control evidence from ServiceNow, generating a summary from Snowflake, and distributing the report via SharePoint and email.
naftiko: '0.5'
info:
label: Quarterly Compliance Audit Preparation
description: Prepares quarterly compliance audit materials by extracting control evidence from ServiceNow, generating a summary from Snowflake, and distributing the report via SharePoint and email.
tags:
- compliance
- audit
- servicenow
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: audit-prep
port: 8080
tools:
- name: prepare-audit
description: Gather compliance evidence, generate a summary, upload to SharePoint, and distribute. Use at quarter end for audit preparation.
inputParameters:
- name: quarter
in: body
type: string
description: Quarter identifier (e.g. Q1-2026).
steps:
- name: get-controls
type: call
call: servicenow.list-controls
with:
state: active
quarter: '{{quarter}}'
- name: generate-summary
type: call
call: snowflake.run-query
with:
query: SELECT control_id, status, evidence_count FROM COMPLIANCE_DB.PUBLIC.AUDIT_EVIDENCE WHERE quarter='{{quarter}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
drive_id: $secrets.compliance_drive_id
name: Q{{quarter}}_audit_report.pdf
content: '{{generate-summary.results}}'
- name: distribute
type: call
call: email.send-email
with:
to: compliance-team@americanexpress.com
subject: Q{{quarter}} Compliance Audit Materials Ready
body: 'Audit materials uploaded to SharePoint. Controls reviewed: {{get-controls.count}}. Evidence items: {{generate-summary.row_count}}.'
consumes:
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: controls
path: /table/sn_compliance_control
operations:
- name: list-controls
method: GET
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: sharepoint
type: http
baseUri: https://americanexpress.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: files
path: /drives/{drive_id}/items
inputParameters:
- name: drive_id
in: path
operations:
- name: upload-file
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Retrieves the paperless statement enrollment status for a cardholder account.
naftiko: '0.5'
info:
label: Cardholder Paperless Preference Lookup
description: Retrieves the paperless statement enrollment status for a cardholder account.
tags:
- cardholder
- accounts
- preferences
capability:
exposes:
- type: mcp
namespace: amex-preferences
port: 8080
tools:
- name: get-paperless-status
description: Given a cardholder account ID, return the paperless enrollment status and notification email. Use when verifying statement delivery preferences.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-preferences.get-paperless-status
with:
account_id: '{{account_id}}'
outputParameters:
- name: enrolled
type: boolean
mapping: $.enrolled
- name: email
type: string
mapping: $.notification_email
- name: enrollment_date
type: string
mapping: $.enrollment_date
consumes:
- namespace: amex-preferences
type: http
baseUri: https://api.americanexpress.com/v1/preferences
authentication:
type: bearer
token: $secrets.amex_preferences_token
resources:
- name: paperless
path: /accounts/{account_id}/paperless
inputParameters:
- name: account_id
in: path
operations:
- name: get-paperless-status
method: GET
When a cardholder dispute is filed, retrieves dispute details from the disputes platform, creates a Jira case for the disputes team, and posts a Slack notification to the resolution channel.
naftiko: '0.5'
info:
label: Merchant Dispute Resolution Workflow
description: When a cardholder dispute is filed, retrieves dispute details from the disputes platform, creates a Jira case for the disputes team, and posts a Slack notification to the resolution channel.
tags:
- disputes
- payments
- jira
- slack
- customer-support
capability:
exposes:
- type: mcp
namespace: disputes-ops
port: 8080
tools:
- name: open-dispute-case
description: Given a dispute ID, fetch dispute details and open a Jira issue for the disputes resolution team. Post a Slack alert to the disputes channel with key context. Use when a new cardholder dispute requires case management.
inputParameters:
- name: dispute_id
in: body
type: string
description: The unique dispute identifier from the disputes platform.
- name: jira_project_key
in: body
type: string
description: The Jira project key for dispute cases (e.g., DISP).
steps:
- name: get-dispute
type: call
call: amex-disputes.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: create-jira-issue
type: call
call: jira.create-issue
with:
project_key: '{{jira_project_key}}'
issuetype: Task
summary: Dispute {{dispute_id}} — {{get-dispute.merchant_name}} ${{get-dispute.amount}}
description: 'Cardholder: {{get-dispute.cardholder_name}}
Merchant: {{get-dispute.merchant_name}}
Amount: {{get-dispute.amount}} {{get-dispute.currency}}
Date: {{get-dispute.transaction_date}}'
- name: post-slack-alert
type: call
call: slack.post-message
with:
channel: disputes-team
text: 'New dispute opened: {{dispute_id}} | Merchant: {{get-dispute.merchant_name}} | Amount: ${{get-dispute.amount}} | Jira: {{create-jira-issue.key}}'
consumes:
- namespace: amex-disputes
type: http
baseUri: https://api.americanexpress.com/v1/disputes
authentication:
type: bearer
token: $secrets.amex_disputes_token
resources:
- name: dispute
path: /disputes/{dispute_id}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Launches a customer retention campaign by identifying at-risk cardholders in Snowflake, creating a Mailchimp campaign, and logging results in Salesforce.
naftiko: '0.5'
info:
label: Mailchimp Customer Retention Campaign
description: Launches a customer retention campaign by identifying at-risk cardholders in Snowflake, creating a Mailchimp campaign, and logging results in Salesforce.
tags:
- marketing
- mailchimp
- snowflake
- salesforce
- retention
capability:
exposes:
- type: mcp
namespace: retention-campaign
port: 8080
tools:
- name: launch-retention-campaign
description: Identify at-risk cardholders and launch a retention email campaign. Use for periodic retention outreach.
inputParameters: []
steps:
- name: find-at-risk
type: call
call: snowflake.run-query
with:
query: SELECT account_id, email FROM RETENTION_DB.PUBLIC.AT_RISK_CARDHOLDERS WHERE churn_score > 0.7
- name: create-campaign
type: call
call: mailchimp.create-campaign
with:
type: regular
subject_line: We miss you — exclusive offer inside
from_name: American Express
- name: send
type: call
call: mailchimp.send-campaign
with:
campaign_id: '{{create-campaign.id}}'
- name: log-campaign
type: call
call: salesforce.create-campaign
with:
Name: Retention — {{create-campaign.id}}
Type: Email
Status: Sent
consumes:
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: mailchimp
type: http
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: apikey
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
- name: send-campaign
method: POST
- namespace: salesforce
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
Retrieves the primary mailing address on file for a cardholder account.
naftiko: '0.5'
info:
label: Cardholder Address on File Lookup
description: Retrieves the primary mailing address on file for a cardholder account.
tags:
- cardholder
- accounts
- data
capability:
exposes:
- type: mcp
namespace: amex-accounts
port: 8080
tools:
- name: get-address
description: Given a cardholder account ID, return the primary mailing address on file. Use when verifying cardholder address information.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-accounts.get-address
with:
account_id: '{{account_id}}'
outputParameters:
- name: street
type: string
mapping: $.street
- name: city
type: string
mapping: $.city
- name: state
type: string
mapping: $.state
- name: zip
type: string
mapping: $.zip
- name: country
type: string
mapping: $.country
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: address
path: /accounts/{account_id}/address
inputParameters:
- name: account_id
in: path
operations:
- name: get-address
method: GET
Synchronizes employer brand campaign data from LinkedIn to Snowflake analytics, refreshes the Tableau dashboard, and sends a performance summary to the recruitment marketing team via Slack.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Campaign Sync
description: Synchronizes employer brand campaign data from LinkedIn to Snowflake analytics, refreshes the Tableau dashboard, and sends a performance summary to the recruitment marketing team via Slack.
tags:
- linkedin
- marketing
- snowflake
- tableau
- slack
capability:
exposes:
- type: mcp
namespace: linkedin-sync
port: 8080
tools:
- name: sync-linkedin-campaign
description: Sync LinkedIn campaign data to analytics and notify the team. Use after a campaign period ends.
inputParameters:
- name: campaign_id
in: body
type: string
description: LinkedIn campaign ID.
steps:
- name: get-campaign
type: call
call: linkedin.get-campaign
with:
campaign_id: '{{campaign_id}}'
- name: sync-data
type: call
call: snowflake.run-query
with:
query: INSERT INTO MARKETING_DB.PUBLIC.LINKEDIN_CAMPAIGNS VALUES ('{{campaign_id}}', '{{get-campaign.name}}', {{get-campaign.impressions}}, {{get-campaign.clicks}}, {{get-campaign.spend}})
- name: refresh-dash
type: call
call: tableau.refresh-extract
with:
site_id: $secrets.tableau_site_id
datasource_id: $secrets.linkedin_datasource_id
- name: notify-team
type: call
call: slack.post-message
with:
channel: recruitment-marketing
text: 'LinkedIn campaign synced: {{get-campaign.name}} | Impressions: {{get-campaign.impressions}} | Clicks: {{get-campaign.clicks}} | Spend: ${{get-campaign.spend}}'
consumes:
- namespace: linkedin
type: http
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaigns
path: /adCampaignsV2/{campaign_id}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
method: GET
- namespace: snowflake
type: http
baseUri: https://americanexpress.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- namespace: tableau
type: http
baseUri: https://americanexpress.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: extracts
path: /sites/{site_id}/datasources/{datasource_id}/refresh
inputParameters:
- name: site_id
in: path
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When an employee termination is recorded in Workday, cancels the employee's corporate card account and opens a ServiceNow offboarding task.
naftiko: '0.5'
info:
label: Employee Offboarding Card Cancellation
description: When an employee termination is recorded in Workday, cancels the employee's corporate card account and opens a ServiceNow offboarding task.
tags:
- hr
- offboarding
- workday
- payments
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: cancel-employee-card
description: Given a Workday employee ID and termination date, retrieve the employee's corporate card account ID, cancel the card, and open a ServiceNow offboarding task. Invoke on confirmed employee termination.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID of the departing employee.
- name: termination_date
in: body
type: string
description: The effective termination date in YYYY-MM-DD format.
- name: card_account_id
in: body
type: string
description: The corporate card account ID to cancel.
steps:
- name: get-employee
type: call
call: workday-offboard.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: cancel-card
type: call
call: amex-corp-offboard.cancel-account
with:
account_id: '{{card_account_id}}'
reason: employee_termination
effective_date: '{{termination_date}}'
- name: open-offboarding-task
type: call
call: servicenow-offboard.create-task
with:
category: hr_offboarding
short_description: Corporate card cancelled for {{get-employee.full_name}} ({{workday_employee_id}})
description: 'Card account {{card_account_id}} cancelled effective {{termination_date}}. Cancel ref: {{cancel-card.confirmation_id}}'
consumes:
- namespace: workday-offboard
type: http
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_access_token
resources:
- name: worker
path: /workers/{worker_id}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: amex-corp-offboard
type: http
baseUri: https://api.americanexpress.com/v1/corporate
authentication:
type: bearer
token: $secrets.amex_corp_token
resources:
- name: account
path: /accounts/{account_id}/cancel
inputParameters:
- name: account_id
in: path
operations:
- name: cancel-account
method: POST
- namespace: servicenow-offboard
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: task
path: /table/sc_task
operations:
- name: create-task
method: POST
Retrieves the latest commit status and open issue count for a given GitHub repository.
naftiko: '0.5'
info:
label: GitHub Repository Status Check
description: Retrieves the latest commit status and open issue count for a given GitHub repository.
tags:
- github
- engineering
- development
capability:
exposes:
- type: mcp
namespace: github
port: 8080
tools:
- name: get-repo-status
description: Given a repository name, return the default branch, open issues count, and last updated timestamp. Use when checking repository health.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name.
call: github.get-repo-status
with:
repo_name: '{{repo_name}}'
outputParameters:
- name: default_branch
type: string
mapping: $.default_branch
- name: open_issues_count
type: number
mapping: $.open_issues_count
- name: updated_at
type: string
mapping: $.updated_at
consumes:
- namespace: github
type: http
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: repo
path: /repos/americanexpress/{repo_name}
inputParameters:
- name: repo_name
in: path
operations:
- name: get-repo-status
method: GET
Retrieves the current list of open job requisitions from Workday for a specified organization and returns structured data for workforce planning analysis.
naftiko: '0.5'
info:
label: Workday Open Requisition Report
description: Retrieves the current list of open job requisitions from Workday for a specified organization and returns structured data for workforce planning analysis.
tags:
- hr
- recruiting
- workday
- workforce-planning
- lookup
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: get-open-requisitions
description: Given a Workday organization ID, return all open job requisitions including job title, department, level, and days open. Use when HR business partners or talent acquisition teams need visibility into open headcount.
inputParameters:
- name: organization_id
in: body
type: string
description: The Workday organization ID to retrieve open requisitions for.
call: workday-recruiting.get-requisitions
with:
organization_id: '{{organization_id}}'
outputParameters:
- name: requisitions
type: array
mapping: $.data
- name: total_open
type: number
mapping: $.total
consumes:
- namespace: workday-recruiting
type: http
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_access_token
resources:
- name: requisitions
path: /jobRequisitions
inputParameters:
- name: organization_id
in: query
operations:
- name: get-requisitions
method: GET
Automatically remediates common ServiceNow incidents by identifying the issue type, executing a remediation runbook, updating the incident, and notifying the on-call engineer via PagerDuty.
naftiko: '0.5'
info:
label: ServiceNow Incident Auto-Remediation
description: Automatically remediates common ServiceNow incidents by identifying the issue type, executing a remediation runbook, updating the incident, and notifying the on-call engineer via PagerDuty.
tags:
- servicenow
- automation
- pagerduty
- incident-management
capability:
exposes:
- type: mcp
namespace: auto-remediation
port: 8080
tools:
- name: auto-remediate-incident
description: Auto-remediate a ServiceNow incident by executing a runbook and notifying on-call. Use when an incident matches an auto-remediation pattern.
inputParameters:
- name: incident_id
in: body
type: string
description: ServiceNow incident ID.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
incident_id: '{{incident_id}}'
- name: run-remediation
type: call
call: amex-runbooks.execute-runbook
with:
runbook_id: '{{get-incident.category}}-auto-fix'
incident_id: '{{incident_id}}'
ci: '{{get-incident.cmdb_ci}}'
- name: update-incident
type: call
call: servicenow.update-incident
with:
incident_id: '{{incident_id}}'
state: resolved
work_notes: 'Auto-remediated via runbook. Result: {{run-remediation.status}}'
- name: notify-oncall
type: call
call: pagerduty.create-incident
with:
title: 'Auto-remediation completed: {{incident_id}}'
body: 'Incident {{incident_id}} was auto-remediated. Status: {{run-remediation.status}}'
consumes:
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{incident_id}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- name: update-incident
method: PATCH
- namespace: amex-runbooks
type: http
baseUri: https://api.americanexpress.com/v1/automation
authentication:
type: bearer
token: $secrets.amex_automation_token
resources:
- name: runbooks
path: /runbooks/{runbook_id}/execute
inputParameters:
- name: runbook_id
in: path
operations:
- name: execute-runbook
method: POST
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Returns the most recent transactions for a cardholder account from the transaction history API.
naftiko: '0.5'
info:
label: Cardholder Recent Transactions Lookup
description: Returns the most recent transactions for a cardholder account from the transaction history API.
tags:
- payments
- cardholder
- transactions
capability:
exposes:
- type: mcp
namespace: amex-transactions
port: 8080
tools:
- name: get-recent-transactions
description: Given a cardholder account ID, return the most recent transactions including merchant, amount, and date. Use when reviewing recent account activity.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID.
call: amex-transactions.get-recent-transactions
with:
account_id: '{{account_id}}'
outputParameters:
- name: transactions
type: array
mapping: $.transactions
- name: count
type: number
mapping: $.count
consumes:
- namespace: amex-transactions
type: http
baseUri: https://api.americanexpress.com/v1/transactions
authentication:
type: bearer
token: $secrets.amex_transactions_token
resources:
- name: transactions
path: /accounts/{account_id}/transactions
inputParameters:
- name: account_id
in: path
operations:
- name: get-recent-transactions
method: GET
Generates and delivers international fee disclosures for cardholders traveling abroad by fetching fee schedules, generating the disclosure document, and emailing it to the cardholder.
naftiko: '0.5'
info:
label: Cardholder International Fee Disclosure
description: Generates and delivers international fee disclosures for cardholders traveling abroad by fetching fee schedules, generating the disclosure document, and emailing it to the cardholder.
tags:
- cardholder
- compliance
- travel
- notifications
capability:
exposes:
- type: mcp
namespace: fee-disclosure
port: 8080
tools:
- name: send-fee-disclosure
description: Generate and deliver an international fee disclosure. Use when a cardholder sets a travel notification for an international destination.
inputParameters:
- name: product_id
in: body
type: string
description: Card product ID.
- name: destination
in: body
type: string
description: Destination country.
- name: cardholder_email
in: body
type: string
description: Cardholder email.
steps:
- name: get-fees
type: call
call: amex-fees.get-fee-schedule
with:
product_id: '{{product_id}}'
destination_country: '{{destination}}'
- name: generate-doc
type: call
call: amex-docs.generate-disclosure
with:
template: international-fee-disclosure
fee_schedule: '{{get-fees.schedule}}'
destination: '{{destination}}'
- name: deliver
type: call
call: email.send-email
with:
to: '{{cardholder_email}}'
subject: International Fee Disclosure for {{destination}}
body: 'Attached is your fee disclosure for travel to {{destination}}. Foreign transaction fee: {{get-fees.fx_fee_pct}}%.'
consumes:
- namespace: amex-fees
type: http
baseUri: https://api.americanexpress.com/v1/fees
authentication:
type: bearer
token: $secrets.amex_fees_token
resources:
- name: schedules
path: /products/{product_id}/international-fees
inputParameters:
- name: product_id
in: path
operations:
- name: get-fee-schedule
method: GET
- namespace: amex-docs
type: http
baseUri: https://api.americanexpress.com/v1/documents
authentication:
type: bearer
token: $secrets.amex_docs_token
resources:
- name: disclosures
path: /generate
operations:
- name: generate-disclosure
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
On a CI/CD pipeline failure in GitHub Actions, creates a Datadog event marker, opens a Jira bug, and posts an alert to the engineering Slack channel.
naftiko: '0.5'
info:
label: Application Pipeline Failure Response
description: On a CI/CD pipeline failure in GitHub Actions, creates a Datadog event marker, opens a Jira bug, and posts an alert to the engineering Slack channel.
tags:
- devops
- github-actions
- datadog
- jira
- slack
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions workflow failure, create a Datadog event, open a Jira bug, and alert Slack. Invoke when a protected-branch pipeline fails in any American Express engineering repository.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name where the failure occurred.
- name: workflow_name
in: body
type: string
description: The name of the failed GitHub Actions workflow.
- name: run_id
in: body
type: string
description: The GitHub Actions run ID for the failed workflow.
- name: commit_sha
in: body
type: string
description: The commit SHA that triggered the failed run.
- name: branch
in: body
type: string
description: The branch on which the failure occurred.
steps:
- name: create-datadog-event
type: call
call: datadog.create-event
with:
title: 'Pipeline failure: {{repo_name}} / {{workflow_name}}'
text: Run {{run_id}} failed on branch {{branch}} at commit {{commit_sha}}
alert_type: error
tags: repo:{{repo_name}},env:ci
- name: open-jira-bug
type: call
call: jira-eng.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repo_name}} — {{workflow_name}} on {{branch}}'
description: 'Workflow: {{workflow_name}}
Run ID: {{run_id}}
Branch: {{branch}}
Commit: {{commit_sha}}
Datadog event: {{create-datadog-event.id}}'
- name: post-alert
type: call
call: slack-eng.post-message
with:
channel: engineering-alerts
text: 'Pipeline Failure | Repo: {{repo_name}} | Workflow: {{workflow_name}} | Branch: {{branch}} | Jira: {{open-jira-bug.key}}'
consumes:
- namespace: datadog
type: http
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: event
path: /events
operations:
- name: create-event
method: POST
- namespace: jira-eng
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack-eng
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Verifies whether a specific merchant is enrolled in the American Express acceptance network.
naftiko: '0.5'
info:
label: Merchant Acceptance Verification
description: Verifies whether a specific merchant is enrolled in the American Express acceptance network.
tags:
- merchants
- payments
- network
capability:
exposes:
- type: mcp
namespace: amex-network
port: 8080
tools:
- name: verify-acceptance
description: Given a merchant ID, verify their enrollment in the Amex acceptance network and return network status and enrollment date. Use when confirming merchant acceptance.
inputParameters:
- name: merchant_id
in: body
type: string
description: The merchant identifier.
call: amex-network.verify-acceptance
with:
merchant_id: '{{merchant_id}}'
outputParameters:
- name: accepted
type: boolean
mapping: $.accepted
- name: network_status
type: string
mapping: $.network_status
- name: enrollment_date
type: string
mapping: $.enrollment_date
consumes:
- namespace: amex-network
type: http
baseUri: https://api.americanexpress.com/v1/network
authentication:
type: bearer
token: $secrets.amex_network_token
resources:
- name: acceptance
path: /merchants/{merchant_id}/acceptance
inputParameters:
- name: merchant_id
in: path
operations:
- name: verify-acceptance
method: GET
Enriches Salesforce leads with ZoomInfo company data, calculates a lead score, updates the lead record, and notifies the assigned sales rep via Slack.
naftiko: '0.5'
info:
label: Salesforce Lead Scoring Enrichment
description: Enriches Salesforce leads with ZoomInfo company data, calculates a lead score, updates the lead record, and notifies the assigned sales rep via Slack.
tags:
- salesforce
- zoominfo
- sales
- slack
capability:
exposes:
- type: mcp
namespace: lead-enrichment
port: 8080
tools:
- name: enrich-lead
description: Enrich a Salesforce lead with ZoomInfo data and notify the sales rep. Use when a new high-potential lead enters the pipeline.
inputParameters:
- name: lead_id
in: body
type: string
description: Salesforce lead ID.
- name: company_name
in: body
type: string
description: Company name to enrich.
- name: sales_rep_channel
in: body
type: string
description: Sales rep Slack channel.
steps:
- name: enrich
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__c: '{{enrich.employee_count}}'
Revenue__c: '{{enrich.revenue}}'
Lead_Score__c: '{{enrich.score}}'
- name: notify-rep
type: call
call: slack.post-message
with:
channel: '{{sales_rep_channel}}'
text: 'Lead enriched: {{company_name}} | Revenue: ${{enrich.revenue}} | Score: {{enrich.score}} | Employees: {{enrich.employee_count}}'
consumes:
- namespace: zoominfo
type: http
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: companies
path: /search/company
operations:
- name: search-company
method: POST
- namespace: salesforce
type: http
baseUri: https://americanexpress.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
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Sets up a payment plan for a cardholder by evaluating eligibility, creating the plan, updating the billing system, and confirming via email.
naftiko: '0.5'
info:
label: Cardholder Payment Plan Setup
description: Sets up a payment plan for a cardholder by evaluating eligibility, creating the plan, updating the billing system, and confirming via email.
tags:
- cardholder
- billing
- payments
- customer-support
capability:
exposes:
- type: mcp
namespace: payment-plans
port: 8080
tools:
- name: setup-payment-plan
description: Create a payment plan for a cardholder and confirm enrollment. Use when a cardholder requests to pay a balance in installments.
inputParameters:
- name: account_id
in: body
type: string
description: Cardholder account ID.
- name: amount
in: body
type: string
description: Plan amount.
- name: term_months
in: body
type: string
description: Number of months for the plan.
steps:
- name: get-account
type: call
call: amex-accounts.get-account
with:
account_id: '{{account_id}}'
- name: create-plan
type: call
call: amex-plans.create-plan
with:
account_id: '{{account_id}}'
amount: '{{amount}}'
term_months: '{{term_months}}'
interest_rate: '{{get-account.plan_rate}}'
- name: confirm
type: call
call: email.send-email
with:
to: '{{get-account.email}}'
subject: Payment plan confirmed
body: 'Your payment plan of ${{amount}} over {{term_months}} months has been set up. Monthly payment: ${{create-plan.monthly_payment}}. Plan ID: {{create-plan.plan_id}}'
consumes:
- namespace: amex-accounts
type: http
baseUri: https://api.americanexpress.com/v1/accounts
authentication:
type: bearer
token: $secrets.amex_accounts_token
resources:
- name: account
path: /accounts/{account_id}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- namespace: amex-plans
type: http
baseUri: https://api.americanexpress.com/v1/payment-plans
authentication:
type: bearer
token: $secrets.amex_plans_token
resources:
- name: plans
path: /plans
operations:
- name: create-plan
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Manages vendor contract renewals by fetching contract details from DocuSign, creating a review task in Jira, and notifying procurement via Slack and email.
naftiko: '0.5'
info:
label: Vendor Contract Renewal Workflow
description: Manages vendor contract renewals by fetching contract details from DocuSign, creating a review task in Jira, and notifying procurement via Slack and email.
tags:
- procurement
- docusign
- jira
- slack
capability:
exposes:
- type: mcp
namespace: contract-renewal
port: 8080
tools:
- name: process-renewal
description: Fetch contract details, create a review task, and notify stakeholders. Use when a vendor contract approaches its renewal date.
inputParameters:
- name: envelope_id
in: body
type: string
description: DocuSign envelope ID.
- name: vendor_name
in: body
type: string
description: Vendor name.
- name: contract_value
in: body
type: string
description: Contract value.
- name: vendor_email
in: body
type: string
description: Vendor contact email.
steps:
- name: get-contract
type: call
call: docusign.get-envelope
with:
ds_account_id: $secrets.docusign_account_id
envelope_id: '{{envelope_id}}'
- name: create-review
type: call
call: jira.create-issue
with:
project_key: PROC
issuetype: Task
summary: 'Contract renewal: {{get-contract.emailSubject}}'
description: 'Vendor: {{vendor_name}}. Expiry: {{get-contract.expireAfter}}. Value: ${{contract_value}}.'
- name: notify-procurement
type: call
call: slack.post-message
with:
channel: procurement
text: 'Contract renewal due: {{vendor_name}} | Expiry: {{get-contract.expireAfter}} | Value: ${{contract_value}} | Jira: {{create-review.key}}'
- name: notify-vendor
type: call
call: email.send-email
with:
to: '{{vendor_email}}'
subject: Contract renewal notice
body: Your contract with American Express is approaching renewal. Our procurement team will be in touch.
consumes:
- namespace: docusign
type: http
baseUri: https://na4.docusign.net/restapi/v2.1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /accounts/{ds_account_id}/envelopes/{envelope_id}
inputParameters:
- name: ds_account_id
in: path
- name: envelope_id
in: path
operations:
- name: get-envelope
method: GET
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
When a Terraform Cloud plan is created for a production workspace, retrieves plan details, posts a summary to the engineering Slack channel, and creates a ServiceNow change request for approval.
naftiko: '0.5'
info:
label: Terraform Infrastructure Provisioning Approval
description: When a Terraform Cloud plan is created for a production workspace, retrieves plan details, posts a summary to the engineering Slack channel, and creates a ServiceNow change request for approval.
tags:
- cloud
- infrastructure
- terraform
- servicenow
- slack
- devops
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: request-infra-change-approval
description: Given a Terraform Cloud workspace ID and run ID, fetch the plan summary, open a ServiceNow change request for the infrastructure change, and post a Slack notification to the engineering channel with plan details. Use when production Terraform plans need change management approval.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID where the plan was created.
- name: run_id
in: body
type: string
description: The Terraform Cloud run ID for the plan.
steps:
- name: get-plan
type: call
call: terraform.get-run
with:
run_id: '{{run_id}}'
- name: create-change
type: call
call: servicenow-infra.create-change
with:
category: infrastructure
short_description: 'Terraform plan requires approval: workspace {{workspace_id}}'
description: 'Run ID: {{run_id}}
Workspace: {{workspace_id}}
Add: {{get-plan.resource_additions}}
Change: {{get-plan.resource_changes}}
Destroy: {{get-plan.resource_destructions}}'
risk: moderate
- name: post-notification
type: call
call: slack-infra.post-message
with:
channel: infra-changes
text: 'Terraform Plan Pending Approval | Workspace: {{workspace_id}} | Run: {{run_id}} | +{{get-plan.resource_additions}} ~{{get-plan.resource_changes}} -{{get-plan.resource_destructions}} | SNOW: {{create-change.number}}'
consumes:
- namespace: terraform
type: http
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: run
path: /runs/{run_id}
inputParameters:
- name: run_id
in: path
operations:
- name: get-run
method: GET
- namespace: servicenow-infra
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change
path: /table/change_request
operations:
- name: create-change
method: POST
- namespace: slack-infra
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves the current status of an open dispute for a cardholder from the disputes platform.
naftiko: '0.5'
info:
label: Cardholder Dispute Status Lookup
description: Retrieves the current status of an open dispute for a cardholder from the disputes platform.
tags:
- disputes
- cardholder
- customer-support
capability:
exposes:
- type: mcp
namespace: amex-disputes
port: 8080
tools:
- name: get-dispute-status
description: Given a dispute ID, return the current status, resolution ETA, and last update timestamp. Use when a cardholder inquires about an ongoing dispute.
inputParameters:
- name: dispute_id
in: body
type: string
description: The dispute identifier.
call: amex-disputes.get-dispute-status
with:
dispute_id: '{{dispute_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: resolution_eta
type: string
mapping: $.resolution_eta
- name: last_update
type: string
mapping: $.last_update
consumes:
- namespace: amex-disputes
type: http
baseUri: https://api.americanexpress.com/v1/disputes
authentication:
type: bearer
token: $secrets.amex_disputes_token
resources:
- name: status
path: /disputes/{dispute_id}/status
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute-status
method: GET
Orchestrates new merchant onboarding by creating the merchant record, provisioning payment gateway credentials, assigning a relationship manager in Salesforce, and sending a welcome kit email.
naftiko: '0.5'
info:
label: New Merchant Onboarding Orchestration
description: Orchestrates new merchant onboarding by creating the merchant record, provisioning payment gateway credentials, assigning a relationship manager in Salesforce, and sending a welcome kit email.
tags:
- merchants
- onboarding
- salesforce
- payments
capability:
exposes:
- type: mcp
namespace: merchant-onboard
port: 8080
tools:
- name: onboard-merchant
description: Onboard a new merchant by creating their record, provisioning gateway credentials, creating a Salesforce account, and sending a welcome email. Use when a new merchant is approved for the network.
inputParameters:
- name: merchant_name
in: body
type: string
description: Legal name of the merchant.
- name: mcc_code
in: body
type: string
description: Merchant category code.
- name: contact_email
in: body
type: string
description: Primary contact email.
steps:
- name: create-merchant
type: call
call: amex-merchants.create-merchant
with:
name: '{{merchant_name}}'
mcc: '{{mcc_code}}'
contact_email: '{{contact_email}}'
- name: provision-gateway
type: call
call: amex-gateway.provision-credentials
with:
merchant_id: '{{create-merchant.merchant_id}}'
- name: create-sf-account
type: call
call: salesforce.create-account
with:
Name: '{{merchant_name}}'
Type: Merchant
AmexMerchantId__c: '{{create-merchant.merchant_id}}'
- name: send-welcome
type: call
call: email.send-email
with:
to: '{{contact_email}}'
subject: Welcome to the American Express Network
body: Your merchant ID is {{create-merchant.merchant_id}}. Gateway credentials have been provisioned. Your account manager will reach out shortly.
consumes:
- namespace: amex-merchants
type: http
baseUri: https://api.americanexpress.com/v1/merchants
authentication:
type: bearer
token: $secrets.amex_merchant_token
resources:
- name: merchant
path: /merchants
operations:
- name: create-merchant
method: POST
- namespace: amex-gateway
type: http
baseUri: https://api.americanexpress.com/v1/gateway
authentication:
type: bearer
token: $secrets.amex_gateway_token
resources:
- name: credentials
path: /merchants/{merchant_id}/credentials
inputParameters:
- name: merchant_id
in: path
operations:
- name: provision-credentials
method: POST
- namespace: salesforce
type: http
baseUri: https://americanexpress.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
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
When a cardholder account triggers a KYC review flag, generates a document request via the customer communications platform and creates a Salesforce case for the KYC team to track.
naftiko: '0.5'
info:
label: Cardholder KYC Document Request
description: When a cardholder account triggers a KYC review flag, generates a document request via the customer communications platform and creates a Salesforce case for the KYC team to track.
tags:
- kyc
- compliance
- payments
- salesforce
- customer-support
capability:
exposes:
- type: mcp
namespace: kyc-ops
port: 8080
tools:
- name: initiate-kyc-review
description: Given a cardholder account ID and KYC flag reason, create a Salesforce KYC case and send a document request notification to the cardholder. Use when account activity triggers a Know Your Customer review requirement.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account ID that triggered the KYC flag.
- name: flag_reason
in: body
type: string
description: The reason the KYC review was triggered (e.g., high_transaction_volume, new_market).
- name: cardholder_email
in: body
type: string
description: The cardholder's email address for document request communications.
steps:
- name: create-kyc-case
type: call
call: salesforce-kyc.create-case
with:
account_id: '{{account_id}}'
subject: KYC Review Required — Account {{account_id}}
description: 'KYC flag reason: {{flag_reason}}'
type: KYC Review
priority: High
- name: send-doc-request
type: call
call: amex-comms.send-email
with:
to: '{{cardholder_email}}'
template_id: kyc_document_request
account_id: '{{account_id}}'
case_number: '{{create-kyc-case.case_number}}'
consumes:
- namespace: salesforce-kyc
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: case
path: /sobjects/Case
operations:
- name: create-case
method: POST
- namespace: amex-comms
type: http
baseUri: https://api.americanexpress.com/v1/communications
authentication:
type: bearer
token: $secrets.amex_comms_token
resources:
- name: email
path: /email/send
operations:
- name: send-email
method: POST
Classifies documents uploaded to Box by extracting metadata, running classification, updating Box metadata, and logging results in ServiceNow.
naftiko: '0.5'
info:
label: Box Document Classification Workflow
description: Classifies documents uploaded to Box by extracting metadata, running classification, updating Box metadata, and logging results in ServiceNow.
tags:
- box
- document-management
- classification
- servicenow
capability:
exposes:
- type: mcp
namespace: doc-classify
port: 8080
tools:
- name: classify-document
description: Classify a Box document and update its metadata. Use when a new document is uploaded to a monitored Box folder.
inputParameters:
- name: file_id
in: body
type: string
description: Box file ID.
steps:
- name: get-file
type: call
call: box.get-file
with:
file_id: '{{file_id}}'
- name: classify
type: call
call: amex-classify.classify-document
with:
file_name: '{{get-file.name}}'
file_type: '{{get-file.extension}}'
- name: update-meta
type: call
call: box.update-metadata
with:
file_id: '{{file_id}}'
classification: '{{classify.classification}}'
- name: log-result
type: call
call: servicenow.create-record
with:
file_id: '{{file_id}}'
classification: '{{classify.classification}}'
consumes:
- namespace: box
type: http
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
- name: update-metadata
method: POST
- namespace: amex-classify
type: http
baseUri: https://api.americanexpress.com/v1/ai
authentication:
type: bearer
token: $secrets.amex_ai_token
resources:
- name: classify
path: /classify
operations:
- name: classify-document
method: POST
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: records
path: /table/u_document_classification
operations:
- name: create-record
method: POST
Detects Terraform infrastructure drift by triggering a plan, comparing state, creating a Jira remediation ticket, and alerting the platform team via Slack.
naftiko: '0.5'
info:
label: Terraform Infrastructure Drift Detection
description: Detects Terraform infrastructure drift by triggering a plan, comparing state, creating a Jira remediation ticket, and alerting the platform team via Slack.
tags:
- terraform
- infrastructure
- jira
- slack
capability:
exposes:
- type: mcp
namespace: drift-detection
port: 8080
tools:
- name: detect-drift
description: Trigger a Terraform plan to detect drift and report findings. Use during scheduled drift detection runs.
inputParameters:
- name: workspace_id
in: body
type: string
description: Terraform Cloud workspace ID.
steps:
- name: trigger-plan
type: call
call: terraform-cloud.create-run
with:
workspace_id: '{{workspace_id}}'
is_destroy: 'false'
message: Drift detection run
- name: check-plan
type: call
call: terraform-cloud.get-run
with:
run_id: '{{trigger-plan.id}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: PLAT
issuetype: Task
summary: 'Terraform drift detected: {{workspace_id}}'
description: 'Resources to add: {{check-plan.resource_additions}}. To change: {{check-plan.resource_changes}}. To destroy: {{check-plan.resource_destructions}}.'
- name: alert-team
type: call
call: slack.post-message
with:
channel: platform-engineering
text: 'Drift detected in {{workspace_id}} | +{{check-plan.resource_additions}} ~{{check-plan.resource_changes}} -{{check-plan.resource_destructions}} | Jira: {{create-ticket.key}}'
consumes:
- namespace: terraform-cloud
type: http
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
- name: run-detail
path: /runs/{run_id}
inputParameters:
- name: run_id
in: path
operations:
- name: get-run
method: GET
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Scans GitHub pull requests for security vulnerabilities using SonarQube, posts findings as PR comments, and creates a Jira security issue if critical vulnerabilities are found.
naftiko: '0.5'
info:
label: GitHub Pull Request Security Scan
description: Scans GitHub pull requests for security vulnerabilities using SonarQube, posts findings as PR comments, and creates a Jira security issue if critical vulnerabilities are found.
tags:
- github
- security
- sonarqube
- jira
capability:
exposes:
- type: mcp
namespace: pr-security
port: 8080
tools:
- name: scan-pr-security
description: Scan a pull request for vulnerabilities and report findings. Use when a PR is opened against a protected branch.
inputParameters:
- name: repo
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-pr
with:
repo: '{{repo}}'
pr_number: '{{pr_number}}'
- name: scan
type: call
call: sonarqube.get-analysis
with:
projectKey: '{{repo}}-pr-{{pr_number}}'
- name: comment
type: call
call: github.post-comment
with:
repo: '{{repo}}'
pr_number: '{{pr_number}}'
body: 'Security scan: {{scan.projectStatus.status}}. Vulnerabilities: {{scan.projectStatus.conditions}}'
- name: create-sec-issue
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Bug
summary: 'Security scan findings: {{repo}} PR#{{pr_number}}'
description: 'Status: {{scan.projectStatus.status}}. PR: {{get-pr.html_url}}'
consumes:
- namespace: github
type: http
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pulls
path: /repos/americanexpress/{repo}/pulls/{pr_number}
inputParameters:
- name: repo
in: path
- name: pr_number
in: path
operations:
- name: get-pr
method: GET
- name: post-comment
method: POST
- namespace: sonarqube
type: http
baseUri: https://sonarqube.americanexpress.com/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: analysis
path: /qualitygates/project_status
operations:
- name: get-analysis
method: GET
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
Routes compensation change requests through approval by fetching the proposal from Workday, creating a Jira approval task, and notifying HR leadership via Slack.
naftiko: '0.5'
info:
label: Workday Compensation Change Approval
description: Routes compensation change requests through approval by fetching the proposal from Workday, creating a Jira approval task, and notifying HR leadership via Slack.
tags:
- hr
- workday
- jira
- slack
- compensation
capability:
exposes:
- type: mcp
namespace: comp-approval
port: 8080
tools:
- name: route-comp-approval
description: Route a compensation change through the approval workflow. Use when a manager submits a salary adjustment proposal.
inputParameters:
- name: proposal_id
in: body
type: string
description: Workday compensation proposal ID.
steps:
- name: get-proposal
type: call
call: workday.get-proposal
with:
proposal_id: '{{proposal_id}}'
- name: create-approval
type: call
call: jira.create-issue
with:
project_key: HRA
issuetype: Task
summary: Comp change approval — {{get-proposal.employee_name}}
description: 'Current: ${{get-proposal.current_salary}}. Proposed: ${{get-proposal.proposed_salary}}. Reason: {{get-proposal.reason}}.'
- name: notify-hr
type: call
call: slack.post-message
with:
channel: hr-leadership
text: 'Comp change pending: {{get-proposal.employee_name}} | ${{get-proposal.current_salary}} → ${{get-proposal.proposed_salary}} | Jira: {{create-approval.key}}'
consumes:
- namespace: workday
type: http
baseUri: https://wd3-impl-services1.workday.com/ccx/service/amex
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation
path: /compensation/proposals/{proposal_id}
inputParameters:
- name: proposal_id
in: path
operations:
- name: get-proposal
method: GET
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new employee is created in Workday, provisions a corporate card account and sends onboarding instructions via Microsoft Teams.
naftiko: '0.5'
info:
label: New Employee Card Provisioning
description: When a new employee is created in Workday, provisions a corporate card account and sends onboarding instructions via Microsoft Teams.
tags:
- hr
- onboarding
- workday
- payments
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-provisioning
port: 8080
tools:
- name: provision-employee-card
description: Given a Workday employee ID, retrieve employee details, create a corporate card account, and send the cardholder a Teams message with activation instructions. Invoke during new hire onboarding.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID for the new hire.
- name: cost_center
in: body
type: string
description: The cost center code to associate with the new corporate card.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: create-card-account
type: call
call: amex-corp.create-card-account
with:
first_name: '{{get-employee.first_name}}'
last_name: '{{get-employee.last_name}}'
email: '{{get-employee.work_email}}'
cost_center: '{{cost_center}}'
- name: send-instructions
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: 'Welcome! Your American Express corporate card has been provisioned. Account reference: {{create-card-account.account_id}}. Activate at amex.com/activate.'
consumes:
- namespace: workday
type: http
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_access_token
resources:
- name: worker
path: /workers/{worker_id}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: amex-corp
type: http
baseUri: https://api.americanexpress.com/v1/corporate
authentication:
type: bearer
token: $secrets.amex_corp_token
resources:
- name: card-account
path: /accounts
operations:
- name: create-card-account
method: POST
- namespace: msteams
type: http
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chat-message
path: /users/{recipient_upn}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Monitors Oracle database health by querying performance metrics, creating a ServiceNow incident if thresholds are breached, and notifying the DBA team via Slack.
naftiko: '0.5'
info:
label: Oracle Database Health Monitoring
description: Monitors Oracle database health by querying performance metrics, creating a ServiceNow incident if thresholds are breached, and notifying the DBA team via Slack.
tags:
- oracle
- database
- servicenow
- slack
- monitoring
capability:
exposes:
- type: mcp
namespace: oracle-health
port: 8080
tools:
- name: monitor-oracle-health
description: Check Oracle database health, create an incident if degraded, and notify DBAs. Use when scheduled health checks run or alerts trigger.
inputParameters:
- name: database_name
in: body
type: string
description: Oracle database name.
steps:
- name: check-health
type: call
call: oracle-cloud.get-health
with: {}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: Oracle DB health alert — {{database_name}}
category: database
priority: '2'
description: 'CPU: {{check-health.cpu_pct}}%. Sessions: {{check-health.active_sessions}}. Tablespace: {{check-health.tablespace_pct}}%.'
- name: notify-dba
type: call
call: slack.post-message
with:
channel: dba-ops
text: 'Oracle DB alert: {{database_name}} | CPU: {{check-health.cpu_pct}}% | Sessions: {{check-health.active_sessions}} | SNOW: {{create-incident.number}}'
consumes:
- namespace: oracle-cloud
type: http
baseUri: https://database.americanexpress.oraclecloud.com/ords
authentication:
type: bearer
token: $secrets.oracle_token
resources:
- name: metrics
path: /admin/health
operations:
- name: get-health
method: GET
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Responds to New Relic performance alerts by fetching violation details, creating a PagerDuty incident, opening a Jira bug, and posting to the engineering Slack channel.
naftiko: '0.5'
info:
label: New Relic Performance Degradation Handler
description: Responds to New Relic performance alerts by fetching violation details, creating a PagerDuty incident, opening a Jira bug, and posting to the engineering Slack channel.
tags:
- new-relic
- monitoring
- pagerduty
- jira
- slack
capability:
exposes:
- type: mcp
namespace: perf-handler
port: 8080
tools:
- name: handle-perf-degradation
description: Respond to a performance degradation alert by paging on-call, creating a bug, and notifying engineering. Use when New Relic detects performance issues.
inputParameters:
- name: policy_id
in: body
type: string
description: New Relic alert policy ID.
steps:
- name: get-violations
type: call
call: newrelic.get-violations
with:
policy_id: '{{policy_id}}'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: 'Perf degradation: {{get-violations.condition_name}}'
service_id: $secrets.pd_service_id
urgency: high
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: 'Perf degradation: {{get-violations.condition_name}}'
description: 'Violation: {{get-violations.condition_name}}. Threshold: {{get-violations.threshold}}. Value: {{get-violations.value}}.'
- name: alert-eng
type: call
call: slack.post-message
with:
channel: engineering-alerts
text: 'Performance degradation: {{get-violations.condition_name}} | PD: {{page-oncall.incident_number}} | Jira: {{create-bug.key}}'
consumes:
- namespace: newrelic
type: http
baseUri: https://api.newrelic.com/v2
authentication:
type: bearer
token: $secrets.newrelic_token
resources:
- name: alerts
path: /alerts_violations.json
operations:
- name: get-violations
method: GET
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- namespace: jira
type: http
baseUri: https://americanexpress.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue
path: /issue
operations:
- name: create-issue
method: POST
- namespace: slack
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a cardholder reports a lost card, cancels the existing card, orders a replacement, creates a ServiceNow case, and sends a confirmation via email.
naftiko: '0.5'
info:
label: Cardholder Lost Card Replacement Workflow
description: When a cardholder reports a lost card, cancels the existing card, orders a replacement, creates a ServiceNow case, and sends a confirmation via email.
tags:
- cardholder
- cards
- servicenow
- customer-support
capability:
exposes:
- type: mcp
namespace: card-replace
port: 8080
tools:
- name: replace-lost-card
description: Cancel a lost card, order a replacement, create a support case, and confirm with the cardholder. Use when a cardholder reports a lost or stolen card.
inputParameters:
- name: card_id
in: body
type: string
description: The card ID to replace.
- name: cardholder_email
in: body
type: string
description: Cardholder email address for confirmation.
steps:
- name: cancel-card
type: call
call: amex-cards.cancel-card
with:
card_id: '{{card_id}}'
- name: order-replacement
type: call
call: amex-cards.order-replacement
with:
card_id: '{{card_id}}'
shipping: expedited
- name: create-case
type: call
call: servicenow.create-case
with:
short_description: Lost card replacement — {{card_id}}
category: card-services
priority: '2'
- name: send-confirmation
type: call
call: email.send-email
with:
to: '{{cardholder_email}}'
subject: Your replacement card is on its way
body: 'Your card ending in {{cancel-card.last_four}} has been cancelled. A replacement will arrive within 2 business days. Case: {{create-case.number}}'
consumes:
- namespace: amex-cards
type: http
baseUri: https://api.americanexpress.com/v1/cards
authentication:
type: bearer
token: $secrets.amex_cards_token
resources:
- name: card
path: /cards/{card_id}
inputParameters:
- name: card_id
in: path
operations:
- name: cancel-card
method: POST
- name: order-replacement
method: POST
- namespace: servicenow
type: http
baseUri: https://americanexpress.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
- namespace: email
type: http
baseUri: https://api.americanexpress.com/v1/notifications
authentication:
type: bearer
token: $secrets.amex_notifications_token
resources:
- name: messages
path: /email/send
operations:
- name: send-email
method: POST
Retrieves recent resolved Salesforce Service Cloud cases, submits case notes to OpenAI for sentiment and theme extraction, and posts a digest to a Slack channel for the customer experience team.
naftiko: '0.5'
info:
label: Customer Sentiment Analysis from Support Cases
description: Retrieves recent resolved Salesforce Service Cloud cases, submits case notes to OpenAI for sentiment and theme extraction, and posts a digest to a Slack channel for the customer experience team.
tags:
- customer-support
- salesforce
- openai
- slack
- ai
- reporting
capability:
exposes:
- type: mcp
namespace: cx-intelligence
port: 8080
tools:
- name: digest-support-sentiment
description: Given a Salesforce queue name and date range, retrieve closed cases, send transcripts to OpenAI for sentiment analysis, and post a summary digest to Slack. Use when the CX team needs a weekly support sentiment report.
inputParameters:
- name: queue_name
in: body
type: string
description: The Salesforce Service Cloud queue name to analyze (e.g., AmexCardholderSupport).
- name: from_date
in: body
type: string
description: Start date for case retrieval in YYYY-MM-DD format.
- name: to_date
in: body
type: string
description: End date for case retrieval in YYYY-MM-DD format.
steps:
- name: get-cases
type: call
call: salesforce.query-cases
with:
queue: '{{queue_name}}'
closed_from: '{{from_date}}'
closed_to: '{{to_date}}'
- name: analyze-sentiment
type: call
call: openai.create-completion
with:
model: gpt-4o
prompt: 'Analyze the following support case summaries and return a JSON object with: overall_sentiment (positive/neutral/negative), top_themes (array of strings), and recommended_actions (array of strings). Cases: {{get-cases.summaries}}'
- name: post-digest
type: call
call: slack-cx.post-message
with:
channel: cx-insights
text: 'CX Sentiment Digest ({{from_date}} to {{to_date}}) | Queue: {{queue_name}} | Sentiment: {{analyze-sentiment.overall_sentiment}} | Top themes: {{analyze-sentiment.top_themes}}'
consumes:
- namespace: salesforce
type: http
baseUri: https://americanexpress.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: cases
path: /query
inputParameters:
- name: q
in: query
operations:
- name: query-cases
method: GET
- namespace: openai
type: http
baseUri: https://api.openai.com/v1
authentication:
type: bearer
token: $secrets.openai_api_key
resources:
- name: completion
path: /chat/completions
operations:
- name: create-completion
method: POST
- namespace: slack-cx
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors Datadog for transaction volume anomaly alerts and, when triggered, creates a PagerDuty incident and posts to the payments operations Slack channel.
naftiko: '0.5'
info:
label: Transaction Anomaly Monitoring Alert
description: Monitors Datadog for transaction volume anomaly alerts and, when triggered, creates a PagerDuty incident and posts to the payments operations Slack channel.
tags:
- observability
- datadog
- pagerduty
- slack
- payments
- monitoring
capability:
exposes:
- type: mcp
namespace: payments-observability
port: 8080
tools:
- name: handle-transaction-anomaly
description: Given a Datadog anomaly alert ID and severity, retrieve alert details, create a PagerDuty incident for the on-call payments team, and post a Slack notification. Use when transaction processing anomalies are detected.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog monitor alert ID for the transaction anomaly.
- name: severity
in: body
type: string
description: 'Alert severity level: critical, high, medium, or low.'
- name: affected_service
in: body
type: string
description: The name of the affected payments service or pipeline.
steps:
- name: get-alert
type: call
call: datadog-monitor.get-monitor
with:
monitor_id: '{{alert_id}}'
- name: create-pd-incident
type: call
call: pagerduty.create-incident
with:
title: Transaction anomaly on {{affected_service}} — severity {{severity}}
service_id: $secrets.pagerduty_payments_service_id
urgency: '{{severity}}'
body: 'Datadog alert {{alert_id}}: {{get-alert.message}}'
- name: post-slack
type: call
call: slack-payments.post-message
with:
channel: payments-ops
text: 'Transaction Anomaly Detected | Service: {{affected_service}} | Severity: {{severity}} | PagerDuty: {{create-pd-incident.incident_number}} | Alert: {{alert_id}}'
consumes:
- namespace: datadog-monitor
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: monitor
path: /monitor/{monitor_id}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_api_key
placement: header
resources:
- name: incident
path: /incidents
operations:
- name: create-incident
method: POST
- namespace: slack-payments
type: http
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: message
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a fraud signal is raised on a cardholder account, retrieves transaction details from the core payments platform, opens a ServiceNow incident, and sends a Twilio SMS alert to the cardholder.
naftiko: '0.5'
info:
label: Cardholder Fraud Alert Triage
description: When a fraud signal is raised on a cardholder account, retrieves transaction details from the core payments platform, opens a ServiceNow incident, and sends a Twilio SMS alert to the cardholder.
tags:
- fraud
- payments
- servicenow
- twilio
- incident-response
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: handle-fraud-alert
description: Given a card account ID and transaction ID, fetch transaction details, open a ServiceNow fraud incident, and send an SMS alert to the cardholder. Invoke when a fraud signal is detected on a cardholder account.
inputParameters:
- name: account_id
in: body
type: string
description: The cardholder account identifier from the payments platform.
- name: transaction_id
in: body
type: string
description: The transaction ID flagged as potentially fraudulent.
- name: cardholder_phone
in: body
type: string
description: The cardholder's mobile phone number in E.164 format for SMS notification.
steps:
- name: get-transaction
type: call
call: amex-payments.get-transaction
with:
account_id: '{{account_id}}'
transaction_id: '{{transaction_id}}'
- name: open-incident
type: call
call: servicenow.create-incident
with:
category: fraud
short_description: Fraud alert on account {{account_id}} — txn {{transaction_id}}
urgency: '1'
impact: '1'
- name: send-sms
type: call
call: twilio.send-sms
with:
to: '{{cardholder_phone}}'
body: 'American Express Alert: Suspicious activity detected on your account ending {{get-transaction.last_four}}. If unrecognized, call 1-800-528-4800. Ref: {{open-incident.number}}'
consumes:
- namespace: amex-payments
type: http
baseUri: https://api.americanexpress.com/v1/payments
authentication:
type: bearer
token: $secrets.amex_payments_token
resources:
- name: transaction
path: /accounts/{account_id}/transactions/{transaction_id}
inputParameters:
- name: account_id
in: path
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
- namespace: servicenow
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incident
path: /table/incident
operations:
- name: create-incident
method: POST
- namespace: twilio
type: http
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/{account_sid}/Messages.json
inputParameters:
- name: account_sid
in: path
operations:
- name: send-sms
method: POST
When a SAP Concur travel booking is submitted, validates it against the American Express travel policy and flags non-compliant bookings by creating a ServiceNow task for manager review.
naftiko: '0.5'
info:
label: Corporate Travel Booking Policy Compliance Check
description: When a SAP Concur travel booking is submitted, validates it against the American Express travel policy and flags non-compliant bookings by creating a ServiceNow task for manager review.
tags:
- travel
- expense-management
- sap-concur
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: travel-compliance
port: 8080
tools:
- name: check-travel-booking-compliance
description: Given a Concur travel booking ID, retrieve booking details and validate against policy rules. If non-compliant, create a ServiceNow approval task for the employee's manager. Use when travel bookings are submitted for pre-trip approval.
inputParameters:
- name: booking_id
in: body
type: string
description: The SAP Concur travel booking ID to validate.
- name: employee_id
in: body
type: string
description: The employee ID of the traveler.
steps:
- name: get-booking
type: call
call: concur-travel.get-booking
with:
booking_id: '{{booking_id}}'
- name: create-approval-task
type: call
call: servicenow-travel.create-task
with:
category: travel_compliance
short_description: 'Travel booking policy review required: {{booking_id}}'
description: 'Employee: {{employee_id}}
Destination: {{get-booking.destination}}
Cost: ${{get-booking.total_cost}}
Dates: {{get-booking.travel_dates}}
Booking: {{booking_id}}'
consumes:
- namespace: concur-travel
type: http
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_access_token
resources:
- name: booking
path: /travel/trips/{booking_id}
inputParameters:
- name: booking_id
in: path
operations:
- name: get-booking
method: GET
- namespace: servicenow-travel
type: http
baseUri: https://americanexpress.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: task
path: /table/sc_task
operations:
- name: create-task
method: POST
When a critical Datadog alert fires for a banking platform, creates a ServiceNow P1 incident, pages the on-call engineer via PagerDuty, and posts a war-room message to Microsoft Teams.
naftiko: '0.5'
info:
label: Critical IT Incident Response and Escalation
description: When a critical Datadog alert fires for a banking platform, creates a ServiceNow P1 incident, pages the on-call engineer via PagerDuty, and posts a war-room message to Microsoft Teams.
tags:
- itsm
- incident-response
- datadog
- servicenow
- pagerduty
- microsoft-teams
- operations
capability:
exposes:
- type: mcp
namespace: incident-ops
port: 8080
tools:
- name: handle-critical-incident
description: Given a Datadog alert with monitor ID, severity, and affected banking service, create a ServiceNow P1 incident, page PagerDuty on-call, and post a war-room alert to Teams.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that triggered the critical alert.
- name: affected_service
in: body
type: string
description: The affected banking service name, e.g. 'Online Banking Portal', 'ACH Processing'.
- name: alert_message
in: body
type: string
description: The Datadog alert message describing the failure condition.
- name: severity
in: body
type: string
description: 'Alert severity: ''critical'' or ''warning''.'
steps:
- name: create-p1-incident
type: call
call: servicenow.create-incident
with:
short_description: 'P1: {{affected_service}} — {{alert_message}}'
urgency: '1'
impact: '1'
category: infrastructure
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: 'CRITICAL: {{affected_service}} — {{alert_message}}'
service_id: $secrets.pagerduty_banking_service_id
severity: critical
body: 'Monitor: {{monitor_id}} | SNOW: {{create-p1-incident.number}}'
- name: open-war-room
type: call
call: msteams.post-channel-message
with:
channel: incident-war-room
message: 'P1 INCIDENT: {{affected_service}} | {{alert_message}} | SNOW: {{create-p1-incident.number}} | PD: {{page-oncall.id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://bankofamerica.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_api_key
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When an employee undergoes a role change in Workday, updates their Okta group memberships to match the new role profile and creates a ServiceNow task to confirm access provisioning.
naftiko: '0.5'
info:
label: Workday Role Change Access Provisioning
description: When an employee undergoes a role change in Workday, updates their Okta group memberships to match the new role profile and creates a ServiceNow task to confirm access provisioning.
tags:
- hr
- identity
- workday
- okta
- servicenow
- role-change
- access-management
capability:
exposes:
- type: mcp
namespace: hr-access
port: 8080
tools:
- name: sync-role-change-access
description: Given a Workday worker ID, new role, and old role, update Okta group memberships for the employee and create a ServiceNow provisioning confirmation task.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: Workday worker ID for the employee with the role change.
- name: new_role
in: body
type: string
description: The new job role from the BofA role catalogue.
- name: old_role
in: body
type: string
description: The previous job role for de-provisioning reference.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: update-okta-groups
type: call
call: okta.update-user-groups
with:
user_login: '{{get-worker.work_email}}'
add_group: '{{new_role}}'
remove_group: '{{old_role}}'
- name: create-task
type: call
call: servicenow.create-task
with:
short_description: 'Role change access update: {{get-worker.full_name}} — {{old_role}} to {{new_role}}'
assignment_group: IT_Access_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: workers
path: /bankofamerica/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://bankofamerica.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-groups
path: /users/{{user_login}}/groups
inputParameters:
- name: user_login
in: path
operations:
- name: update-user-groups
method: PUT
- type: http
namespace: servicenow
baseUri: https://bankofamerica.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
Triggers a Power BI dataset refresh for the Bank of America executive financial dashboard and posts status to the Finance Reporting Teams channel.
naftiko: '0.5'
info:
label: Power BI Executive Dashboard Refresh
description: Triggers a Power BI dataset refresh for the Bank of America executive financial dashboard and posts status to the Finance Reporting Teams channel.
tags:
- analytics
- power-bi
- microsoft-teams
- reporting
- finance
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: trigger-executive-dashboard-refresh
description: Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and notify the Finance Reporting Teams channel with the status and completion time.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace ID containing the dataset.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
steps:
- name: trigger-refresh
type: call
call: powerbi.trigger-refresh
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: notify-finance
type: call
call: msteams.post-channel-message
with:
channel: finance-reporting
message: 'Power BI refresh triggered for dataset {{dataset_id}}. Status: {{trigger-refresh.status}}'
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refreshes
path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{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 current market price for a security from Bloomberg Enterprise Data.
naftiko: '0.5'
info:
label: Bloomberg Security Price Lookup
description: Retrieves current market price for a security from Bloomberg Enterprise Data.
tags:
- banking
- bloomberg
- market-data
- trading
- lookup
capability:
exposes:
- type: mcp
namespace: market-ops
port: 8080
tools:
- name: get-security-price
description: Given a Bloomberg security identifier, return the last price, change, and volume.
inputParameters:
- name: security_id
in: body
type: string
description: Bloomberg security identifier.
call: bloomberg.get-quote
with:
securities: '{{security_id}}'
outputParameters:
- name: last_price
type: number
mapping: $.data[0].last_price
- name: change_pct
type: number
mapping: $.data[0].change_pct
consumes:
- namespace: bloomberg
type: http
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: quotes
path: /quotes?securities={{securities}}
operations:
- name: get-quote
method: GET
Fetches a Jira issue by key and returns the summary, status, assignee, and priority.
naftiko: '0.5'
info:
label: Jira Issue Detail Lookup
description: Fetches a Jira issue by key and returns the summary, status, assignee, and priority.
tags:
- banking
- engineering
- jira
- project-management
- lookup
capability:
exposes:
- type: mcp
namespace: eng-ops
port: 8080
tools:
- name: get-jira-issue
description: Given a Jira issue key, return the issue summary, status, assignee, and priority.
inputParameters:
- name: issue_key
in: body
type: string
description: Jira issue key.
call: jira.get-issue
with:
issueKey: '{{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:
- namespace: jira
type: http
baseUri: https://bofa.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_api_token
resources:
- name: eng-ops
path: /{{id}}
operations:
- name: get-issue
method: GET
Audits MFA enrollment by querying Okta for unenrolled users, creating compliance tasks in ServiceNow, and notifying IT security via Teams.
naftiko: '0.5'
info:
label: Okta MFA Enrollment Compliance Audit
description: Audits MFA enrollment by querying Okta for unenrolled users, creating compliance tasks in ServiceNow, and notifying IT security via Teams.
tags:
- banking
- security
- okta
- mfa
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: mfa-ops
port: 8080
tools:
- name: audit-mfa-compliance
description: Query Okta for users without MFA, create a compliance task in ServiceNow, and notify IT security in Teams.
inputParameters:
- name: department
in: body
type: string
description: Department to audit.
- name: security_lead_upn
in: body
type: string
description: UPN of security lead.
steps:
- name: get-unenrolled
type: call
call: okta.list-unenrolled
with:
department: '{{department}}'
- name: create-task
type: call
call: snow.create-task
with:
short_description: 'MFA non-compliance: {{department}}'
description: 'Unenrolled: {{get-unenrolled.count}}'
- name: notify-lead
type: call
call: msteams.send-message
with:
recipient_upn: '{{security_lead_upn}}'
text: 'MFA audit: {{department}} — {{get-unenrolled.count}} unenrolled. Task: {{create-task.number}}'
consumes:
- type: http
namespace: okta
baseUri: https://bofa.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: users
path: /users?filter=profile.department eq "{{department}}"
inputParameters:
- name: department
in: query
operations:
- name: list-unenrolled
method: GET
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_compliance_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the assigned relationship manager for a client account from Salesforce.
naftiko: '0.5'
info:
label: Salesforce Relationship Manager Assignment Lookup
description: Retrieves the assigned relationship manager for a client account from Salesforce.
tags:
- banking
- salesforce
- relationship-management
- lookup
capability:
exposes:
- type: mcp
namespace: rm-ops
port: 8080
tools:
- name: get-rm-assignment
description: Given a client account ID, return the relationship manager name, email, and last contact date.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID.
call: sf.get-rm
with:
accountId: '{{account_id}}'
outputParameters:
- name: rm_name
type: string
mapping: $.Owner.Name
- name: rm_email
type: string
mapping: $.Owner.Email
- name: last_contact
type: string
mapping: $.Last_Contact_Date__c
consumes:
- namespace: sf
type: http
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{accountId}}
operations:
- name: get-rm
method: GET
Screens wire transfers by checking patterns in Snowflake, creating a hold in SAP, and alerting the fraud team.
naftiko: '0.5'
info:
label: Wire Transfer Fraud Screening Workflow
description: Screens wire transfers by checking patterns in Snowflake, creating a hold in SAP, and alerting the fraud team.
tags:
- banking
- fraud-detection
- payments
- snowflake
- sap
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: screen-wire-transfer
description: Given a wire transfer ID and amount, check patterns in Snowflake, hold in SAP, and alert fraud team.
inputParameters:
- name: transfer_id
in: body
type: string
description: Transfer ID.
- name: amount
in: body
type: number
description: Amount.
- name: fraud_channel_id
in: body
type: string
description: Fraud channel.
steps:
- name: check
type: call
call: snowflake.check-wire
with:
transfer_id: '{{transfer_id}}'
amount: '{{amount}}'
- name: hold
type: call
call: sap-fi.create-hold
with:
transfer_id: '{{transfer_id}}'
reason: 'Screening: {{check.risk_level}}'
- name: alert
type: call
call: msteams.post-channel
with:
channel_id: '{{fraud_channel_id}}'
text: 'Wire screening: {{transfer_id}} — ${{amount}}. Risk: {{check.risk_level}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: check-wire
method: POST
- type: http
namespace: sap-fi
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: holds
path: /A_JournalEntry
operations:
- name: create-hold
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
operations:
- name: post-channel
method: POST
Coordinates BC drills by pulling participant lists from Workday, creating tasks in ServiceNow, and distributing instructions via Teams.
naftiko: '0.5'
info:
label: Business Continuity Drill Coordinator
description: Coordinates BC drills by pulling participant lists from Workday, creating tasks in ServiceNow, and distributing instructions via Teams.
tags:
- banking
- operations
- business-continuity
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: bcp-ops
port: 8080
tools:
- name: coordinate-bc-drill
description: Given a drill scenario and date, pull department staff from Workday, create drill tasks in ServiceNow, and post instructions to Teams.
inputParameters:
- name: drill_scenario
in: body
type: string
description: Drill scenario.
- name: drill_date
in: body
type: string
description: Drill date.
- name: bcp_channel_id
in: body
type: string
description: Teams channel ID.
steps:
- name: get-participants
type: call
call: workday.get-staff
with:
scenario: '{{drill_scenario}}'
- name: create-task
type: call
call: snow.create-task
with:
short_description: 'BC Drill: {{drill_scenario}} — {{drill_date}}'
description: 'Participants: {{get-participants.count}}'
- name: notify-channel
type: call
call: msteams.post-channel
with:
channel_id: '{{bcp_channel_id}}'
text: 'BC Drill: {{drill_scenario}} on {{drill_date}}. Participants: {{get-participants.count}}. Task: {{create-task.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Human_Resources/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: staff
path: /workers
operations:
- name: get-staff
method: GET
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_bc_drill
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Validates period-end journal entries by pulling entries from SAP, cross-checking balances in Snowflake, and notifying the controller via Teams.
naftiko: '0.5'
info:
label: SAP Period-End Journal Entry Validation
description: Validates period-end journal entries by pulling entries from SAP, cross-checking balances in Snowflake, and notifying the controller via Teams.
tags:
- banking
- finance
- accounting
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: gl-ops
port: 8080
tools:
- name: validate-journal-entries
description: Given a company code and posting period, retrieve journal entries from SAP, validate against Snowflake, and notify the controller of discrepancies.
inputParameters:
- name: company_code
in: body
type: string
description: SAP company code.
- name: posting_period
in: body
type: string
description: Posting period.
- name: controller_upn
in: body
type: string
description: UPN of controller.
steps:
- name: get-entries
type: call
call: sap-fi.get-journal-entries
with:
company_code: '{{company_code}}'
period: '{{posting_period}}'
- name: validate-balances
type: call
call: snowflake.check-recon
with:
company_code: '{{company_code}}'
period: '{{posting_period}}'
- name: notify-controller
type: call
call: msteams.send-message
with:
recipient_upn: '{{controller_upn}}'
text: 'Period-end validation: {{company_code}} — {{posting_period}}. Entries: {{get-entries.count}} | Status: {{validate-balances.status}}'
consumes:
- type: http
namespace: sap
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: entries
path: /A_JournalEntry?$filter=CompanyCode eq '{{company_code}}'
inputParameters:
- name: company_code
in: query
operations:
- name: get-journal-entries
method: GET
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: check-recon
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Queries Dynatrace for the response time and failure rate of a specified application.
naftiko: '0.5'
info:
label: Dynatrace Application Metrics Lookup
description: Queries Dynatrace for the response time and failure rate of a specified application.
tags:
- banking
- it-operations
- dynatrace
- monitoring
- lookup
capability:
exposes:
- type: mcp
namespace: apm-ops
port: 8080
tools:
- name: get-app-metrics
description: Given a Dynatrace entity ID, return the median response time and failure rate.
inputParameters:
- name: entity_id
in: body
type: string
description: Dynatrace application entity ID.
call: dynatrace.get-metrics
with:
entityId: '{{entity_id}}'
outputParameters:
- name: response_time_ms
type: number
mapping: $.result[0].data[0].values.median
- name: failure_rate
type: number
mapping: $.result[1].data[0].values.avg
consumes:
- namespace: dynatrace
type: http
baseUri: https://bofa.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: apm-ops
path: /{{id}}
operations:
- name: get-metrics
method: GET
Generates a daily VaR report by pulling positions from Snowflake, computing VaR, and posting to Teams.
naftiko: '0.5'
info:
label: Market Risk Daily VaR Reporter
description: Generates a daily VaR report by pulling positions from Snowflake, computing VaR, and posting to Teams.
tags:
- banking
- market-risk
- trading
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: risk-ops
port: 8080
tools:
- name: generate-var-report
description: Given a trading desk and date, pull positions, compute VaR, and post to the risk channel.
inputParameters:
- name: trading_desk
in: body
type: string
description: Trading desk.
- name: report_date
in: body
type: string
description: Report date.
- name: risk_channel_id
in: body
type: string
description: Risk channel.
steps:
- name: get-positions
type: call
call: snowflake.query-positions
with:
desk: '{{trading_desk}}'
date: '{{report_date}}'
- name: compute-var
type: call
call: snowflake.compute-var
with:
desk: '{{trading_desk}}'
- name: post-report
type: call
call: msteams.post-channel
with:
channel_id: '{{risk_channel_id}}'
text: 'VaR: {{trading_desk}} — {{report_date}}. VaR(95): ${{compute-var.var_95}} | VaR(99): ${{compute-var.var_99}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-positions
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
operations:
- name: post-channel
method: POST
Checks capital adequacy by pulling RWA from Snowflake, comparing SAP capital, and reporting to compliance.
naftiko: '0.5'
info:
label: Regulatory Capital Adequacy Reporter
description: Checks capital adequacy by pulling RWA from Snowflake, comparing SAP capital, and reporting to compliance.
tags:
- banking
- regulatory
- capital
- snowflake
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: capital-ops
port: 8080
tools:
- name: check-capital
description: Given a report date, pull RWA from Snowflake, compare with SAP capital, and notify compliance.
inputParameters:
- name: report_date
in: body
type: string
description: Report date.
- name: compliance_channel_id
in: body
type: string
description: Compliance channel.
steps:
- name: get-rwa
type: call
call: snowflake.query-rwa
with:
date: '{{report_date}}'
- name: get-capital
type: call
call: sap-fi.get-capital
with:
date: '{{report_date}}'
- name: notify
type: call
call: msteams.post-channel
with:
channel_id: '{{compliance_channel_id}}'
text: 'Capital adequacy: RWA: ${{get-rwa.total}} | Capital: ${{get-capital.total}} | Ratio: {{get-capital.ratio}}%'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-rwa
method: POST
- type: http
namespace: sap-fi
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: capital
path: /A_JournalEntry
operations:
- name: get-capital
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
operations:
- name: post-channel
method: POST
Fetches LinkedIn Talent Solutions job posting performance metrics and combines them with Workday recruiting pipeline data to produce a weekly talent acquisition digest for the Recruiting Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Talent Acquisition Campaign Report
description: Fetches LinkedIn Talent Solutions job posting performance metrics and combines them with Workday recruiting pipeline data to produce a weekly talent acquisition digest for the Recruiting Teams channel.
tags:
- hr
- recruiting
- linkedin
- workday
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: digest-recruiting-pipeline
description: Given a LinkedIn organization URN and date range, fetch job posting metrics and merge with Workday open requisition counts, then post a weekly recruiting digest to the Talent Acquisition Teams channel.
inputParameters:
- name: org_urn
in: body
type: string
description: The LinkedIn organization URN for Bank of America.
- 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-linkedin-job-metrics
type: call
call: linkedin.get-job-postings
with:
organizationalEntity: '{{org_urn}}'
- name: get-workday-requisitions
type: call
call: workday.list-open-requisitions
with:
asOfDate: '{{end_date}}'
- name: post-recruiting-digest
type: call
call: msteams.post-channel-message
with:
channel: talent-acquisition
message: 'Recruiting digest ({{start_date}} to {{end_date}}): LinkedIn job views {{get-linkedin-job-metrics.views}}, Applications {{get-linkedin-job-metrics.applications}}, Workday open reqs: {{get-workday-requisitions.count}}'
consumes:
- 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: get-job-postings
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: requisitions
path: /bankofamerica/recruitingJobRequisitions
operations:
- name: list-open-requisitions
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Looks up a ServiceNow incident by number and returns current state, priority, and assigned group.
naftiko: '0.5'
info:
label: ServiceNow Incident Status Check
description: Looks up a ServiceNow incident by number and returns current state, priority, and assigned group.
tags:
- banking
- it-operations
- servicenow
- incident-management
- lookup
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: get-incident-status
description: Given a ServiceNow incident number, return the state, priority, and assignment group.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number.
call: snow.get-incident
with:
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.assignment_group.display_value
consumes:
- namespace: snow
type: http
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: it-ops
path: /{{id}}
operations:
- name: get-incident
method: GET
Tracks compliance training by pulling enrollment data from Workday Learning, checking ServiceNow escalation thresholds, and notifying managers via Teams.
naftiko: '0.5'
info:
label: Compliance Training Completion Tracker
description: Tracks compliance training by pulling enrollment data from Workday Learning, checking ServiceNow escalation thresholds, and notifying managers via Teams.
tags:
- banking
- compliance
- training
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance-training
port: 8080
tools:
- name: track-training-completion
description: Given a program ID and deadline, query Workday for incomplete enrollments, check escalation status in ServiceNow, and notify managers in Teams.
inputParameters:
- name: program_id
in: body
type: string
description: Training program ID.
- name: deadline
in: body
type: string
description: Deadline date.
steps:
- name: get-enrollments
type: call
call: workday.get-training-status
with:
program_id: '{{program_id}}'
- name: check-escalation
type: call
call: snow.check-escalation
with:
program_id: '{{program_id}}'
deadline: '{{deadline}}'
- name: notify-managers
type: call
call: msteams.send-notification
with:
subject: 'Training overdue: {{program_id}}'
body: 'Deadline: {{deadline}}. Incomplete: {{get-enrollments.incomplete_count}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Learning/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: training
path: /learning-enrollments?program={{program_id}}
inputParameters:
- name: program_id
in: query
operations:
- name: get-training-status
method: GET
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: escalation
path: /table/u_training_compliance
operations:
- name: check-escalation
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Generates a daily Value-at-Risk report by pulling positions from Snowflake, computing VaR, and distributing to risk management via Teams.
naftiko: '0.5'
info:
label: Market Risk Daily VaR Report
description: Generates a daily Value-at-Risk report by pulling positions from Snowflake, computing VaR, and distributing to risk management via Teams.
tags:
- banking
- market-risk
- trading
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: risk-ops
port: 8080
tools:
- name: generate-var-report
description: Given a trading desk and report date, pull positions from Snowflake, compute VaR metrics, and post to the risk channel.
inputParameters:
- name: trading_desk
in: body
type: string
description: Trading desk name.
- name: report_date
in: body
type: string
description: Report date.
- name: risk_channel_id
in: body
type: string
description: Risk Teams channel.
steps:
- name: get-positions
type: call
call: snowflake.query-positions
with:
desk: '{{trading_desk}}'
date: '{{report_date}}'
- name: compute-var
type: call
call: snowflake.compute-var
with:
desk: '{{trading_desk}}'
date: '{{report_date}}'
- name: post-report
type: call
call: msteams.post-channel
with:
channel_id: '{{risk_channel_id}}'
text: 'Daily VaR: {{trading_desk}} — {{report_date}}. VaR(95): ${{compute-var.var_95}} | VaR(99): ${{compute-var.var_99}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-positions
method: POST
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: compute-var
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Looks up a trading platform incident in ServiceNow by incident number and returns status, severity, and affected trading system.
naftiko: '0.5'
info:
label: ServiceNow Trading Incident Lookup
description: Looks up a trading platform incident in ServiceNow by incident number and returns status, severity, and affected trading system.
tags:
- banking
- banking
- trading
- servicenow
- incident-management
- lookup
capability:
exposes:
- type: mcp
namespace: trading-ops
port: 8080
tools:
- name: get-trading-incident
description: Given a ServiceNow incident number, return the incident state, severity, affected trading system, and resolution target.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number.
call: snow.get-incident
with:
number: '{{incident_number}}'
outputParameters:
- name: state
type: string
mapping: $.result.state
- name: severity
type: string
mapping: $.result.severity
- name: system
type: string
mapping: $.result.cmdb_ci.display_value
consumes:
- namespace: snow
type: http
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: trading-ops
path: /{{id}}
operations:
- name: get-incident
method: GET
Generates a daily treasury report by pulling SAP balances, Snowflake market rates, and posting to Teams.
naftiko: '0.5'
info:
label: Treasury Cash Position Daily Report
description: Generates a daily treasury report by pulling SAP balances, Snowflake market rates, and posting to Teams.
tags:
- banking
- treasury
- finance
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: treasury-ops
port: 8080
tools:
- name: generate-cash-report
description: Given a report date, pull cash balances from SAP, get market rates from Snowflake, and post to Teams.
inputParameters:
- name: report_date
in: body
type: string
description: Report date.
- name: treasury_channel_id
in: body
type: string
description: Treasury channel.
steps:
- name: get-balances
type: call
call: sap-fi.get-cash
with:
date: '{{report_date}}'
- name: get-rates
type: call
call: snowflake.get-rates
with:
date: '{{report_date}}'
- name: post-report
type: call
call: msteams.post-channel
with:
channel_id: '{{treasury_channel_id}}'
text: 'Treasury {{report_date}}: Cash: ${{get-balances.total}} | Rates updated.'
consumes:
- type: http
namespace: sap-fi
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: balances
path: /A_JournalEntry
operations:
- name: get-cash
method: GET
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-rates
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
operations:
- name: post-channel
method: POST
Enriches Salesforce account health scores by pulling data from Snowflake, checking billing in SAP, and updating the Salesforce record.
naftiko: '0.5'
info:
label: Salesforce Account Health Enrichment
description: Enriches Salesforce account health scores by pulling data from Snowflake, checking billing in SAP, and updating the Salesforce record.
tags:
- banking
- crm
- salesforce
- snowflake
- sap
capability:
exposes:
- type: mcp
namespace: account-ops
port: 8080
tools:
- name: enrich-account-health
description: Given a Salesforce account ID, pull performance data from Snowflake, check billing in SAP, and update the health score in Salesforce.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID.
- name: account_manager_upn
in: body
type: string
description: UPN of account manager.
steps:
- name: get-data
type: call
call: snowflake.query-account-data
with:
account_id: '{{account_id}}'
- name: get-billing
type: call
call: sap-fi.get-ar-aging
with:
account_id: '{{account_id}}'
- name: update-sf
type: call
call: sf.update-health-score
with:
account_id: '{{account_id}}'
score: '{{get-data.health_score}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{account_manager_upn}}'
text: 'Account health updated: {{account_id}}. Score: {{get-data.health_score}} | AR: {{get-billing.days_outstanding}} days'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-account-data
method: POST
- type: http
namespace: sap
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: ar
path: /A_JournalEntry?$filter=AccountID eq '{{account_id}}'
inputParameters:
- name: account_id
in: query
operations:
- name: get-ar-aging
method: GET
- type: http
namespace: sf
baseUri: https://bofa.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-health-score
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a Snowflake pipeline fails, creates a Jira incident, pages the on-call engineer via PagerDuty, and notifies the pipeline owner in Teams.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Failure Response
description: When a Snowflake pipeline fails, creates a Jira incident, pages the on-call engineer via PagerDuty, and notifies the pipeline owner in Teams.
tags:
- banking
- data-engineering
- snowflake
- jira
- pagerduty
capability:
exposes:
- type: mcp
namespace: data-reliability
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a Snowflake task name and error, create a Jira incident, trigger a PagerDuty alert, and notify the owner in Teams.
inputParameters:
- name: task_name
in: body
type: string
description: Snowflake task name.
- name: error_message
in: body
type: string
description: Error message.
- name: pipeline_owner
in: body
type: string
description: Pipeline owner email.
steps:
- name: create-incident
type: call
call: jira.create-issue
with:
project: DATA
summary: 'Pipeline failure: {{task_name}}'
description: 'Error: {{error_message}}'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
service_id: data-engineering
title: 'Pipeline failure: {{task_name}}'
- name: notify-owner
type: call
call: msteams.send-message
with:
recipient_upn: '{{pipeline_owner}}'
text: 'Pipeline failure: {{task_name}}. Jira: {{create-incident.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://bofa.atlassian.net/rest/api/3
authentication:
type: bearer
token: $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.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Queries Snowflake to return the row count and last update timestamp for a specified data table.
naftiko: '0.5'
info:
label: Snowflake Table Row Count Check
description: Queries Snowflake to return the row count and last update timestamp for a specified data table.
tags:
- banking
- data-engineering
- snowflake
- analytics
- lookup
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: get-table-stats
description: Given a Snowflake table name, return the row count and last DML timestamp.
inputParameters:
- name: table_name
in: body
type: string
description: Fully qualified Snowflake table name.
call: snowflake.query-stats
with:
table: '{{table_name}}'
outputParameters:
- name: row_count
type: integer
mapping: $.data[0].ROW_COUNT
- name: last_altered
type: string
mapping: $.data[0].LAST_ALTERED
consumes:
- namespace: snowflake
type: http
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: data-ops
path: /{{id}}
operations:
- name: query-stats
method: GET
Generates a performance calibration report by pulling ratings from Workday, aggregating in Snowflake, and distributing to HR leadership via Teams.
naftiko: '0.5'
info:
label: Workday Performance Calibration Report
description: Generates a performance calibration report by pulling ratings from Workday, aggregating in Snowflake, and distributing to HR leadership via Teams.
tags:
- banking
- hr
- performance-management
- workday
- snowflake
capability:
exposes:
- type: mcp
namespace: perf-ops
port: 8080
tools:
- name: generate-calibration-report
description: Given a review cycle and business unit, pull ratings from Workday, aggregate in Snowflake, and post to HR leadership channel.
inputParameters:
- name: review_cycle
in: body
type: string
description: Review cycle ID.
- name: business_unit
in: body
type: string
description: Business unit.
- name: hr_channel_id
in: body
type: string
description: HR Teams channel ID.
steps:
- name: get-ratings
type: call
call: workday.get-performance-data
with:
cycle: '{{review_cycle}}'
bu: '{{business_unit}}'
- name: aggregate
type: call
call: snowflake.aggregate-ratings
with:
cycle: '{{review_cycle}}'
bu: '{{business_unit}}'
- name: post-report
type: call
call: msteams.post-channel
with:
channel_id: '{{hr_channel_id}}'
text: 'Calibration: {{business_unit}} — {{review_cycle}}. Exceeds: {{aggregate.exceeds_pct}}% | Meets: {{aggregate.meets_pct}}%'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Performance_Management/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: reviews
path: /performance-reviews
operations:
- name: get-performance-data
method: GET
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: aggregate-ratings
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When a GitHub Actions deployment workflow fails on the main banking platform branch, creates a Jira incident ticket, and notifies the Engineering leadership team via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Actions Deployment Failure Handler
description: When a GitHub Actions deployment workflow fails on the main banking platform branch, creates a Jira incident ticket, and notifies the Engineering leadership team via Microsoft Teams.
tags:
- devops
- ci-cd
- github
- jira
- microsoft-teams
- deployment
capability:
exposes:
- type: mcp
namespace: devops-cicd
port: 8080
tools:
- name: handle-deployment-failure
description: Given a failed GitHub Actions run ID and repository, retrieve failure details, create a Jira incident, and post an alert to the DevOps Teams channel.
inputParameters:
- name: repo_full_name
in: body
type: string
description: The GitHub repository full name, e.g. 'bankofamerica/payments-api'.
- name: run_id
in: body
type: integer
description: The GitHub Actions workflow run ID that failed.
- name: branch
in: body
type: string
description: The branch that was being deployed, typically 'main'.
steps:
- name: get-run
type: call
call: github.get-workflow-run
with:
repo: '{{repo_full_name}}'
run_id: '{{run_id}}'
- name: create-jira-incident
type: call
call: jira.create-issue
with:
project_key: OPS
issuetype: Incident
summary: 'Deployment failure: {{repo_full_name}} on {{branch}}'
description: 'Run: {{run_id}} | Status: {{get-run.conclusion}} | URL: {{get-run.html_url}}'
- name: alert-teams
type: call
call: msteams.post-channel-message
with:
channel: devops-alerts
message: 'Deployment FAILED: {{repo_full_name}} | Branch: {{branch}} | Jira: {{create-jira-incident.key}} | Run: {{get-run.html_url}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-runs
path: /repos/{{repo}}/actions/runs/{{run_id}}
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: https://bankofamerica.atlassian.net/rest/api/3
authentication:
type: 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
Looks up the approval status, dates, and leave type of an employee absence request in Workday by request ID.
naftiko: '0.5'
info:
label: Workday Absence Request Status Lookup
description: Looks up the approval status, dates, and leave type of an employee absence request in Workday by request ID.
tags:
- hr
- workday
- absence-management
- lookup
capability:
exposes:
- type: mcp
namespace: hr-absence
port: 8080
tools:
- name: get-absence-request-status
description: Given a Workday absence request ID, return the current approval status, leave start/end dates, leave type, and approver name. Use for manager review or employee self-service.
inputParameters:
- name: absence_request_id
in: body
type: string
description: The Workday absence request ID to look up.
call: workday.get-absence-request
with:
request_id: '{{absence_request_id}}'
outputParameters:
- name: status
type: string
mapping: $.data.approvalStatus
- name: start_date
type: string
mapping: $.data.startDate
- name: end_date
type: string
mapping: $.data.endDate
- name: leave_type
type: string
mapping: $.data.leaveType
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: absence-requests
path: /bankofamerica/absenceRequests/{{request_id}}
inputParameters:
- name: request_id
in: path
operations:
- name: get-absence-request
method: GET
Queries Azure Cost Management for the current month spend of a specified resource group.
naftiko: '0.5'
info:
label: Azure Resource Group Cost Check
description: Queries Azure Cost Management for the current month spend of a specified resource group.
tags:
- banking
- cloud
- azure
- finops
- lookup
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: get-rg-cost
description: Given an Azure resource group name, return the current month total cost and forecast.
inputParameters:
- name: resource_group
in: body
type: string
description: Azure resource group name.
call: azure-cost.get-cost
with:
resourceGroup: '{{resource_group}}'
outputParameters:
- name: total_cost
type: number
mapping: $.properties.rows[0][0]
- name: forecast
type: number
mapping: $.properties.rows[0][1]
consumes:
- namespace: azure-cost
type: http
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: cloud-finops
path: /{{id}}
operations:
- name: get-cost
method: GET
Generates a talent brand performance report by pulling LinkedIn analytics, comparing with Workday hiring data, and posting to Teams.
naftiko: '0.5'
info:
label: LinkedIn Talent Brand Performance Report
description: Generates a talent brand performance report by pulling LinkedIn analytics, comparing with Workday hiring data, and posting to Teams.
tags:
- banking
- hr
- talent-acquisition
- linkedin
- workday
capability:
exposes:
- type: mcp
namespace: ta-ops
port: 8080
tools:
- name: generate-talent-report
description: Given a reporting week, pull LinkedIn employer brand metrics, compare against Workday requisitions, and post a digest to Teams.
inputParameters:
- name: week
in: body
type: string
description: Reporting week.
- name: region
in: body
type: string
description: Region.
- name: ta_channel_id
in: body
type: string
description: Teams channel ID.
steps:
- name: get-metrics
type: call
call: linkedin.get-brand-metrics
with:
week: '{{week}}'
region: '{{region}}'
- name: get-reqs
type: call
call: workday.get-open-reqs
with:
region: '{{region}}'
- name: post-digest
type: call
call: msteams.post-channel
with:
channel_id: '{{ta_channel_id}}'
text: 'Talent Brand: {{week}} ({{region}}). Impressions: {{get-metrics.impressions}} | Open reqs: {{get-reqs.count}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: analytics
path: /organizationalEntityShareStatistics
operations:
- name: get-brand-metrics
method: GET
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Recruiting/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: requisitions
path: /job-requisitions
operations:
- name: get-open-reqs
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Compiles an executive KPI digest by pulling metrics from Snowflake, refreshing Power BI, and emailing the C-suite.
naftiko: '0.5'
info:
label: Executive KPI Dashboard Digest
description: Compiles an executive KPI digest by pulling metrics from Snowflake, refreshing Power BI, and emailing the C-suite.
tags:
- banking
- reporting
- analytics
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: exec-reporting
port: 8080
tools:
- name: generate-kpi-digest
description: Given a reporting period, pull KPIs from Snowflake, refresh the Power BI executive dashboard, and email the digest.
inputParameters:
- name: period
in: body
type: string
description: Reporting period.
- name: exec_dl
in: body
type: string
description: Executive DL email.
steps:
- name: get-kpis
type: call
call: snowflake.query-kpis
with:
period: '{{period}}'
- name: refresh-pbi
type: call
call: powerbi.trigger-refresh
with:
datasetId: executive-dashboard
- name: send-digest
type: call
call: msgraph.send-mail
with:
to: '{{exec_dl}}'
subject: Executive KPI Digest — {{period}}
body: Key metrics refreshed. Dashboard updated.
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-kpis
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/noreply@bofa.com/sendMail
operations:
- name: send-mail
method: POST
Monitors regulatory filing deadlines by querying Snowflake, checking preparation status in ServiceNow, and alerting the compliance team in Teams.
naftiko: '0.5'
info:
label: Regulatory Filing Deadline Monitor
description: Monitors regulatory filing deadlines by querying Snowflake, checking preparation status in ServiceNow, and alerting the compliance team in Teams.
tags:
- banking
- compliance
- regulatory
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: track-filing-deadlines
description: Given a jurisdiction and filing type, check the filing calendar in Snowflake, verify status in ServiceNow, and alert the compliance channel in Teams.
inputParameters:
- name: jurisdiction
in: body
type: string
description: Jurisdiction.
- name: filing_type
in: body
type: string
description: Filing type.
- name: compliance_channel_id
in: body
type: string
description: Teams channel ID.
steps:
- name: get-deadlines
type: call
call: snowflake.query-filings
with:
jurisdiction: '{{jurisdiction}}'
- name: check-status
type: call
call: snow.get-filing-status
with:
jurisdiction: '{{jurisdiction}}'
- name: alert-team
type: call
call: msteams.post-channel
with:
channel_id: '{{compliance_channel_id}}'
text: 'Filing deadline: {{filing_type}} for {{jurisdiction}} — Due: {{get-deadlines.next_deadline}} | Status: {{check-status.status}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-filings
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: filings
path: /table/u_regulatory_filing?sysparm_query=jurisdiction={{jurisdiction}}
inputParameters:
- name: jurisdiction
in: query
operations:
- name: get-filing-status
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When a critical vulnerability is discovered, creates a Jira remediation ticket, updates the CMDB in ServiceNow, and alerts the security team via Teams.
naftiko: '0.5'
info:
label: IT Security Vulnerability Remediation Workflow
description: When a critical vulnerability is discovered, creates a Jira remediation ticket, updates the CMDB in ServiceNow, and alerts the security team via Teams.
tags:
- banking
- security
- vulnerability-management
- jira
- servicenow
capability:
exposes:
- type: mcp
namespace: secops
port: 8080
tools:
- name: remediate-vulnerability
description: Given a CVE ID, severity, and affected system, create a Jira ticket, update the ServiceNow CMDB, and notify SecOps in Teams.
inputParameters:
- name: cve_id
in: body
type: string
description: CVE identifier.
- name: severity
in: body
type: string
description: Severity level.
- name: affected_system
in: body
type: string
description: Affected system name.
- name: secops_upn
in: body
type: string
description: UPN of SecOps lead.
steps:
- name: create-ticket
type: call
call: jira.create-issue
with:
project: SECOPS
summary: Remediate {{cve_id}} — {{affected_system}}
description: 'Severity: {{severity}} | System: {{affected_system}}'
- name: update-cmdb
type: call
call: snow.update-ci
with:
ci_name: '{{affected_system}}'
vulnerability: '{{cve_id}} — {{severity}}'
- name: notify-secops
type: call
call: msteams.send-message
with:
recipient_upn: '{{secops_upn}}'
text: 'Vulnerability: {{cve_id}} ({{severity}}) on {{affected_system}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://bofa.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci?sysparm_query=name={{ci_name}}
inputParameters:
- name: ci_name
in: query
operations:
- name: update-ci
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the current state of a Terraform Cloud workspace, returning last run status and resource count.
naftiko: '0.5'
info:
label: Terraform Workspace State Check
description: Retrieves the current state of a Terraform Cloud workspace, returning last run status and resource count.
tags:
- banking
- devops
- terraform
- infrastructure
- lookup
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: get-workspace-state
description: Given a Terraform Cloud workspace name, return the last run status and managed resource count.
inputParameters:
- name: workspace_name
in: body
type: string
description: Terraform Cloud workspace name.
call: tfc.get-workspace
with:
workspace: '{{workspace_name}}'
outputParameters:
- name: last_run_status
type: string
mapping: $.data.attributes.latest-run.status
- name: resource_count
type: integer
mapping: $.data.attributes.resource-count
consumes:
- namespace: tfc
type: http
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: infra-ops
path: /{{id}}
operations:
- name: get-workspace
method: GET
Retrieves the latest build run for an Azure DevOps pipeline, returning status and result.
naftiko: '0.5'
info:
label: Azure DevOps Build Status Lookup
description: Retrieves the latest build run for an Azure DevOps pipeline, returning status and result.
tags:
- banking
- devops
- azure-devops
- cicd
- lookup
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: get-build-status
description: Given an Azure DevOps project and pipeline ID, return the latest build status and result.
inputParameters:
- name: project
in: body
type: string
description: Azure DevOps project name.
- name: pipeline_id
in: body
type: string
description: Pipeline ID.
call: azdo.get-run
with:
project: '{{project}}'
pipelineId: '{{pipeline_id}}'
outputParameters:
- name: status
type: string
mapping: $.value[0].state
- name: result
type: string
mapping: $.value[0].result
consumes:
- namespace: azdo
type: http
baseUri: https://dev.azure.com/bofa
authentication:
type: bearer
token: $secrets.azdo_token
resources:
- name: cicd-ops
path: /{{id}}
operations:
- name: get-run
method: GET
Detects Terraform state drift, creates a Jira remediation ticket, and alerts the platform team in Teams.
naftiko: '0.5'
info:
label: Terraform Drift Detection and Remediation
description: Detects Terraform state drift, creates a Jira remediation ticket, and alerts the platform team in Teams.
tags:
- banking
- devops
- terraform
- jira
- infrastructure
capability:
exposes:
- type: mcp
namespace: platform-drift
port: 8080
tools:
- name: handle-terraform-drift
description: Given a Terraform workspace, check for drift, create a Jira ticket if detected, and notify platform engineering in Teams.
inputParameters:
- name: workspace_name
in: body
type: string
description: Terraform workspace name.
- name: platform_channel_id
in: body
type: string
description: Teams channel ID.
steps:
- name: check-drift
type: call
call: tfc.run-plan
with:
workspace: '{{workspace_name}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: PLATFORM
summary: 'Drift detected: {{workspace_name}}'
description: 'Changes: {{check-drift.resource_changes}}'
- name: notify-team
type: call
call: msteams.post-channel
with:
channel_id: '{{platform_channel_id}}'
text: 'Terraform drift: {{workspace_name}} — {{check-drift.resource_changes}} changes. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: tfc
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /workspaces/{{workspace}}/runs
inputParameters:
- name: workspace
in: path
operations:
- name: run-plan
method: POST
- type: http
namespace: jira
baseUri: https://bofa.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When an AML alert fires, enriches from Snowflake, creates a SAR investigation in ServiceNow, and notifies the BSA officer.
naftiko: '0.5'
info:
label: AML Transaction Monitoring Workflow
description: When an AML alert fires, enriches from Snowflake, creates a SAR investigation in ServiceNow, and notifies the BSA officer.
tags:
- banking
- aml
- compliance
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: aml-ops
port: 8080
tools:
- name: handle-aml-alert
description: Given a transaction ID and alert type, enrich from Snowflake, create a SAR in ServiceNow, and notify BSA.
inputParameters:
- name: transaction_id
in: body
type: string
description: Transaction ID.
- name: alert_type
in: body
type: string
description: Alert type.
- name: bsa_upn
in: body
type: string
description: BSA officer UPN.
steps:
- name: enrich
type: call
call: snowflake.get-transaction
with:
transaction_id: '{{transaction_id}}'
- name: create-sar
type: call
call: snow.create-sar
with:
short_description: 'AML: {{transaction_id}} — {{alert_type}}'
description: 'Amount: {{enrich.amount}}'
- name: notify
type: call
call: msteams.send-message
with:
recipient_upn: '{{bsa_upn}}'
text: 'AML: {{transaction_id}} — {{alert_type}}. Amount: {{enrich.amount}}. SAR: {{create-sar.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-transaction
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: sar
path: /table/u_sar_investigation
operations:
- name: create-sar
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
operations:
- name: send-message
method: POST
Retrieves an employee profile from Workday by employee ID, returning name, department, title, and manager.
naftiko: '0.5'
info:
label: Workday Employee Profile Lookup
description: Retrieves an employee profile from Workday by employee ID, returning name, department, title, and manager.
tags:
- banking
- hr
- workday
- employee-management
- lookup
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: get-employee-profile
description: Given a Workday employee ID, return the employee full name, department, job title, and manager name.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID.
call: workday.get-worker
with:
Worker_ID: '{{employee_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.Worker.Worker_Data.Personal_Data.Name_Data.Legal_Name
- name: department
type: string
mapping: $.Worker.Worker_Data.Organization_Data.Organization_Name
- name: title
type: string
mapping: $.Worker.Worker_Data.Job_Data.Position_Data.Business_Title
consumes:
- namespace: workday
type: http
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Human_Resources/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: hr-ops
path: /{{id}}
operations:
- name: get-worker
method: GET
Retrieves completed sprint metrics from Jira, calculates velocity, and publishes a sprint summary to the Engineering Microsoft Teams channel for agile retrospective.
naftiko: '0.5'
info:
label: Jira Engineering Sprint Velocity Report
description: Retrieves completed sprint metrics from Jira, calculates velocity, and publishes a sprint summary to the Engineering Microsoft Teams channel for agile retrospective.
tags:
- devops
- jira
- agile
- reporting
- microsoft-teams
- engineering
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: publish-sprint-report
description: Given a Jira board ID and sprint ID, retrieve sprint issue data, calculate velocity, and post a formatted sprint summary to the Engineering Teams channel.
inputParameters:
- name: board_id
in: body
type: integer
description: The Jira software board ID.
- name: sprint_id
in: body
type: integer
description: The completed sprint ID to report on.
steps:
- name: get-sprint
type: call
call: jira.get-sprint
with:
board_id: '{{board_id}}'
sprint_id: '{{sprint_id}}'
- name: get-sprint-issues
type: call
call: jira.list-sprint-issues
with:
sprint_id: '{{sprint_id}}'
- name: post-sprint-report
type: call
call: msteams.post-channel-message
with:
channel: engineering-metrics
message: 'Sprint {{get-sprint.name}} complete: {{get-sprint-issues.completed_points}} pts delivered | {{get-sprint-issues.count}} issues closed | Velocity: {{get-sprint-issues.velocity}}'
consumes:
- type: http
namespace: jira
baseUri: https://bankofamerica.atlassian.net/rest/api/3
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
- name: sprint-issues
path: /sprint/{{sprint_id}}/issue
inputParameters:
- name: sprint_id
in: path
operations:
- name: list-sprint-issues
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When an employee termination is recorded in Workday, disables their Microsoft 365 account, revokes Okta sessions, and opens a ServiceNow offboarding checklist ticket to track hardware recovery.
naftiko: '0.5'
info:
label: Employee Offboarding and Access Revocation
description: When an employee termination is recorded in Workday, disables their Microsoft 365 account, revokes Okta sessions, and opens a ServiceNow offboarding checklist ticket to track hardware recovery.
tags:
- hr
- offboarding
- workday
- okta
- servicenow
- microsoft-graph
- access-revocation
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-employee-offboarding
description: Given a Workday employee ID and termination date, disable the Microsoft 365 account, revoke all Okta sessions, and open a ServiceNow offboarding ticket.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID for the departing employee.
- name: termination_date
in: body
type: string
description: The employee's last working day in ISO 8601 format (YYYY-MM-DD).
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: disable-m365
type: call
call: msgraph.disable-user
with:
user_id: '{{get-worker.work_email}}'
- name: revoke-okta
type: call
call: okta.revoke-user-sessions
with:
user_login: '{{get-worker.work_email}}'
- name: create-offboarding-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Offboarding: {{get-worker.full_name}} — last day {{termination_date}}'
category: hr_offboarding
assignment_group: IT_Asset_Recovery
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: /bankofamerica/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: okta
baseUri: https://bankofamerica.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-sessions
path: /users/{{user_login}}/sessions
inputParameters:
- name: user_login
in: path
operations:
- name: revoke-user-sessions
method: DELETE
- type: http
namespace: servicenow
baseUri: https://bankofamerica.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
On a pull request opened against a protected branch in a banking platform repository, posts a security checklist comment on GitHub and creates a Jira security review ticket.
naftiko: '0.5'
info:
label: GitHub Pull Request Security Review Gate
description: On a pull request opened against a protected branch in a banking platform repository, posts a security checklist comment on GitHub and creates a Jira security review ticket.
tags:
- devops
- security
- github
- jira
- ci-cd
- compliance
capability:
exposes:
- type: mcp
namespace: pr-security
port: 8080
tools:
- name: handle-pr-security-gate
description: Given a GitHub repository, PR number, and commit SHA, post a security review checklist comment on the PR and open a Jira security ticket for mandatory review before merge.
inputParameters:
- name: repo_full_name
in: body
type: string
description: GitHub repository full name, e.g. 'bankofamerica/payments-gateway'.
- name: pr_number
in: body
type: integer
description: The pull request number to gate.
- name: commit_sha
in: body
type: string
description: Head commit SHA for the pull request.
steps:
- name: get-pr
type: call
call: github.get-pull-request
with:
repo: '{{repo_full_name}}'
pull_number: '{{pr_number}}'
- name: post-checklist-comment
type: call
call: github.create-pr-comment
with:
repo: '{{repo_full_name}}'
pull_number: '{{pr_number}}'
body: Security review initiated for commit {{commit_sha}}. A Jira ticket has been created for mandatory security sign-off.
- name: create-security-ticket
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Task
summary: 'Security review: {{repo_full_name}} PR #{{pr_number}}'
description: 'Commit: {{commit_sha}} | PR: {{get-pr.html_url}} | Author: {{get-pr.user_login}}'
consumes:
- type: http
namespace: github
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: pr-comments
path: /repos/{{repo}}/issues/{{pull_number}}/comments
inputParameters:
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: create-pr-comment
method: POST
- type: http
namespace: jira
baseUri: https://bankofamerica.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Prepares a client portfolio review by pulling holdings from Snowflake, generating a performance summary, and distributing to the relationship manager via Teams.
naftiko: '0.5'
info:
label: Client Portfolio Review Preparation
description: Prepares a client portfolio review by pulling holdings from Snowflake, generating a performance summary, and distributing to the relationship manager via Teams.
tags:
- banking
- wealth-management
- portfolio
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: wealth-ops
port: 8080
tools:
- name: prepare-portfolio-review
description: Given a client ID, pull portfolio holdings from Snowflake, generate performance metrics, and notify the RM in Teams.
inputParameters:
- name: client_id
in: body
type: string
description: Client ID.
- name: rm_upn
in: body
type: string
description: Relationship manager UPN.
steps:
- name: get-holdings
type: call
call: snowflake.query-portfolio
with:
client_id: '{{client_id}}'
- name: update-sf
type: call
call: sf.update-review
with:
client_id: '{{client_id}}'
performance: '{{get-holdings.ytd_return}}'
- name: notify-rm
type: call
call: msteams.send-message
with:
recipient_upn: '{{rm_upn}}'
text: 'Portfolio review ready: {{client_id}} — YTD: {{get-holdings.ytd_return}}% | AUM: ${{get-holdings.total_aum}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-portfolio
method: POST
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: reviews
path: /sobjects/Portfolio_Review__c/{{client_id}}
inputParameters:
- name: client_id
in: path
operations:
- name: update-review
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the current balance for a specified SAP general ledger account and company code.
naftiko: '0.5'
info:
label: SAP General Ledger Balance Check
description: Retrieves the current balance for a specified SAP general ledger account and company code.
tags:
- banking
- finance
- sap
- accounting
- lookup
capability:
exposes:
- type: mcp
namespace: gl-ops
port: 8080
tools:
- name: get-gl-balance
description: Given an SAP company code and GL account, return the current balance and currency.
inputParameters:
- name: company_code
in: body
type: string
description: SAP company code.
- name: gl_account
in: body
type: string
description: GL account number.
call: sap-fi.get-balance
with:
CompanyCode: '{{company_code}}'
GLAccount: '{{gl_account}}'
outputParameters:
- name: balance
type: number
mapping: $.d.EndingBalanceAmtInCoCodeCrcy
- name: currency
type: string
mapping: $.d.CompanyCodeCurrency
consumes:
- namespace: sap-fi
type: http
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: gl-ops
path: /{{id}}
operations:
- name: get-balance
method: GET
Tracks loan document collection by checking Salesforce, sending reminders, and logging in ServiceNow.
naftiko: '0.5'
info:
label: Loan Origination Document Tracker
description: Tracks loan document collection by checking Salesforce, sending reminders, and logging in ServiceNow.
tags:
- banking
- lending
- salesforce
- servicenow
- document-management
capability:
exposes:
- type: mcp
namespace: lending-ops
port: 8080
tools:
- name: track-loan-documents
description: Given a loan application ID, check document status, send reminders, and log progress.
inputParameters:
- name: application_id
in: body
type: string
description: Application ID.
- name: applicant_email
in: body
type: string
description: Applicant email.
- name: lo_upn
in: body
type: string
description: Loan officer UPN.
steps:
- name: check-docs
type: call
call: sf.get-doc-status
with:
application_id: '{{application_id}}'
- name: send-reminder
type: call
call: msgraph.send-mail
with:
to: '{{applicant_email}}'
subject: 'Documents Needed: {{application_id}}'
body: 'Missing: {{check-docs.missing_documents}}'
- name: log-progress
type: call
call: snow.update-task
with:
short_description: 'Docs: {{application_id}}'
description: 'Complete: {{check-docs.complete_count}}'
consumes:
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: applications
path: /sobjects/Loan_Application__c/{{application_id}}
operations:
- name: get-doc-status
method: GET
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/noreply@bofa.com/sendMail
operations:
- name: send-mail
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_loan_task
operations:
- name: update-task
method: POST
Exports current headcount and salary band data from ADP by cost center, posts the report to SharePoint, and sends a summary digest to the HR Finance Microsoft Teams channel.
naftiko: '0.5'
info:
label: Payroll Headcount and Cost Center Report
description: Exports current headcount and salary band data from ADP by cost center, posts the report to SharePoint, and sends a summary digest to the HR Finance Microsoft Teams channel.
tags:
- hr
- finance
- payroll
- headcount
- adp
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-finance
port: 8080
tools:
- name: get-payroll-headcount-snapshot
description: Export headcount and cost center data from ADP for a given report month, upload the report to SharePoint, and post a summary to the HR Finance Teams channel.
inputParameters:
- name: report_month
in: body
type: string
description: The month to report on in YYYY-MM format, e.g. '2026-03'.
- name: division
in: body
type: string
description: Bank of America division to filter by, e.g. 'Global Banking', 'Merrill Lynch'.
steps:
- name: export-headcount
type: call
call: adp.export-workers
with:
asOfDate: '{{report_month}}'
division: '{{division}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: hr-finance
folder: Headcount/{{report_month}}
filename: headcount-{{division}}-{{report_month}}.csv
content: '{{export-headcount.csv_data}}'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel: hr-finance-reporting
message: 'Headcount snapshot for {{division}} ({{report_month}}): {{export-headcount.total_count}} employees. Report uploaded to SharePoint.'
consumes:
- type: http
namespace: adp
baseUri: https://api.adp.com
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: workers-export
path: /hr/v2/workers/export
operations:
- name: export-workers
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /sites/{{site_id}}/drive/root:/{{folder}}/{{filename}}:/content
inputParameters:
- name: site_id
in: path
- name: folder
in: path
- name: filename
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Books a conference room via Microsoft Graph, creates the calendar event, and notifies attendees in Teams.
naftiko: '0.5'
info:
label: Conference Room Booking Notification
description: Books a conference room via Microsoft Graph, creates the calendar event, and notifies attendees in Teams.
tags:
- banking
- facilities
- microsoft-graph
- microsoft-teams
- scheduling
capability:
exposes:
- type: mcp
namespace: facilities-ops
port: 8080
tools:
- name: book-conference-room
description: Given a room email, start/end times, and organizer, check availability, create the booking, and notify in Teams.
inputParameters:
- name: room_email
in: body
type: string
description: Room resource email.
- name: start_time
in: body
type: string
description: Start time (ISO 8601).
- name: end_time
in: body
type: string
description: End time (ISO 8601).
- name: organizer_upn
in: body
type: string
description: Organizer UPN.
steps:
- name: check-availability
type: call
call: msgraph.get-schedule
with:
room: '{{room_email}}'
start: '{{start_time}}'
- name: create-booking
type: call
call: msgraph.create-event
with:
room: '{{room_email}}'
start: '{{start_time}}'
end: '{{end_time}}'
- name: notify-organizer
type: call
call: msteams.send-message
with:
recipient_upn: '{{organizer_upn}}'
text: 'Room booked: {{room_email}} from {{start_time}} to {{end_time}}.'
consumes:
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: schedules
path: /users/{{room}}/calendar/getSchedule
inputParameters:
- name: room
in: path
operations:
- name: get-schedule
method: POST
- name: events
path: /users/{{organizer_upn}}/events
operations:
- name: create-event
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Looks up an Okta user by email and returns the account status, last login timestamp, and MFA enrollment state.
naftiko: '0.5'
info:
label: Okta User Account Status Lookup
description: Looks up an Okta user by email and returns the account status, last login timestamp, and MFA enrollment state.
tags:
- banking
- security
- okta
- identity
- lookup
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: get-user-status
description: Given a user email, return the Okta account status, last login, and MFA enrollment status.
inputParameters:
- name: user_email
in: body
type: string
description: User 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:
- namespace: okta
type: http
baseUri: https://bofa.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: identity-ops
path: /{{id}}
operations:
- name: get-user
method: GET
When a complaint is received, creates a Salesforce case, opens a ServiceNow investigation task, and notifies the compliance officer via Teams.
naftiko: '0.5'
info:
label: Customer Complaint Escalation Handler
description: When a complaint is received, creates a Salesforce case, opens a ServiceNow investigation task, and notifies the compliance officer via Teams.
tags:
- banking
- customer-service
- salesforce
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: complaints-ops
port: 8080
tools:
- name: escalate-complaint
description: Given complaint details, create a Salesforce case, open a ServiceNow task, and alert compliance via Teams.
inputParameters:
- name: customer_name
in: body
type: string
description: Complainant name.
- name: account_number
in: body
type: string
description: Account or policy number.
- name: complaint_category
in: body
type: string
description: Complaint category.
- name: compliance_upn
in: body
type: string
description: UPN of compliance officer.
steps:
- name: create-case
type: call
call: sf.create-case
with:
Subject: Complaint — {{account_number}} — {{complaint_category}}
Description: 'Customer: {{customer_name}} | Category: {{complaint_category}}'
- name: create-task
type: call
call: snow.create-task
with:
short_description: 'Complaint: {{account_number}}'
description: 'SF Case: {{create-case.case_number}} | {{complaint_category}}'
- name: notify-compliance
type: call
call: msteams.send-message
with:
recipient_upn: '{{compliance_upn}}'
text: 'Complaint escalation: {{customer_name}} — {{complaint_category}}. SF: {{create-case.case_number}} | SNOW: {{create-task.number}}'
consumes:
- type: http
namespace: sf
baseUri: https://bofa.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: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sn_si_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Collects loan origination documents by tracking submission status in Salesforce, sending reminders via email, and logging progress in ServiceNow.
naftiko: '0.5'
info:
label: Loan Origination Document Collection
description: Collects loan origination documents by tracking submission status in Salesforce, sending reminders via email, and logging progress in ServiceNow.
tags:
- banking
- lending
- salesforce
- servicenow
- document-management
capability:
exposes:
- type: mcp
namespace: lending-ops
port: 8080
tools:
- name: collect-loan-documents
description: Given a loan application ID, check document status in Salesforce, send reminders for missing docs, and log progress in ServiceNow.
inputParameters:
- name: application_id
in: body
type: string
description: Loan application ID.
- name: applicant_email
in: body
type: string
description: Applicant email.
- name: lo_upn
in: body
type: string
description: Loan officer UPN.
steps:
- name: check-docs
type: call
call: sf.get-doc-status
with:
application_id: '{{application_id}}'
- name: send-reminder
type: call
call: msgraph.send-mail
with:
to: '{{applicant_email}}'
subject: 'Documents Needed: Loan Application {{application_id}}'
body: 'Missing: {{check-docs.missing_documents}}'
- name: log-progress
type: call
call: snow.update-task
with:
short_description: 'Doc collection: {{application_id}}'
description: 'Complete: {{check-docs.complete_count}} | Missing: {{check-docs.missing_count}}'
consumes:
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: applications
path: /sobjects/Loan_Application__c/{{application_id}}
inputParameters:
- name: application_id
in: path
operations:
- name: get-doc-status
method: GET
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/noreply@bofa.com/sendMail
operations:
- name: send-mail
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_loan_task
operations:
- name: update-task
method: POST
When an employee termination is processed in Workday, disables their Okta account, revokes ServiceNow access, and notifies the HR business partner via Teams.
naftiko: '0.5'
info:
label: Employee Termination Access Revocation
description: When an employee termination is processed in Workday, disables their Okta account, revokes ServiceNow access, and notifies the HR business partner via Teams.
tags:
- banking
- hr
- security
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-security
port: 8080
tools:
- name: revoke-terminated-access
description: Given a Workday employee ID and termination date, disable the Okta account, close open ServiceNow tickets, and notify the HRBP via Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID.
- name: termination_date
in: body
type: string
description: Termination date.
- name: hrbp_upn
in: body
type: string
description: UPN of the HRBP.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
employee_id: '{{employee_id}}'
- name: disable-okta
type: call
call: okta.deactivate-user
with:
login: '{{get-employee.email}}'
- name: notify-hrbp
type: call
call: msteams.send-message
with:
recipient_upn: '{{hrbp_upn}}'
text: Access revoked for {{get-employee.full_name}} ({{employee_id}}) effective {{termination_date}}.
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Human_Resources/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: workers
path: /workers/{{employee_id}}
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://bofa.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: users
path: /users/{{login}}/lifecycle/deactivate
inputParameters:
- name: login
in: path
operations:
- name: deactivate-user
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Queries SAP Concur for expense reports pending approval beyond the SLA threshold and sends reminder notifications to approving managers via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Approval Reminder
description: Queries SAP Concur for expense reports pending approval beyond the SLA threshold and sends reminder notifications to approving managers via Microsoft Teams.
tags:
- finance
- expense-management
- sap-concur
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: expense-approvals
port: 8080
tools:
- name: send-expense-approval-reminders
description: Query SAP Concur for expense reports in Pending Manager Approval status older than the specified threshold, then send a Teams reminder to the Finance Approvals channel.
inputParameters:
- name: days_pending
in: body
type: integer
description: 'Days a report must be pending before sending a reminder. Default: 5.'
steps:
- name: get-pending-reports
type: call
call: concur.list-pending-reports
with:
approvalStatus: A_PEND
daysOld: '{{days_pending}}'
- name: notify-approvers
type: call
call: msteams.post-channel-message
with:
channel: finance-approvals
message: '{{get-pending-reports.count}} expense reports pending approval for more than {{days_pending}} days. Please review in SAP Concur.'
consumes:
- type: http
namespace: concur
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports
operations:
- name: list-pending-reports
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Looks up a user identity in SailPoint and returns current entitlements and certification status.
naftiko: '0.5'
info:
label: SailPoint Identity Governance Lookup
description: Looks up a user identity in SailPoint and returns current entitlements and certification status.
tags:
- banking
- security
- sailpoint
- identity-governance
- lookup
capability:
exposes:
- type: mcp
namespace: iam-ops
port: 8080
tools:
- name: get-identity-access
description: Given a SailPoint identity alias, return the display name, entitlement count, and last certification date.
inputParameters:
- name: identity_alias
in: body
type: string
description: SailPoint identity alias or email.
call: sailpoint.get-identity
with:
alias: '{{identity_alias}}'
outputParameters:
- name: display_name
type: string
mapping: $.displayName
- name: entitlement_count
type: integer
mapping: $.entitlementCount
consumes:
- namespace: sailpoint
type: http
baseUri: https://bofa.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: iam-ops
path: /{{id}}
operations:
- name: get-identity
method: GET
Runs a Splunk search for security events matching a query and returns the result count.
naftiko: '0.5'
info:
label: Splunk Security Event Query
description: Runs a Splunk search for security events matching a query and returns the result count.
tags:
- banking
- security
- splunk
- siem
- lookup
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: search-security-events
description: Given a Splunk search query, execute the search and return the result count and top events.
inputParameters:
- name: search_query
in: body
type: string
description: Splunk search query string.
call: splunk.run-search
with:
search: '{{search_query}}'
outputParameters:
- name: result_count
type: integer
mapping: $.resultCount
consumes:
- namespace: splunk
type: http
baseUri: https://bofa-splunk.splunkcloud.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: security-ops
path: /{{id}}
operations:
- name: run-search
method: GET
Triggers a Terraform Cloud workspace run for cloud infrastructure provisioning or updates, and notifies the Platform Engineering team in Microsoft Teams with the run status.
naftiko: '0.5'
info:
label: Terraform Cloud Infrastructure Provisioning Trigger
description: Triggers a Terraform Cloud workspace run for cloud infrastructure provisioning or updates, and notifies the Platform Engineering team in Microsoft Teams with the run status.
tags:
- cloud
- infrastructure
- terraform
- microsoft-teams
- devops
- provisioning
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: Given a Terraform Cloud workspace ID and a descriptive message, trigger an infrastructure plan-and-apply run and notify the Platform Engineering Teams channel.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID to run against.
- name: run_message
in: body
type: string
description: Description of the infrastructure change, e.g. 'Scale EKS node group for transaction processing'.
steps:
- name: trigger-run
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
message: '{{run_message}}'
- name: notify-platform
type: call
call: msteams.post-channel-message
with:
channel: platform-engineering
message: 'Terraform run triggered: {{run_message}} | Workspace: {{workspace_id}} | Run: {{trigger-run.id}}'
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /runs
operations:
- name: create-run
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 the refresh status of a Power BI dataset and returns the last refresh time and status.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh Status Check
description: Checks the refresh status of a Power BI dataset and returns the last refresh time and status.
tags:
- banking
- analytics
- power-bi
- reporting
- lookup
capability:
exposes:
- type: mcp
namespace: bi-ops
port: 8080
tools:
- name: get-dataset-refresh
description: Given a Power BI dataset ID, return the last refresh timestamp and status.
inputParameters:
- name: dataset_id
in: body
type: string
description: Power BI dataset GUID.
call: pbi.get-refresh
with:
datasetId: '{{dataset_id}}'
outputParameters:
- name: status
type: string
mapping: $.value[0].status
- name: end_time
type: string
mapping: $.value[0].endTime
consumes:
- namespace: pbi
type: http
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: bi-ops
path: /{{id}}
operations:
- name: get-refresh
method: GET
Retrieves the current on-call engineer for a given PagerDuty escalation policy to support incident routing and stakeholder communication.
naftiko: '0.5'
info:
label: PagerDuty On-Call Engineer Lookup
description: Retrieves the current on-call engineer for a given PagerDuty escalation policy to support incident routing and stakeholder communication.
tags:
- itsm
- pagerduty
- on-call
- incident-response
- lookup
capability:
exposes:
- type: mcp
namespace: oncall-lookup
port: 8080
tools:
- name: get-current-oncall
description: Given a PagerDuty escalation policy ID, return the name and email of the currently on-call engineer. Use when routing critical banking platform incidents.
inputParameters:
- name: escalation_policy_id
in: body
type: string
description: The PagerDuty escalation policy ID for the relevant banking system team.
call: pagerduty.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:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_api_key
placement: header
resources:
- name: oncalls
path: /oncalls
operations:
- name: get-oncall
method: GET
Queries Workday for open positions by department, returning count and average days open.
naftiko: '0.5'
info:
label: Workday Open Position Count Check
description: Queries Workday for open positions by department, returning count and average days open.
tags:
- banking
- hr
- workday
- talent-acquisition
- lookup
capability:
exposes:
- type: mcp
namespace: ta-ops
port: 8080
tools:
- name: get-open-positions
description: Given a department name, return the open position count and average days since posting.
inputParameters:
- name: department
in: body
type: string
description: Department name.
call: workday.get-requisitions
with:
department: '{{department}}'
outputParameters:
- name: open_count
type: integer
mapping: $.total
- name: avg_days_open
type: number
mapping: $.averageDaysOpen
consumes:
- namespace: workday
type: http
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Human_Resources/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: ta-ops
path: /{{id}}
operations:
- name: get-requisitions
method: GET
Processes KYC customer onboarding by verifying identity in Salesforce, running compliance checks in Snowflake, and creating an onboarding task in ServiceNow.
naftiko: '0.5'
info:
label: KYC Customer Onboarding Workflow
description: Processes KYC customer onboarding by verifying identity in Salesforce, running compliance checks in Snowflake, and creating an onboarding task in ServiceNow.
tags:
- banking
- kyc
- compliance
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: kyc-ops
port: 8080
tools:
- name: onboard-customer-kyc
description: Given customer details, verify identity in Salesforce, run KYC checks in Snowflake, create onboarding task in ServiceNow, and notify compliance in Teams.
inputParameters:
- name: customer_name
in: body
type: string
description: Customer name.
- name: customer_id
in: body
type: string
description: Customer ID.
- name: compliance_upn
in: body
type: string
description: Compliance officer UPN.
steps:
- name: verify-identity
type: call
call: sf.get-customer
with:
customer_id: '{{customer_id}}'
- name: run-kyc
type: call
call: snowflake.run-kyc-check
with:
customer_name: '{{customer_name}}'
- name: create-task
type: call
call: snow.create-task
with:
short_description: 'KYC Onboarding: {{customer_name}}'
description: 'ID: {{customer_id}} | KYC: {{run-kyc.status}}'
- name: notify-compliance
type: call
call: msteams.send-message
with:
recipient_upn: '{{compliance_upn}}'
text: 'KYC onboarding: {{customer_name}} — Status: {{run-kyc.status}}. SNOW: {{create-task.number}}'
consumes:
- type: http
namespace: sf
baseUri: https://bofa.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
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-kyc-check
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_kyc_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a client account from Salesforce by account ID, returning relationship manager, account tier, and total assets under management.
naftiko: '0.5'
info:
label: Salesforce Client Account Lookup
description: Retrieves a client account from Salesforce by account ID, returning relationship manager, account tier, and total assets under management.
tags:
- banking
- banking
- salesforce
- relationship-management
- lookup
capability:
exposes:
- type: mcp
namespace: client-ops
port: 8080
tools:
- name: get-client-account
description: Given a Salesforce account ID, return the client name, relationship manager, account tier, and AUM.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID.
call: sf.get-account
with:
accountId: '{{account_id}}'
outputParameters:
- name: client_name
type: string
mapping: $.Name
- name: rm
type: string
mapping: $.Owner.Name
- name: tier
type: string
mapping: $.Tier__c
consumes:
- namespace: sf
type: http
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: client-ops
path: /{{id}}
operations:
- name: get-account
method: GET
Enriches a Salesforce client account record with updated relationship manager assignment, segment classification, and AUM data, then syncs the update status to the Relationship Management Teams channel.
naftiko: '0.5'
info:
label: Salesforce Client Account Enrichment
description: Enriches a Salesforce client account record with updated relationship manager assignment, segment classification, and AUM data, then syncs the update status to the Relationship Management Teams channel.
tags:
- crm
- salesforce
- microsoft-teams
- client-management
- wealth-management
capability:
exposes:
- type: mcp
namespace: client-management
port: 8080
tools:
- name: enrich-client-account
description: Given a Salesforce account ID, relationship manager ID, segment, and AUM value, update the client account record and notify the Relationship Management Teams channel of the change.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID to enrich.
- name: relationship_manager_id
in: body
type: string
description: The Salesforce user ID of the assigned relationship manager.
- name: client_segment
in: body
type: string
description: 'Client segment classification: ''Mass Affluent'', ''High Net Worth'', ''Ultra High Net Worth'', ''Institutional''.'
- name: aum_usd
in: body
type: number
description: Total assets under management for the client in USD.
steps:
- name: update-account
type: call
call: salesforce.update-account
with:
account_id: '{{account_id}}'
owner_id: '{{relationship_manager_id}}'
segment: '{{client_segment}}'
aum: '{{aum_usd}}'
- name: notify-rm-channel
type: call
call: msteams.post-channel-message
with:
channel: relationship-management
message: 'Client account {{account_id}} updated: Segment {{client_segment}} | AUM ${{aum_usd}} | RM: {{relationship_manager_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://bankofamerica.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: post-channel-message
method: POST
Screens customers against sanctions lists in Snowflake, logs in ServiceNow, and escalates matches.
naftiko: '0.5'
info:
label: Sanctions Screening Handler
description: Screens customers against sanctions lists in Snowflake, logs in ServiceNow, and escalates matches.
tags:
- banking
- sanctions
- compliance
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: sanctions-ops
port: 8080
tools:
- name: screen-sanctions
description: Given a customer name and country, screen in Snowflake, log in ServiceNow, and notify compliance.
inputParameters:
- name: customer_name
in: body
type: string
description: Customer name.
- name: country
in: body
type: string
description: Country.
- name: compliance_upn
in: body
type: string
description: Compliance UPN.
steps:
- name: screen
type: call
call: snowflake.screen-sanctions
with:
customer: '{{customer_name}}'
country: '{{country}}'
- name: log
type: call
call: snow.create-record
with:
short_description: 'Sanctions: {{customer_name}}'
description: 'Matches: {{screen.match_count}}'
- name: notify
type: call
call: msteams.send-message
with:
recipient_upn: '{{compliance_upn}}'
text: 'Sanctions: {{customer_name}} ({{country}}) — {{screen.match_count}} matches. SNOW: {{log.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: screen-sanctions
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: screening
path: /table/u_sanctions_screening
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
operations:
- name: send-message
method: POST
Retrieves the current foreign exchange rate from Refinitiv for a specified currency pair.
naftiko: '0.5'
info:
label: Refinitiv FX Rate Lookup
description: Retrieves the current foreign exchange rate from Refinitiv for a specified currency pair.
tags:
- banking
- refinitiv
- foreign-exchange
- trading
- lookup
capability:
exposes:
- type: mcp
namespace: fx-ops
port: 8080
tools:
- name: get-fx-rate
description: Given a currency pair, return the current bid, ask, and mid rates.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair, e.g. EURUSD.
call: refinitiv.get-fx-rate
with:
pair: '{{currency_pair}}'
outputParameters:
- name: bid
type: number
mapping: $.data[0].bid
- name: ask
type: number
mapping: $.data[0].ask
- name: mid
type: number
mapping: $.data[0].mid
consumes:
- namespace: refinitiv
type: http
baseUri: https://api.refinitiv.com/data/pricing/v1
authentication:
type: bearer
token: $secrets.refinitiv_token
resources:
- name: quotes
path: /quotes/{{pair}}
operations:
- name: get-fx-rate
method: GET
When an AML alert fires, enriches the transaction from Snowflake, creates a SAR investigation in ServiceNow, and notifies the BSA officer via Teams.
naftiko: '0.5'
info:
label: AML Transaction Monitoring Alert
description: When an AML alert fires, enriches the transaction from Snowflake, creates a SAR investigation in ServiceNow, and notifies the BSA officer via Teams.
tags:
- banking
- aml
- compliance
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: aml-ops
port: 8080
tools:
- name: handle-aml-alert
description: Given a transaction ID and alert type, enrich from Snowflake, create a SAR investigation in ServiceNow, and notify the BSA officer.
inputParameters:
- name: transaction_id
in: body
type: string
description: Transaction ID.
- name: alert_type
in: body
type: string
description: AML alert type.
- name: bsa_officer_upn
in: body
type: string
description: BSA officer UPN.
steps:
- name: enrich-txn
type: call
call: snowflake.get-transaction
with:
transaction_id: '{{transaction_id}}'
- name: create-sar
type: call
call: snow.create-sar
with:
short_description: 'AML Alert: {{transaction_id}} — {{alert_type}}'
description: 'Amount: {{enrich-txn.amount}} | Customer: {{enrich-txn.customer_name}}'
- name: notify-bsa
type: call
call: msteams.send-message
with:
recipient_upn: '{{bsa_officer_upn}}'
text: 'AML alert: {{transaction_id}} — {{alert_type}}. Amount: {{enrich-txn.amount}}. SAR: {{create-sar.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-transaction
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: sar
path: /table/u_sar_investigation
operations:
- name: create-sar
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Looks up the most recent execution status of a named Snowflake task pipeline in the Bank of America data warehouse and returns run state, duration, and error message.
naftiko: '0.5'
info:
label: Snowflake Pipeline Job Status Lookup
description: Looks up the most recent execution status of a named Snowflake task pipeline in the Bank of America data warehouse and returns run state, duration, and error message.
tags:
- data
- analytics
- snowflake
- monitoring
- lookup
capability:
exposes:
- type: mcp
namespace: data-pipeline-lookup
port: 8080
tools:
- name: get-pipeline-job-status
description: Given a Snowflake database and task name, return the most recent task run state, scheduled time, completed time, and error message if failed.
inputParameters:
- name: database_name
in: body
type: string
description: The Snowflake database name, e.g. 'BOA_RISK_PROD'.
- name: task_name
in: body
type: string
description: The Snowflake task name to query status for.
call: snowflake.get-task-history
with:
database: '{{database_name}}'
task_name: '{{task_name}}'
outputParameters:
- name: state
type: string
mapping: $.data[0].STATE
- name: scheduled_time
type: string
mapping: $.data[0].SCHEDULED_TIME
- name: completed_time
type: string
mapping: $.data[0].COMPLETED_TIME
- name: error_message
type: string
mapping: $.data[0].ERROR_MESSAGE
consumes:
- type: http
namespace: snowflake
baseUri: https://bankofamerica.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: task-history
path: /databases/{{database}}/schemas/information_schema/task_history
inputParameters:
- name: database
in: path
operations:
- name: get-task-history
method: GET
Retrieves an SAP Concur expense report by ID, returning the total amount, approval status, and owner.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Status Lookup
description: Retrieves an SAP Concur expense report by ID, returning the total amount, approval status, and owner.
tags:
- banking
- finance
- sap-concur
- expense-management
- lookup
capability:
exposes:
- type: mcp
namespace: expense-ops
port: 8080
tools:
- name: get-expense-report
description: Given a Concur report ID, return the total, currency, approval status, and submitter name.
inputParameters:
- name: report_id
in: body
type: string
description: SAP Concur expense report ID.
call: concur.get-report
with:
reportId: '{{report_id}}'
outputParameters:
- name: total
type: number
mapping: $.Total
- name: status
type: string
mapping: $.ApprovalStatusName
- name: owner
type: string
mapping: $.OwnerName
consumes:
- namespace: concur
type: http
baseUri: https://api.bofa.com/v1
authentication:
type: bearer
token: $secrets.api_token
resources:
- name: expense-ops
path: /{{id}}
operations:
- name: get-report
method: GET
When an AWS cost anomaly alert is triggered, annotates it in Datadog, opens a ServiceNow change request for FinOps review, and notifies the Cloud Cost Management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Cloud Cost Anomaly Detection and Response
description: When an AWS cost anomaly alert is triggered, annotates it in Datadog, opens a ServiceNow change request for FinOps review, and notifies the Cloud Cost Management team via Microsoft Teams.
tags:
- finops
- cloud
- aws
- datadog
- servicenow
- cost-management
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an AWS cost anomaly with service name and overage amount, create a Datadog annotation, open a ServiceNow change request, and alert the FinOps Teams channel.
inputParameters:
- name: aws_service
in: body
type: string
description: The AWS service reporting the anomaly, e.g. 'Amazon EC2', 'AWS Lambda'.
- name: overage_usd
in: body
type: number
description: Estimated cost overage in USD.
- name: account_id
in: body
type: string
description: The AWS account ID where the anomaly was detected.
steps:
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: 'AWS Cost Anomaly: {{aws_service}}'
text: 'Account {{account_id}} — overage: ${{overage_usd}}'
alert_type: warning
- name: open-change-request
type: call
call: servicenow.create-change
with:
short_description: 'FinOps review: {{aws_service}} overage ${{overage_usd}}'
category: finops
justification: AWS anomaly detected on account {{account_id}}
- name: notify-finops
type: call
call: msteams.post-channel-message
with:
channel: cloud-cost-management
message: 'AWS Cost Anomaly: {{aws_service}} | Account: {{account_id}} | Overage: ${{overage_usd}} | SNOW: {{open-change-request.number}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://bankofamerica.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Analyzes interest rate risk by pulling balance sheet data from Snowflake, running scenarios, and distributing results via Teams.
naftiko: '0.5'
info:
label: Interest Rate Risk Sensitivity Analysis
description: Analyzes interest rate risk by pulling balance sheet data from Snowflake, running scenarios, and distributing results via Teams.
tags:
- banking
- risk-management
- interest-rate
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: alm-ops
port: 8080
tools:
- name: run-ir-sensitivity
description: Given a scenario set and report date, pull balance sheet from Snowflake, run rate shock scenarios, and post results.
inputParameters:
- name: scenario_set
in: body
type: string
description: Scenario set name.
- name: report_date
in: body
type: string
description: Report date.
- name: alm_channel_id
in: body
type: string
description: ALM channel.
steps:
- name: get-balances
type: call
call: snowflake.query-balances
with:
date: '{{report_date}}'
- name: run-scenarios
type: call
call: snowflake.run-scenarios
with:
scenario: '{{scenario_set}}'
- name: post-results
type: call
call: msteams.post-channel
with:
channel_id: '{{alm_channel_id}}'
text: 'IR Sensitivity: {{scenario_set}} — {{report_date}}. NII impact: ${{run-scenarios.nii_impact}} | EVE impact: ${{run-scenarios.eve_impact}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-balances
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
operations:
- name: post-channel
method: POST
Prepares portfolio reviews by pulling holdings from Snowflake, updating Salesforce, and notifying the RM.
naftiko: '0.5'
info:
label: Client Portfolio Review Preparer
description: Prepares portfolio reviews by pulling holdings from Snowflake, updating Salesforce, and notifying the RM.
tags:
- banking
- wealth-management
- portfolio
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: wealth-ops
port: 8080
tools:
- name: prepare-portfolio-review
description: Given a client ID, pull portfolio from Snowflake, update Salesforce, and notify the RM.
inputParameters:
- name: client_id
in: body
type: string
description: Client ID.
- name: rm_upn
in: body
type: string
description: RM UPN.
steps:
- name: get-holdings
type: call
call: snowflake.query-portfolio
with:
client_id: '{{client_id}}'
- name: update-sf
type: call
call: sf.update-review
with:
client_id: '{{client_id}}'
ytd: '{{get-holdings.ytd_return}}'
- name: notify-rm
type: call
call: msteams.send-message
with:
recipient_upn: '{{rm_upn}}'
text: 'Portfolio ready: {{client_id}} — YTD: {{get-holdings.ytd_return}}%'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-portfolio
method: POST
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: reviews
path: /sobjects/Portfolio_Review__c/{{client_id}}
operations:
- name: update-review
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
operations:
- name: send-message
method: POST
Performs a three-way match on a vendor invoice by verifying the PO in SAP, confirming goods receipt, and routing for approval with Teams notification.
naftiko: '0.5'
info:
label: SAP Invoice Three-Way Match Workflow
description: Performs a three-way match on a vendor invoice by verifying the PO in SAP, confirming goods receipt, and routing for approval with Teams notification.
tags:
- banking
- finance
- accounts-payable
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: ap-ops
port: 8080
tools:
- name: three-way-match
description: Given an invoice and PO number, verify the PO in SAP, confirm goods receipt, create an approval in ServiceNow, and notify AP via Teams.
inputParameters:
- name: invoice_number
in: body
type: string
description: Vendor invoice number.
- name: po_number
in: body
type: string
description: SAP purchase order number.
- name: ap_manager_upn
in: body
type: string
description: UPN of AP manager.
steps:
- name: verify-po
type: call
call: sap.get-po
with:
po_number: '{{po_number}}'
- name: check-gr
type: call
call: sap.get-goods-receipt
with:
po_number: '{{po_number}}'
- name: create-approval
type: call
call: snow.create-approval
with:
short_description: 'Invoice approval: {{invoice_number}} — PO {{po_number}}'
description: 'PO Amount: {{verify-po.total_amount}} | GR: {{check-gr.status}}'
- name: notify-ap
type: call
call: msteams.send-message
with:
recipient_upn: '{{ap_manager_upn}}'
text: 'Three-way match: Invoice {{invoice_number}} — PO {{po_number}}. GR: {{check-gr.status}}. Approval: {{create-approval.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://bofa-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
- 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: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-approval
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When Dependabot alerts are raised, creates Jira tickets for remediation, logs in Snowflake, and alerts the AppSec team via Teams.
naftiko: '0.5'
info:
label: GitHub Dependabot Alert Handler
description: When Dependabot alerts are raised, creates Jira tickets for remediation, logs in Snowflake, and alerts the AppSec team via Teams.
tags:
- banking
- security
- github
- jira
- snowflake
capability:
exposes:
- type: mcp
namespace: appsec-ops
port: 8080
tools:
- name: handle-dependabot-alert
description: Given a repo and alert severity, create a Jira ticket, log the vulnerability in Snowflake, and notify AppSec in Teams.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository.
- name: cve_id
in: body
type: string
description: CVE identifier.
- name: severity
in: body
type: string
description: Alert severity.
- name: appsec_upn
in: body
type: string
description: UPN of AppSec lead.
steps:
- name: create-jira
type: call
call: jira.create-issue
with:
project: APPSEC
summary: 'Dependabot: {{cve_id}} in {{repo_name}}'
description: 'Severity: {{severity}} | Repo: {{repo_name}}'
- name: log-vuln
type: call
call: snowflake.insert-vuln
with:
repo: '{{repo_name}}'
cve: '{{cve_id}}'
severity: '{{severity}}'
- name: notify-appsec
type: call
call: msteams.send-message
with:
recipient_upn: '{{appsec_upn}}'
text: 'Dependabot: {{cve_id}} ({{severity}}) in {{repo_name}}. Jira: {{create-jira.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://bofa.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-vuln
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Creates a ServiceNow change request for technology infrastructure changes at Bank of America, assigns it to the CAB review board, and notifies stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow IT Change Advisory Board Request
description: Creates a ServiceNow change request for technology infrastructure changes at Bank of America, assigns it to the CAB review board, and notifies stakeholders via Microsoft Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: submit-change-request
description: Given a change title, description, risk level, and planned date, create a ServiceNow change request and notify the CAB via the Change Management Teams channel.
inputParameters:
- name: change_title
in: body
type: string
description: Short description of the proposed infrastructure change.
- name: change_description
in: body
type: string
description: Full description including what is changing, business justification, and rollback plan.
- name: risk_level
in: body
type: string
description: 'Risk classification: ''low'', ''medium'', or ''high''.'
- name: planned_date
in: body
type: string
description: Planned implementation date in YYYY-MM-DD format.
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: '{{change_title}}'
description: '{{change_description}}'
risk: '{{risk_level}}'
planned_start_date: '{{planned_date}}'
- name: notify-cab
type: call
call: msteams.post-channel-message
with:
channel: change-advisory-board
message: 'New CAB request: {{change_title}} | Risk: {{risk_level}} | Planned: {{planned_date}} | SNOW: {{create-change.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://bankofamerica.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves a Zendesk support ticket by ID, returning subject, status, priority, and assignee.
naftiko: '0.5'
info:
label: Zendesk Support Ticket Lookup
description: Retrieves a Zendesk support ticket by ID, returning subject, status, priority, and assignee.
tags:
- customer-service
- zendesk
- support
- lookup
capability:
exposes:
- type: mcp
namespace: support-ops
port: 8080
tools:
- name: get-support-ticket
description: Given a Zendesk ticket ID, return the subject, status, priority, and assigned agent name.
inputParameters:
- name: ticket_id
in: body
type: string
description: Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticketId: '{{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:
- namespace: zendesk
type: http
baseUri: https://bofa.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticketId}}
operations:
- name: get-ticket
method: GET
Screens wire transfers for fraud by checking transaction patterns in Snowflake, creating a hold in SAP if suspicious, and alerting the fraud team via Teams.
naftiko: '0.5'
info:
label: Wire Transfer Fraud Screening
description: Screens wire transfers for fraud by checking transaction patterns in Snowflake, creating a hold in SAP if suspicious, and alerting the fraud team via Teams.
tags:
- banking
- fraud-detection
- payments
- snowflake
- sap
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: screen-wire-transfer
description: Given a wire transfer ID and amount, check patterns in Snowflake, hold in SAP if suspicious, and alert the fraud team.
inputParameters:
- name: transfer_id
in: body
type: string
description: Wire transfer ID.
- name: amount
in: body
type: number
description: Transfer amount.
- name: fraud_channel_id
in: body
type: string
description: Fraud team Teams channel.
steps:
- name: check-patterns
type: call
call: snowflake.check-wire-patterns
with:
transfer_id: '{{transfer_id}}'
amount: '{{amount}}'
- name: hold-payment
type: call
call: sap-fi.create-hold
with:
transfer_id: '{{transfer_id}}'
reason: 'Fraud screening: {{check-patterns.risk_level}}'
- name: alert-fraud
type: call
call: msteams.post-channel
with:
channel_id: '{{fraud_channel_id}}'
text: 'Wire screening: {{transfer_id}} — ${{amount}}. Risk: {{check-patterns.risk_level}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: check-wire-patterns
method: POST
- type: http
namespace: sap
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: holds
path: /A_JournalEntry
operations:
- name: create-hold
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Handles trade settlement exceptions by pulling details from Snowflake, creating a ServiceNow ticket, and notifying operations.
naftiko: '0.5'
info:
label: Trade Settlement Exception Workflow
description: Handles trade settlement exceptions by pulling details from Snowflake, creating a ServiceNow ticket, and notifying operations.
tags:
- banking
- trading
- settlement
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: settlement-ops
port: 8080
tools:
- name: handle-settlement-exception
description: Given a trade ID and exception type, pull details, create a ticket, and notify operations.
inputParameters:
- name: trade_id
in: body
type: string
description: Trade ID.
- name: exception_type
in: body
type: string
description: Exception type.
- name: ops_channel_id
in: body
type: string
description: Operations channel.
steps:
- name: get-trade
type: call
call: snowflake.get-trade
with:
trade_id: '{{trade_id}}'
- name: create-ticket
type: call
call: snow.create-exception
with:
short_description: 'Settlement: {{trade_id}} — {{exception_type}}'
description: 'Counterparty: {{get-trade.counterparty}}'
- name: notify
type: call
call: msteams.post-channel
with:
channel_id: '{{ops_channel_id}}'
text: 'Settlement exception: {{trade_id}} — {{exception_type}}. SNOW: {{create-ticket.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-trade
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: exceptions
path: /table/u_trade_exception
operations:
- name: create-exception
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
operations:
- name: post-channel
method: POST
Verifies that a change request falls within the approved window by checking ServiceNow, validating service health in Datadog, and notifying the CAB via Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Window Compliance Validator
description: Verifies that a change request falls within the approved window by checking ServiceNow, validating service health in Datadog, and notifying the CAB via Teams.
tags:
- banking
- it-operations
- change-management
- servicenow
- datadog
capability:
exposes:
- type: mcp
namespace: change-ops
port: 8080
tools:
- name: check-change-compliance
description: Given a change request number and proposed date, verify window compliance in ServiceNow, check Datadog service health, and notify the CAB in Teams.
inputParameters:
- name: change_number
in: body
type: string
description: Change request number.
- name: proposed_date
in: body
type: string
description: Proposed date.
- name: cab_channel_id
in: body
type: string
description: Teams channel ID for CAB.
steps:
- name: check-window
type: call
call: snow.get-change-window
with:
change_number: '{{change_number}}'
- name: check-health
type: call
call: datadog.get-status
with:
date: '{{proposed_date}}'
- name: notify-cab
type: call
call: msteams.post-channel
with:
channel_id: '{{cab_channel_id}}'
text: 'Change compliance: {{change_number}} for {{proposed_date}}. Window: {{check-window.status}} | Health: {{check-health.overall}}'
consumes:
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
path: /table/change_request?sysparm_query=number={{change_number}}
inputParameters:
- name: change_number
in: query
operations:
- name: get-change-window
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor/groups
operations:
- name: get-status
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When a Datadog SLO breach is detected, creates a ServiceNow incident, pages on-call via PagerDuty, and posts to the reliability channel.
naftiko: '0.5'
info:
label: Datadog SLO Breach Incident Handler
description: When a Datadog SLO breach is detected, creates a ServiceNow incident, pages on-call via PagerDuty, and posts to the reliability channel.
tags:
- banking
- sre
- datadog
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: sre-ops
port: 8080
tools:
- name: handle-slo-breach
description: Given an SLO name and current SLI value, create a ServiceNow incident, trigger a PagerDuty alert, and notify the SRE channel in Teams.
inputParameters:
- name: slo_name
in: body
type: string
description: SLO name.
- name: sli_value
in: body
type: number
description: Current SLI value.
- name: service_name
in: body
type: string
description: Affected service.
- name: sre_channel_id
in: body
type: string
description: SRE Teams channel.
steps:
- name: create-incident
type: call
call: snow.create-incident
with:
short_description: 'SLO breach: {{slo_name}} — {{service_name}}'
description: 'SLI: {{sli_value}}%'
priority: '2'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
service_id: sre-team
title: 'SLO breach: {{slo_name}} ({{sli_value}}%)'
- name: notify-channel
type: call
call: msteams.post-channel
with:
channel_id: '{{sre_channel_id}}'
text: 'SLO Breach: {{slo_name}} — {{service_name}} at {{sli_value}}%. SNOW: {{create-incident.number}}'
consumes:
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: 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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Generates a quarterly financial report by querying Snowflake for KPIs, refreshing Power BI dashboards, and distributing via email to the executive team.
naftiko: '0.5'
info:
label: Quarterly Financial Report Generator
description: Generates a quarterly financial report by querying Snowflake for KPIs, refreshing Power BI dashboards, and distributing via email to the executive team.
tags:
- banking
- finance
- analytics
- snowflake
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: generate-financial-report
description: Given a reporting quarter, query Snowflake for financial KPIs, trigger a Power BI refresh, and email the report link to executives.
inputParameters:
- name: quarter
in: body
type: string
description: Reporting quarter.
- name: exec_dl
in: body
type: string
description: Executive distribution list email.
steps:
- name: query-kpis
type: call
call: snowflake.run-query
with:
query: SELECT * FROM financial_kpis WHERE quarter='{{quarter}}'
- name: refresh-pbi
type: call
call: powerbi.trigger-refresh
with:
datasetId: financial-dashboard
- name: send-report
type: call
call: msgraph.send-mail
with:
to: '{{exec_dl}}'
subject: Financial Report — {{quarter}}
body: 'Revenue: {{query-kpis.revenue}} | Expenses: {{query-kpis.expenses}}. Dashboard refreshed.'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/noreply@bofa.com/sendMail
operations:
- name: send-mail
method: POST
Sends benefits open enrollment reminders by querying Workday for incomplete enrollments, sending emails via Microsoft Graph, and logging in ServiceNow.
naftiko: '0.5'
info:
label: Workday Benefits Enrollment Reminder Workflow
description: Sends benefits open enrollment reminders by querying Workday for incomplete enrollments, sending emails via Microsoft Graph, and logging in ServiceNow.
tags:
- banking
- hr
- benefits
- workday
- microsoft-graph
- servicenow
capability:
exposes:
- type: mcp
namespace: benefits-ops
port: 8080
tools:
- name: send-enrollment-reminders
description: Given an enrollment period and deadline, query Workday for incomplete enrollments, send reminder emails, and log the outreach in ServiceNow.
inputParameters:
- name: enrollment_period
in: body
type: string
description: Enrollment period.
- name: deadline_date
in: body
type: string
description: Deadline in YYYY-MM-DD.
steps:
- name: get-incomplete
type: call
call: workday.get-incomplete-enrollment
with:
period: '{{enrollment_period}}'
- name: send-reminders
type: call
call: msgraph.send-bulk-mail
with:
subject: Benefits Enrollment Deadline {{deadline_date}}
body: Please complete enrollment by {{deadline_date}}.
- name: log-outreach
type: call
call: snow.create-task
with:
short_description: 'Benefits reminders: {{enrollment_period}}'
description: 'Incomplete: {{get-incomplete.count}} | Deadline: {{deadline_date}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Benefits/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: enrollment
path: /benefit-elections?status=incomplete
operations:
- name: get-incomplete-enrollment
method: GET
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/benefits@bofa.com/sendMail
operations:
- name: send-bulk-mail
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_benefits_task
operations:
- name: create-task
method: POST
Retrieves all Okta application assignments for a given user and posts a formatted access summary to the Cybersecurity Teams channel for quarterly access certification review.
naftiko: '0.5'
info:
label: Okta Access Certification Workflow
description: Retrieves all Okta application assignments for a given user and posts a formatted access summary to the Cybersecurity Teams channel for quarterly access certification review.
tags:
- identity
- security
- okta
- microsoft-teams
- access-review
- compliance
capability:
exposes:
- type: mcp
namespace: access-certification
port: 8080
tools:
- name: certify-user-access
description: Given an Okta user login, retrieve all application assignments and group memberships, and post a structured access report to the Cybersecurity Teams channel for certification.
inputParameters:
- name: user_login
in: body
type: string
description: The Okta user login (email) to certify access for.
steps:
- name: get-user-apps
type: call
call: okta.list-user-apps
with:
user_login: '{{user_login}}'
- name: get-user-groups
type: call
call: okta.list-user-groups
with:
user_login: '{{user_login}}'
- name: post-cert-report
type: call
call: msteams.post-channel-message
with:
channel: cybersecurity-access-certs
message: 'Access cert for {{user_login}}: {{get-user-apps.count}} apps | {{get-user-groups.count}} groups | Apps: {{get-user-apps.names}}'
consumes:
- type: http
namespace: okta
baseUri: https://bankofamerica.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-apps
path: /users/{{user_login}}/appLinks
inputParameters:
- name: user_login
in: path
operations:
- name: list-user-apps
method: GET
- name: user-groups
path: /users/{{user_login}}/groups
inputParameters:
- name: user_login
in: path
operations:
- name: list-user-groups
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves a regulatory filing or policy document from SharePoint and generates a structured executive summary using OpenAI GPT-4o, returning key findings for compliance review.
naftiko: '0.5'
info:
label: AI-Assisted Regulatory Document Summarization
description: Retrieves a regulatory filing or policy document from SharePoint and generates a structured executive summary using OpenAI GPT-4o, returning key findings for compliance review.
tags:
- ai
- compliance
- openai
- sharepoint
- document-processing
- regulatory
capability:
exposes:
- type: mcp
namespace: compliance-ai
port: 8080
tools:
- name: summarize-regulatory-document
description: Given a SharePoint site ID and document item ID, retrieve the document and generate a 5-point executive summary using OpenAI. Use for rapid review of regulatory filings, SEC documents, or policy updates.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID where the regulatory document is stored.
- name: item_id
in: body
type: string
description: The SharePoint drive item ID for the document.
- name: document_type
in: body
type: string
description: 'Document type context: ''SEC filing'', ''CCAR report'', ''compliance policy'', ''audit finding''.'
steps:
- name: get-document
type: call
call: sharepoint.get-document-content
with:
site_id: '{{site_id}}'
item_id: '{{item_id}}'
- name: generate-summary
type: call
call: openai.create-chat-completion
with:
model: gpt-4o
system_prompt: You are a regulatory compliance analyst at a major US bank. Summarize the following {{document_type}} document in 5 key bullet points, highlighting risk factors, regulatory requirements, deadlines, and required actions.
user_message: '{{get-document.content}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: document-content
path: /sites/{{site_id}}/drive/items/{{item_id}}/content
inputParameters:
- name: site_id
in: path
- name: item_id
in: path
operations:
- name: get-document-content
method: GET
- type: http
namespace: openai
baseUri: https://api.openai.com/v1
authentication:
type: bearer
token: $secrets.openai_api_key
resources:
- name: chat-completions
path: /chat/completions
operations:
- name: create-chat-completion
method: POST
Processes KYC onboarding by verifying identity in Salesforce, running compliance checks in Snowflake, and creating an onboarding task in ServiceNow.
naftiko: '0.5'
info:
label: KYC Customer Onboarding Handler
description: Processes KYC onboarding by verifying identity in Salesforce, running compliance checks in Snowflake, and creating an onboarding task in ServiceNow.
tags:
- banking
- kyc
- compliance
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: kyc-ops
port: 8080
tools:
- name: onboard-customer-kyc
description: Given customer details, verify in Salesforce, run KYC in Snowflake, create a ServiceNow task, and notify compliance.
inputParameters:
- name: customer_name
in: body
type: string
description: Customer name.
- name: customer_id
in: body
type: string
description: Customer ID.
- name: compliance_upn
in: body
type: string
description: Compliance UPN.
steps:
- name: verify
type: call
call: sf.get-customer
with:
customer_id: '{{customer_id}}'
- name: run-kyc
type: call
call: snowflake.run-kyc
with:
customer: '{{customer_name}}'
- name: create-task
type: call
call: snow.create-task
with:
short_description: 'KYC: {{customer_name}}'
description: 'Status: {{run-kyc.status}}'
- name: notify
type: call
call: msteams.send-message
with:
recipient_upn: '{{compliance_upn}}'
text: 'KYC: {{customer_name}} — {{run-kyc.status}}. SNOW: {{create-task.number}}'
consumes:
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: customers
path: /sobjects/Account/{{customer_id}}
operations:
- name: get-customer
method: GET
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-kyc
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_kyc_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
operations:
- name: send-message
method: POST
Checks regulatory capital adequacy by pulling risk-weighted assets from Snowflake, comparing against SAP capital accounts, and reporting to compliance.
naftiko: '0.5'
info:
label: Regulatory Capital Adequacy Check
description: Checks regulatory capital adequacy by pulling risk-weighted assets from Snowflake, comparing against SAP capital accounts, and reporting to compliance.
tags:
- banking
- regulatory
- capital
- snowflake
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: capital-ops
port: 8080
tools:
- name: check-capital-adequacy
description: Given a reporting date, pull RWA from Snowflake, compare with SAP capital, and notify the compliance team in Teams.
inputParameters:
- name: report_date
in: body
type: string
description: Report date.
- name: compliance_channel_id
in: body
type: string
description: Compliance Teams channel.
steps:
- name: get-rwa
type: call
call: snowflake.query-rwa
with:
date: '{{report_date}}'
- name: get-capital
type: call
call: sap-fi.get-capital-accounts
with:
date: '{{report_date}}'
- name: notify-compliance
type: call
call: msteams.post-channel
with:
channel_id: '{{compliance_channel_id}}'
text: 'Capital adequacy: RWA: ${{get-rwa.total}} | Capital: ${{get-capital.total}} | Ratio: {{get-capital.ratio}}%'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-rwa
method: POST
- type: http
namespace: sap
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: capital
path: /A_JournalEntry?$filter=PostingDate eq '{{date}}'
inputParameters:
- name: date
in: query
operations:
- name: get-capital-accounts
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Retrieves the current on-call engineer for a PagerDuty schedule.
naftiko: '0.5'
info:
label: PagerDuty On-Call Schedule Lookup
description: Retrieves the current on-call engineer for a PagerDuty schedule.
tags:
- banking
- it-operations
- pagerduty
- incident-management
- lookup
capability:
exposes:
- type: mcp
namespace: incident-ops
port: 8080
tools:
- name: get-on-call
description: Given a PagerDuty schedule ID, return the currently on-call user name and email.
inputParameters:
- name: schedule_id
in: body
type: string
description: PagerDuty schedule ID.
call: pagerduty.get-oncall
with:
schedule_id: '{{schedule_id}}'
outputParameters:
- name: user_name
type: string
mapping: $.oncalls[0].user.name
- name: user_email
type: string
mapping: $.oncalls[0].user.email
consumes:
- namespace: pagerduty
type: http
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incident-ops
path: /{{id}}
operations:
- name: get-oncall
method: GET
Performs a credit risk assessment by pulling customer financials from Snowflake, running the risk model, and updating the Salesforce opportunity with the risk rating.
naftiko: '0.5'
info:
label: Credit Risk Assessment Workflow
description: Performs a credit risk assessment by pulling customer financials from Snowflake, running the risk model, and updating the Salesforce opportunity with the risk rating.
tags:
- banking
- credit-risk
- risk-management
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: credit-ops
port: 8080
tools:
- name: assess-credit-risk
description: Given a customer ID and loan amount, pull financials from Snowflake, compute risk score, and update the Salesforce opportunity.
inputParameters:
- name: customer_id
in: body
type: string
description: Customer ID.
- name: loan_amount
in: body
type: number
description: Requested loan amount.
- name: rm_upn
in: body
type: string
description: Relationship manager UPN.
steps:
- name: get-financials
type: call
call: snowflake.query-financials
with:
customer_id: '{{customer_id}}'
- name: update-opportunity
type: call
call: sf.update-risk-rating
with:
customer_id: '{{customer_id}}'
risk_score: '{{get-financials.risk_score}}'
- name: notify-rm
type: call
call: msteams.send-message
with:
recipient_upn: '{{rm_upn}}'
text: 'Credit assessment: {{customer_id}} — Risk score: {{get-financials.risk_score}} | Loan: ${{loan_amount}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-financials
method: POST
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: update-risk-rating
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Performs credit risk assessment by pulling financials from Snowflake, computing risk, and updating Salesforce.
naftiko: '0.5'
info:
label: Credit Risk Assessment Handler
description: Performs credit risk assessment by pulling financials from Snowflake, computing risk, and updating Salesforce.
tags:
- banking
- credit-risk
- risk-management
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: credit-ops
port: 8080
tools:
- name: assess-credit-risk
description: Given a customer ID and loan amount, pull financials from Snowflake, update Salesforce, and notify the RM.
inputParameters:
- name: customer_id
in: body
type: string
description: Customer ID.
- name: loan_amount
in: body
type: number
description: Loan amount.
- name: rm_upn
in: body
type: string
description: RM UPN.
steps:
- name: get-financials
type: call
call: snowflake.query-financials
with:
customer_id: '{{customer_id}}'
- name: update-sf
type: call
call: sf.update-risk
with:
customer_id: '{{customer_id}}'
risk_score: '{{get-financials.risk_score}}'
- name: notify-rm
type: call
call: msteams.send-message
with:
recipient_upn: '{{rm_upn}}'
text: 'Credit: {{customer_id}} — Risk: {{get-financials.risk_score}} | Loan: ${{loan_amount}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-financials
method: POST
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{customer_id}}
operations:
- name: update-risk
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
operations:
- name: send-message
method: POST
Retrieves contractor engagement status from Workday, returning contract end date, rate, and hiring manager.
naftiko: '0.5'
info:
label: Workday Contractor Status Lookup
description: Retrieves contractor engagement status from Workday, returning contract end date, rate, and hiring manager.
tags:
- hr
- workday
- contractor-management
- lookup
capability:
exposes:
- type: mcp
namespace: contractor-ops
port: 8080
tools:
- name: get-contractor-status
description: Given a contractor worker ID, return the contract end date, billing rate, and hiring manager name.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday contingent worker ID.
call: workday.get-contingent-worker
with:
Worker_ID: '{{worker_id}}'
outputParameters:
- name: end_date
type: string
mapping: $.Worker.Contract_End_Date
- name: billing_rate
type: number
mapping: $.Worker.Bill_Rate
- name: manager
type: string
mapping: $.Worker.Manager_Name
consumes:
- namespace: workday
type: http
baseUri: https://wd5-impl-services1.workday.com/ccx/service/bofa/Human_Resources/v40.1
authentication:
type: basic
username: $secrets.workday_user
password: $secrets.workday_password
resources:
- name: contingent-workers
path: /contingent-workers/{{Worker_ID}}
operations:
- name: get-contingent-worker
method: GET
Handles trade settlement exceptions by pulling trade details from Snowflake, creating an exception ticket in ServiceNow, and notifying operations via Teams.
naftiko: '0.5'
info:
label: Trade Settlement Exception Handler
description: Handles trade settlement exceptions by pulling trade details from Snowflake, creating an exception ticket in ServiceNow, and notifying operations via Teams.
tags:
- banking
- trading
- settlement
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: settlement-ops
port: 8080
tools:
- name: handle-settlement-exception
description: Given a trade ID and exception type, pull details from Snowflake, create a ServiceNow ticket, and notify operations.
inputParameters:
- name: trade_id
in: body
type: string
description: Trade ID.
- name: exception_type
in: body
type: string
description: Exception type.
- name: ops_channel_id
in: body
type: string
description: Operations Teams channel.
steps:
- name: get-trade
type: call
call: snowflake.get-trade-details
with:
trade_id: '{{trade_id}}'
- name: create-ticket
type: call
call: snow.create-exception
with:
short_description: 'Settlement exception: {{trade_id}} — {{exception_type}}'
description: 'Counterparty: {{get-trade.counterparty}} | Amount: {{get-trade.amount}}'
- name: notify-ops
type: call
call: msteams.post-channel
with:
channel_id: '{{ops_channel_id}}'
text: 'Settlement exception: {{trade_id}} — {{exception_type}}. Counterparty: {{get-trade.counterparty}}. SNOW: {{create-ticket.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-trade-details
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: exceptions
path: /table/u_trade_exception
operations:
- name: create-exception
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When a new hire is created in Workday, provisions an Active Directory account via Microsoft Graph, opens a ServiceNow IT onboarding ticket, and sends a Microsoft Teams welcome message to the new employee.
naftiko: '0.5'
info:
label: New Employee Onboarding Orchestrator
description: When a new hire is created in Workday, provisions an Active Directory account via Microsoft Graph, opens a ServiceNow IT onboarding ticket, and sends a Microsoft Teams welcome message to the new employee.
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-graph
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-employee-onboarding
description: Given a Workday employee ID and start date, provision an Active Directory account via Microsoft Graph, open a ServiceNow IT onboarding ticket, and send a Teams welcome message to the new hire.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: 'The Workday worker ID for the new hire. Format: WID-XXXXXXXX.'
- name: start_date
in: body
type: string
description: The employee's first day in ISO 8601 format (YYYY-MM-DD).
- name: business_line
in: body
type: string
description: The Bank of America business line the employee is joining, e.g. 'Global Markets', 'Consumer Banking'.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: provision-ad
type: call
call: msgraph.create-user
with:
displayName: '{{get-worker.full_name}}'
userPrincipalName: '{{get-worker.work_email}}'
department: '{{business_line}}'
- name: create-it-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'IT Onboarding: {{get-worker.full_name}} — starts {{start_date}}'
category: hr_onboarding
assignment_group: IT_Onboarding
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-worker.work_email}}'
message: Welcome to Bank of America, {{get-worker.first_name}}! Your IT setup ticket is {{create-it-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: /bankofamerica/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: https://bankofamerica.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Generates a daily treasury cash position report by pulling balances from SAP, enriching with market rates from Snowflake, and distributing via Teams.
naftiko: '0.5'
info:
label: Treasury Cash Position Report
description: Generates a daily treasury cash position report by pulling balances from SAP, enriching with market rates from Snowflake, and distributing via Teams.
tags:
- banking
- treasury
- finance
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: treasury-ops
port: 8080
tools:
- name: generate-cash-report
description: Given a reporting date, pull cash balances from SAP, get market rates from Snowflake, and post the treasury report to Teams.
inputParameters:
- name: report_date
in: body
type: string
description: Report date.
- name: treasury_channel_id
in: body
type: string
description: Treasury Teams channel.
steps:
- name: get-balances
type: call
call: sap-fi.get-cash-balances
with:
date: '{{report_date}}'
- name: get-rates
type: call
call: snowflake.get-market-rates
with:
date: '{{report_date}}'
- name: post-report
type: call
call: msteams.post-channel
with:
channel_id: '{{treasury_channel_id}}'
text: 'Treasury Report {{report_date}}: Cash: ${{get-balances.total}} | USD/EUR: {{get-rates.usd_eur}}'
consumes:
- type: http
namespace: sap
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_JOURNAL_ENTRY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: balances
path: /A_JournalEntry?$filter=PostingDate eq '{{date}}'
inputParameters:
- name: date
in: query
operations:
- name: get-cash-balances
method: GET
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-market-rates
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Runs data quality validation queries against Bank of America's Snowflake risk data warehouse to detect anomalies, nulls, and stale data, posting results to the Risk Analytics Teams channel.
naftiko: '0.5'
info:
label: Snowflake Risk Data Warehouse Quality Check
description: Runs data quality validation queries against Bank of America's Snowflake risk data warehouse to detect anomalies, nulls, and stale data, posting results to the Risk Analytics Teams channel.
tags:
- data
- analytics
- snowflake
- data-quality
- risk
- finance
capability:
exposes:
- type: mcp
namespace: risk-data
port: 8080
tools:
- name: run-risk-data-quality-check
description: Given a Snowflake table name and check date, execute data quality validation SQL and post a pass/fail quality report to the Risk Analytics Teams channel.
inputParameters:
- name: table_name
in: body
type: string
description: Fully qualified Snowflake table, e.g. 'BOA_RISK_PROD.CREDIT.LOAN_POSITIONS'.
- name: check_date
in: body
type: string
description: The business date to validate in YYYY-MM-DD format.
steps:
- name: run-dq-check
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as total, COUNT_IF(exposure IS NULL) as null_exposure FROM {{table_name}} WHERE position_date = '{{check_date}}'
- name: post-results
type: call
call: msteams.post-channel-message
with:
channel: risk-analytics
message: 'DQ check on {{table_name}} for {{check_date}}: {{run-dq-check.total}} rows, {{run-dq-check.null_exposure}} null exposures'
consumes:
- type: http
namespace: snowflake
baseUri: https://bankofamerica.snowflakecomputing.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_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves vendor master data from SAP by vendor number, returning company name, payment terms, and tax ID.
naftiko: '0.5'
info:
label: SAP Vendor Master Data Lookup
description: Retrieves vendor master data from SAP by vendor number, returning company name, payment terms, and tax ID.
tags:
- banking
- finance
- sap
- procurement
- lookup
capability:
exposes:
- type: mcp
namespace: vendor-ops
port: 8080
tools:
- name: get-vendor
description: Given an SAP vendor number, return the vendor name, payment terms, and tax ID.
inputParameters:
- name: vendor_number
in: body
type: string
description: SAP vendor account number.
call: sap.get-vendor
with:
Supplier: '{{vendor_number}}'
outputParameters:
- name: vendor_name
type: string
mapping: $.d.SupplierName
- name: payment_terms
type: string
mapping: $.d.PaymentTerms
consumes:
- namespace: sap
type: http
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendor-ops
path: /{{id}}
operations:
- name: get-vendor
method: GET
Initiates the annual performance review cycle in Workday for a given division, creates ServiceNow tracking tasks for HR, and notifies managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Launch
description: Initiates the annual performance review cycle in Workday for a given division, creates ServiceNow tracking tasks for HR, and notifies managers via Microsoft Teams.
tags:
- hr
- performance
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-performance-review-cycle
description: Given a department ID and review year, start the Workday performance review process, create ServiceNow HR tracking tasks, and notify managers in Teams.
inputParameters:
- name: department_id
in: body
type: string
description: The Workday organization unit ID for the performance review cycle.
- name: review_year
in: body
type: string
description: The performance review year, e.g. '2026'.
steps:
- name: initiate-review
type: call
call: workday.initiate-review
with:
department_id: '{{department_id}}'
review_period: '{{review_year}}'
- name: create-hr-task
type: call
call: servicenow.create-task
with:
short_description: Performance review {{review_year}} — {{department_id}}
assignment_group: HR_Operations
due_date: '{{initiate-review.deadline}}'
- name: notify-managers
type: call
call: msteams.post-channel-message
with:
channel: hr-announcements
message: Performance review cycle {{review_year}} launched for department {{department_id}}. Complete reviews by {{initiate-review.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: performance-reviews
path: /bankofamerica/performanceReviews
operations:
- name: initiate-review
method: POST
- type: http
namespace: servicenow
baseUri: https://bankofamerica.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Screens customers against sanctions lists by querying Snowflake, logging results in ServiceNow, and escalating matches to the compliance team via Teams.
naftiko: '0.5'
info:
label: Sanctions Screening Workflow
description: Screens customers against sanctions lists by querying Snowflake, logging results in ServiceNow, and escalating matches to the compliance team via Teams.
tags:
- banking
- sanctions
- compliance
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: sanctions-ops
port: 8080
tools:
- name: screen-sanctions
description: Given a customer name and country, run sanctions screening in Snowflake, log in ServiceNow, and escalate matches to compliance.
inputParameters:
- name: customer_name
in: body
type: string
description: Customer name.
- name: country
in: body
type: string
description: Customer country.
- name: compliance_upn
in: body
type: string
description: Compliance officer UPN.
steps:
- name: run-screening
type: call
call: snowflake.screen-sanctions
with:
customer: '{{customer_name}}'
country: '{{country}}'
- name: log-result
type: call
call: snow.create-screening-record
with:
short_description: 'Sanctions: {{customer_name}} ({{country}})'
description: 'Match count: {{run-screening.match_count}}'
- name: notify-compliance
type: call
call: msteams.send-message
with:
recipient_upn: '{{compliance_upn}}'
text: 'Sanctions screening: {{customer_name}} ({{country}}) — Matches: {{run-screening.match_count}}. SNOW: {{log-result.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: screen-sanctions
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: screening
path: /table/u_sanctions_screening
operations:
- name: create-screening-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Queries Datadog for SLO compliance across Bank of America's critical banking platforms and posts a daily availability digest to the Engineering Operations Microsoft Teams channel.
naftiko: '0.5'
info:
label: Datadog Platform SLO Digest
description: Queries Datadog for SLO compliance across Bank of America's critical banking platforms and posts a daily availability digest to the Engineering Operations Microsoft Teams channel.
tags:
- observability
- monitoring
- datadog
- slo
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: observability-reporting
port: 8080
tools:
- name: digest-platform-slos
description: Query Datadog for SLO compliance metrics for the specified environment and time window, then post a structured report to the Engineering Ops Teams channel.
inputParameters:
- name: environment
in: body
type: string
description: 'Target environment to report on: ''production'', ''staging'', or ''dr''.'
- name: time_window_hours
in: body
type: integer
description: Look-back window in hours for SLO metrics. Typically 24.
steps:
- name: get-slos
type: call
call: datadog.list-slos
with:
tags: env:{{environment}}
limit: '100'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel: engineering-ops
message: 'Daily SLO Report ({{environment}}, last {{time_window_hours}}h): {{get-slos.passing}} passing, {{get-slos.failing}} failing. Overall compliance: {{get-slos.compliance_pct}}%'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slos
path: /slo
operations:
- name: list-slos
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{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 Salesforce for open client opportunities closing in the current quarter, aggregates by relationship manager and product, and posts a pipeline digest to the Sales Leadership Teams channel.
naftiko: '0.5'
info:
label: Salesforce Client Opportunity Pipeline Digest
description: Queries Salesforce for open client opportunities closing in the current quarter, aggregates by relationship manager and product, and posts a pipeline digest to the Sales Leadership Teams channel.
tags:
- sales
- crm
- salesforce
- microsoft-teams
- reporting
- finance
capability:
exposes:
- type: mcp
namespace: sales-pipeline
port: 8080
tools:
- name: digest-opportunity-pipeline
description: Query Salesforce for opportunities closing this quarter, group by relationship manager and product type, and post a pipeline summary to the Sales Leadership Teams channel.
inputParameters:
- name: fiscal_quarter
in: body
type: string
description: Fiscal quarter to report on, e.g. '2026-Q1'.
- name: business_segment
in: body
type: string
description: Bank of America business segment, e.g. 'Global Banking', 'Business Banking'.
steps:
- name: query-pipeline
type: call
call: salesforce.query-opportunities
with:
quarter: '{{fiscal_quarter}}'
segment: '{{business_segment}}'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel: sales-leadership
message: 'Q{{fiscal_quarter}} Pipeline ({{business_segment}}): {{query-pipeline.count}} opportunities | Total value: ${{query-pipeline.total_value}} | Weighted: ${{query-pipeline.weighted_value}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://bankofamerica.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunity-query
path: /query
inputParameters:
- name: q
in: query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{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 Confluence for a knowledge article by keyword and returns the page title, space, and URL.
naftiko: '0.5'
info:
label: Confluence Knowledge Article Search
description: Searches Confluence for a knowledge article by keyword and returns the page title, space, and URL.
tags:
- banking
- knowledge-management
- confluence
- documentation
- lookup
capability:
exposes:
- type: mcp
namespace: km-ops
port: 8080
tools:
- name: search-article
description: Given a keyword, search Confluence for matching articles and return the top result title, space, and URL.
inputParameters:
- name: keyword
in: body
type: string
description: Search keyword.
call: confluence.search-content
with:
cql: type=page AND title~{{keyword}}
outputParameters:
- name: title
type: string
mapping: $.results[0].title
- name: space
type: string
mapping: $.results[0].space.name
consumes:
- namespace: confluence
type: http
baseUri: https://bofa.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_api_token
resources:
- name: km-ops
path: /{{id}}
operations:
- name: search-content
method: GET
Processes a data subject access request by searching Salesforce and Snowflake for personal data, compiling results, and logging in ServiceNow.
naftiko: '0.5'
info:
label: Data Privacy Subject Access Request Handler
description: Processes a data subject access request by searching Salesforce and Snowflake for personal data, compiling results, and logging in ServiceNow.
tags:
- banking
- compliance
- data-privacy
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: privacy-ops
port: 8080
tools:
- name: process-dsar
description: Given a data subject email, search for personal data across Salesforce and Snowflake, log the DSAR in ServiceNow, and notify the privacy officer via Teams.
inputParameters:
- name: subject_email
in: body
type: string
description: Data subject email.
- name: request_type
in: body
type: string
description: 'DSAR type: access, deletion.'
- name: privacy_officer_upn
in: body
type: string
description: UPN of privacy officer.
steps:
- name: search-sf
type: call
call: sf.search-person
with:
email: '{{subject_email}}'
- name: search-snowflake
type: call
call: snowflake.search-pii
with:
email: '{{subject_email}}'
- name: log-dsar
type: call
call: snow.create-dsar
with:
short_description: 'DSAR: {{request_type}} — {{subject_email}}'
description: 'SF: {{search-sf.record_count}} | Snowflake: {{search-snowflake.record_count}}'
- name: notify-officer
type: call
call: msteams.send-message
with:
recipient_upn: '{{privacy_officer_upn}}'
text: 'DSAR: {{request_type}} for {{subject_email}}. SF: {{search-sf.record_count}}, SF: {{search-snowflake.record_count}}. SNOW: {{log-dsar.number}}'
consumes:
- type: http
namespace: sf
baseUri: https://bofa.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: search
path: /parameterizedSearch/?q={{email}}
inputParameters:
- name: email
in: query
operations:
- name: search-person
method: GET
- type: http
namespace: snowflake
baseUri: https://bofa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: search-pii
method: POST
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: dsar
path: /table/u_dsar_request
operations:
- name: create-dsar
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Responds to AKS scaling alerts by checking Datadog metrics, triggering node pool scaling via Azure, and notifying the platform team in Teams.
naftiko: '0.5'
info:
label: Azure Kubernetes Cluster Scaling Handler
description: Responds to AKS scaling alerts by checking Datadog metrics, triggering node pool scaling via Azure, and notifying the platform team in Teams.
tags:
- banking
- devops
- kubernetes
- azure
- datadog
capability:
exposes:
- type: mcp
namespace: platform-ops
port: 8080
tools:
- name: handle-aks-scaling
description: Given an AKS cluster name and CPU utilization, check Datadog metrics, scale Azure node pool, and notify platform team in Teams.
inputParameters:
- name: cluster_name
in: body
type: string
description: AKS cluster name.
- name: cpu_utilization
in: body
type: number
description: CPU utilization percentage.
- name: platform_channel_id
in: body
type: string
description: Teams channel ID.
steps:
- name: check-metrics
type: call
call: datadog.get-cluster-metrics
with:
cluster: '{{cluster_name}}'
- name: scale-nodes
type: call
call: azure.scale-nodepool
with:
cluster: '{{cluster_name}}'
- name: notify-team
type: call
call: msteams.post-channel
with:
channel_id: '{{platform_channel_id}}'
text: 'AKS scaling: {{cluster_name}} — CPU: {{cpu_utilization}}%. Trend: {{check-metrics.trend}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: metrics
path: /query?query=kubernetes.cpu.usage{{cluster}}
inputParameters:
- name: cluster
in: query
operations:
- name: get-cluster-metrics
method: GET
- type: http
namespace: azure
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: nodepools
path: /subscriptions/{{subId}}/resourceGroups/aks-rg/providers/Microsoft.ContainerService/managedClusters/{{cluster}}/agentPools/default
inputParameters:
- name: cluster
in: path
operations:
- name: scale-nodepool
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: channels
path: /teams/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Manages IT asset retirement by updating the ServiceNow CMDB, revoking Okta access, and logging disposal in SAP fixed assets.
naftiko: '0.5'
info:
label: IT Asset Lifecycle Retirement Workflow
description: Manages IT asset retirement by updating the ServiceNow CMDB, revoking Okta access, and logging disposal in SAP fixed assets.
tags:
- banking
- it-operations
- asset-management
- servicenow
- okta
- sap
capability:
exposes:
- type: mcp
namespace: asset-ops
port: 8080
tools:
- name: retire-it-asset
description: Given a CI name and asset tag, mark as retired in ServiceNow CMDB, revoke Okta access, create SAP disposal entry, and notify IT manager in Teams.
inputParameters:
- name: ci_name
in: body
type: string
description: ServiceNow CI name.
- name: asset_tag
in: body
type: string
description: Asset tag number.
- name: it_manager_upn
in: body
type: string
description: UPN of IT asset manager.
steps:
- name: retire-cmdb
type: call
call: snow.update-ci-status
with:
ci_name: '{{ci_name}}'
status: Retired
- name: revoke-access
type: call
call: okta.remove-app-assignment
with:
app_label: '{{ci_name}}'
- name: log-disposal
type: call
call: sap.create-disposal
with:
asset_number: '{{asset_tag}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{it_manager_upn}}'
text: 'Asset retired: {{ci_name}} ({{asset_tag}}). CMDB updated, access revoked.'
consumes:
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci?sysparm_query=name={{ci_name}}
inputParameters:
- name: ci_name
in: query
operations:
- name: update-ci-status
method: PATCH
- type: http
namespace: okta
baseUri: https://bofa.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: apps
path: /apps?q={{app_label}}
inputParameters:
- name: app_label
in: query
operations:
- name: remove-app-assignment
method: DELETE
- type: http
namespace: sap
baseUri: https://bofa-s4.sap.com/sap/opu/odata/sap/API_FIXEDASSET_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: disposals
path: /A_FixedAsset
operations:
- name: create-disposal
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Performs a vendor risk assessment by pulling vendor details from SAP Ariba, checking compliance in ServiceNow GRC, and notifying procurement via Teams.
naftiko: '0.5'
info:
label: Third-Party Vendor Risk Assessment Workflow
description: Performs a vendor risk assessment by pulling vendor details from SAP Ariba, checking compliance in ServiceNow GRC, and notifying procurement via Teams.
tags:
- banking
- procurement
- risk-management
- sap-ariba
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: Given a vendor ID, retrieve the vendor profile from SAP Ariba, check GRC compliance in ServiceNow, and send the risk summary to procurement in Teams.
inputParameters:
- name: vendor_id
in: body
type: string
description: SAP Ariba supplier ID.
- name: procurement_lead_upn
in: body
type: string
description: UPN of procurement lead.
steps:
- name: get-vendor
type: call
call: ariba.get-supplier
with:
vendorId: '{{vendor_id}}'
- name: check-grc
type: call
call: snow.get-compliance
with:
vendor_name: '{{get-vendor.SupplierName}}'
- name: notify-lead
type: call
call: msteams.send-message
with:
recipient_upn: '{{procurement_lead_upn}}'
text: 'Vendor Risk: {{get-vendor.SupplierName}} — GRC: {{check-grc.compliance_status}} | Score: {{check-grc.risk_score}}'
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/{{vendorId}}
inputParameters:
- name: vendorId
in: path
operations:
- name: get-supplier
method: GET
- type: http
namespace: snow
baseUri: https://bofa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: grc
path: /table/sn_grc_profile?sysparm_query=name={{vendor_name}}
inputParameters:
- name: vendor_name
in: query
operations:
- name: get-compliance
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the status of a DocuSign envelope by ID, returning signing status and sent date.
naftiko: '0.5'
info:
label: DocuSign Envelope Tracking Lookup
description: Retrieves the status of a DocuSign envelope by ID, returning signing status and sent date.
tags:
- banking
- legal
- docusign
- document-management
- lookup
capability:
exposes:
- type: mcp
namespace: doc-ops
port: 8080
tools:
- name: get-envelope-status
description: Given a DocuSign envelope ID, return the status, sent date, and recipient count.
inputParameters:
- name: envelope_id
in: body
type: string
description: DocuSign envelope ID.
call: docusign.get-envelope
with:
envelopeId: '{{envelope_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: sent_date
type: string
mapping: $.sentDateTime
consumes:
- namespace: docusign
type: http
baseUri: https://na4.docusign.net/restapi/v2.1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: doc-ops
path: /{{id}}
operations:
- name: get-envelope
method: GET
Searches application logs for matching patterns. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Log Search Query
description: Searches application logs for matching patterns. Used by Barclays teams.
tags:
- banking
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-log_search_query
description: Searches application logs for matching patterns. Used by Barclays teams.
inputParameters:
- name: search_query
in: body
type: string
description: The search_query to look up.
call: salesforce.get-search_query
with:
search_query: '{{search_query}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_salesforce_log_search
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: barclays_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-splunk
type: call
call: splunk.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
data: '{{get-splunk.result}}'
- name: create-pagerduty
type: call
call: pagerduty.create-resource
with:
channel: '{{notification_channel}}'
text: Security Incident Response Pipeline step 3 complete.
consumes:
- type: http
namespace: splunk
baseUri: https://barclays-splunk.com/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: https://barclays.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty-op
method: POST
Orchestrates Politically Exposed Persons screening by pulling client data from Salesforce, running PEP screening in Refinitiv, storing the result in Oracle, and creating a compliance review task in Jira if flagged.
naftiko: '0.5'
info:
label: PEP Screening Workflow
description: Orchestrates Politically Exposed Persons screening by pulling client data from Salesforce, running PEP screening in Refinitiv, storing the result in Oracle, and creating a compliance review task in Jira if flagged.
tags:
- compliance
- pep-screening
- salesforce
- refinitiv
- oracle-database
- jira
capability:
exposes:
- type: mcp
namespace: pep-screening
port: 8080
tools:
- name: screen-pep
description: Run PEP screening for a client with automated escalation on positive matches.
inputParameters:
- name: client_id
in: body
type: string
description: Salesforce client account ID.
steps:
- name: get-client
type: call
call: salesforce.get-account
with:
account_id: '{{client_id}}'
- name: run-screening
type: call
call: refinitiv.screen-entity
with:
entity_name: '{{get-client.Name}}'
entity_type: individual
screening_type: pep
- name: store-result
type: call
call: oracle.insert-screening-result
with:
client_id: '{{client_id}}'
screening_type: PEP
result: '{{run-screening.overallResult}}'
match_count: '{{run-screening.matchCount}}'
- name: create-review
type: call
call: jira.create-issue
with:
project: COMP
issue_type: Review
summary: 'PEP Screening Review: {{get-client.Name}} - {{run-screening.overallResult}}'
description: 'Client: {{get-client.Name}}. PEP matches: {{run-screening.matchCount}}. Result: {{run-screening.overallResult}}.'
priority: High
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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: refinitiv
baseUri: https://rms-world-check-one-api-pilot.thomsonreuters.com/v2
authentication:
type: bearer
token: $secrets.refinitiv_api_key
resources:
- name: screening
path: /cases/screeningRequest
operations:
- name: screen-entity
method: POST
- type: http
namespace: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/compliance/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: screening-results
path: /screening-results
operations:
- name: insert-screening-result
method: POST
- type: http
namespace: jira
baseUri: https://barclays.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Checks the current status of a project. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Project Status Check
description: Checks the current status of a project. Used by Barclays teams.
tags:
- banking
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake
port: 8080
tools:
- name: get-project_status_check
description: Checks the current status of a project. Used by Barclays teams.
inputParameters:
- name: project_key
in: body
type: string
description: The project_key to look up.
call: snowflake.get-project_key
with:
project_key: '{{project_key}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_project_status_check
method: GET
Monitors portfolio exposures, calculates VaR, detects limit breaches, and alerts risk management.
naftiko: '0.5'
info:
label: Market Risk Monitoring Pipeline
description: Monitors portfolio exposures, calculates VaR, detects limit breaches, and alerts risk management.
tags:
- risk
- snowflake
- grafana
- pagerduty
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: market_risk_monitoring_pipeline
description: Orchestrate market risk 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-grafana
type: call
call: grafana.process-resource
with:
data: '{{get-snowflake.result}}'
- name: create-pagerduty
type: call
call: pagerduty.create-resource
with:
channel: '{{notification_channel}}'
text: Market Risk Monitoring Pipeline step 3 complete.
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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: grafana
baseUri: https://barclays-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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty-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: barclays_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-workday
type: call
call: workday.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
data: '{{get-workday.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: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/barclays
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: https://barclays.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
Assesses counterparty credit risk by pulling entity data from Refinitiv, querying exposure from Snowflake, computing risk metrics via Azure Machine Learning, and filing the assessment in SharePoint.
naftiko: '0.5'
info:
label: Counterparty Risk Assessment
description: Assesses counterparty credit risk by pulling entity data from Refinitiv, querying exposure from Snowflake, computing risk metrics via Azure Machine Learning, and filing the assessment in SharePoint.
tags:
- risk-management
- counterparty-risk
- refinitiv
- snowflake
- azure-machine-learning
- sharepoint
capability:
exposes:
- type: mcp
namespace: counterparty-risk
port: 8080
tools:
- name: assess-counterparty
description: Run a full counterparty risk assessment including exposure analysis and credit scoring.
inputParameters:
- name: counterparty_name
in: body
type: string
description: Legal name of the counterparty.
- name: counterparty_lei
in: body
type: string
description: Legal Entity Identifier.
steps:
- name: screen-entity
type: call
call: refinitiv.screen-entity
with:
entity_name: '{{counterparty_name}}'
entity_type: organisation
lei: '{{counterparty_lei}}'
- name: get-exposure
type: call
call: snowflake.execute-query
with:
statement: SELECT SUM(current_exposure) as total_exposure, SUM(potential_future_exposure) as pfe FROM risk.counterparty_exposure WHERE counterparty_lei = '{{counterparty_lei}}'
warehouse: RISK_WH
database: RISK_DB
- name: compute-risk
type: call
call: azure-ml.score-model
with:
model_name: counterparty-risk-model
input_data: '{"name":"{{counterparty_name}}","lei":"{{counterparty_lei}}","screening_result":"{{screen-entity.overallResult}}","exposure":"{{get-exposure.total_exposure}}"}'
- name: store-assessment
type: call
call: sharepoint.upload-file
with:
site_id: risk_management
folder_path: Counterparty_Assessments/{{counterparty_lei}}
file_name: assessment_{{counterparty_lei}}.json
consumes:
- type: http
namespace: refinitiv
baseUri: https://rms-world-check-one-api-pilot.thomsonreuters.com/v2
authentication:
type: bearer
token: $secrets.refinitiv_api_key
resources:
- name: screening
path: /cases/screeningRequest
operations:
- name: screen-entity
method: POST
- type: http
namespace: snowflake
baseUri: https://barclays.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: azure-ml
baseUri: https://barclays-ml.westeurope.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: scoring
path: /score
operations:
- name: score-model
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
Checks the health status of a monitored service. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Service Health Check
description: Checks the health status of a monitored service. Used by Barclays teams.
tags:
- banking
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-service_health_check
description: Checks the health status of a monitored service. Used by Barclays teams.
inputParameters:
- name: health_target
in: body
type: string
description: The health_target to look up.
call: servicenow.get-health_target
with:
health_target: '{{health_target}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://barclays.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: barclays_service_health_check
method: GET
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://barclays.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://barclays.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
Retrieves current monitoring alert status. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Alert Status Check
description: Retrieves current monitoring alert status. Used by Barclays teams.
tags:
- banking
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: get-alert_status_check
description: Retrieves current monitoring alert status. Used by Barclays teams.
inputParameters:
- name: alert_id
in: body
type: string
description: The alert_id to look up.
call: confluence.get-alert_id
with:
alert_id: '{{alert_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://barclays.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: barclays_alert_status_check
method: GET
Orchestrates employee offboarding by terminating Workday record, revoking access in SailPoint, deactivating Azure AD account, and creating a ServiceNow decommission ticket.
naftiko: '0.5'
info:
label: Employee Offboarding Orchestrator
description: Orchestrates employee offboarding by terminating Workday record, revoking access in SailPoint, deactivating Azure AD account, and creating a ServiceNow decommission ticket.
tags:
- hr
- offboarding
- workday
- sailpoint
- azure-active-directory
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-employee
description: Orchestrate full employee offboarding across HR, identity, and IT systems.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID.
- name: termination_date
in: body
type: string
description: Last working date (YYYY-MM-DD).
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
- name: revoke-access
type: call
call: sailpoint.disable-identity
with:
identity_id: '{{get-employee.sailpoint_id}}'
- name: disable-ad
type: call
call: azure-ad.disable-user
with:
user_principal_name: '{{get-employee.work_email}}'
- name: create-ticket
type: call
call: servicenow.create-record
with:
table: sc_request
short_description: 'Offboarding: {{get-employee.full_name}} - equipment return and access cleanup'
description: 'Termination date: {{termination_date}}. Revoke all access and arrange equipment collection.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/barclays
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: sailpoint
baseUri: https://barclays.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: identities
path: /accounts/{{identity_id}}/disable
inputParameters:
- name: identity_id
in: path
operations:
- name: disable-identity
method: POST
- type: http
namespace: azure-ad
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{user_principal_name}}
inputParameters:
- name: user_principal_name
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: https://barclays.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: table-records
path: /table/{{table}}
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Retrieves pending access certification items from SailPoint for a given reviewer. Returns identity name, entitlement, and application for each pending review.
naftiko: '0.5'
info:
label: SailPoint Access Certification Review
description: Retrieves pending access certification items from SailPoint for a given reviewer. Returns identity name, entitlement, and application for each pending review.
tags:
- security
- identity-governance
- sailpoint
capability:
exposes:
- type: mcp
namespace: identity-governance
port: 8080
tools:
- name: get-pending-certifications
description: Retrieve pending access certification items for a reviewer.
inputParameters:
- name: reviewer_id
in: body
type: string
description: SailPoint reviewer identity ID.
call: sailpoint.get-certifications
with:
reviewer_id: '{{reviewer_id}}'
outputParameters:
- name: pending_items
type: array
mapping: $.items
consumes:
- type: http
namespace: sailpoint
baseUri: https://barclays.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: certifications
path: /certifications?filters=reviewer.id eq "{{reviewer_id}}" and phase eq "ACTIVE"
inputParameters:
- name: reviewer_id
in: query
operations:
- name: get-certifications
method: GET
Retrieves code repository information. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Repository Info Lookup
description: Retrieves code repository information. Used by Barclays teams.
tags:
- banking
- workday
capability:
exposes:
- type: mcp
namespace: workday
port: 8080
tools:
- name: get-repository_info_lookup
description: Retrieves code repository information. Used by Barclays teams.
inputParameters:
- name: repo_name
in: body
type: string
description: The repo_name to look up.
call: workday.get-repo_name
with:
repo_name: '{{repo_name}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/barclays
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_repository_info_looku
method: GET
Orchestrates a real-time payment through the Faster Payments network by validating the payee in Avaloq, debiting the account, dispatching to the payments gateway via Amazon SQS, and logging to Splunk.
naftiko: '0.5'
info:
label: Real-Time Payments Processing
description: Orchestrates a real-time payment through the Faster Payments network by validating the payee in Avaloq, debiting the account, dispatching to the payments gateway via Amazon SQS, and logging to Splunk.
tags:
- payments
- real-time-payments
- avaloq
- amazon-sqs
- splunk
capability:
exposes:
- type: mcp
namespace: rtp-processing
port: 8080
tools:
- name: process-faster-payment
description: Process a Faster Payment through validation, debit, dispatch, and audit logging.
inputParameters:
- name: payer_account
in: body
type: string
description: Payer account number.
- name: payee_account
in: body
type: string
description: Payee account number.
- name: payee_sort_code
in: body
type: string
description: Payee sort code.
- name: amount
in: body
type: string
description: Payment amount in GBP.
- name: reference
in: body
type: string
description: Payment reference.
steps:
- name: validate-payee
type: call
call: avaloq.validate-account
with:
account_number: '{{payee_account}}'
sort_code: '{{payee_sort_code}}'
- name: debit-account
type: call
call: avaloq.create-debit
with:
account_number: '{{payer_account}}'
amount: '{{amount}}'
currency: GBP
reference: '{{reference}}'
- name: dispatch-payment
type: call
call: sqs.send-message
with:
queue_url: https://sqs.eu-west-2.amazonaws.com/barclays/faster-payments-outbound
message_body: '{"payerAccount":"{{payer_account}}","payeeAccount":"{{payee_account}}","sortCode":"{{payee_sort_code}}","amount":"{{amount}}","reference":"{{reference}}","debitRef":"{{debit-account.transaction_id}}"}'
- name: audit-log
type: call
call: splunk.send-event
with:
index: payments
source: faster-payments
event: '{"type":"FPS","payer":"{{payer_account}}","payee":"{{payee_account}}","amount":"{{amount}}","status":"dispatched"}'
consumes:
- type: http
namespace: avaloq
baseUri: https://barclays-avaloq.internal.barclays.com/api/v1
authentication:
type: bearer
token: $secrets.avaloq_token
resources:
- name: account-validation
path: /accounts/{{account_number}}/validate
inputParameters:
- name: account_number
in: path
operations:
- name: validate-account
method: GET
- name: debits
path: /accounts/{{account_number}}/debits
inputParameters:
- name: account_number
in: path
operations:
- name: create-debit
method: POST
- type: http
namespace: sqs
baseUri: https://sqs.eu-west-2.amazonaws.com
authentication:
type: aws-sigv4
region: eu-west-2
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: messages
path: /barclays/faster-payments-outbound
operations:
- name: send-message
method: POST
- type: http
namespace: splunk
baseUri: https://barclays-splunk.splunkcloud.com:8088
authentication:
type: bearer
token: $secrets.splunk_hec_token
resources:
- name: events
path: /services/collector/event
operations:
- name: send-event
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://barclays.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://barclays.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 Geneos monitoring for the health status of a managed entity. Returns severity, component name, and active alert count.
naftiko: '0.5'
info:
label: Geneos System Health Status
description: Queries Geneos monitoring for the health status of a managed entity. Returns severity, component name, and active alert count.
tags:
- operations
- monitoring
- geneos
capability:
exposes:
- type: mcp
namespace: system-health
port: 8080
tools:
- name: get-system-health
description: Check Geneos managed entity health status.
inputParameters:
- name: managed_entity
in: body
type: string
description: Geneos managed entity name.
call: geneos.get-entity-status
with:
entity: '{{managed_entity}}'
outputParameters:
- name: severity
type: string
mapping: $.entity.severity
- name: active_alerts
type: string
mapping: $.entity.activeAlertCount
consumes:
- type: http
namespace: geneos
baseUri: https://barclays-geneos.internal.barclays.com/api/v1
authentication:
type: bearer
token: $secrets.geneos_token
resources:
- name: entities
path: /managedEntities/{{entity}}/status
inputParameters:
- name: entity
in: path
operations:
- name: get-entity-status
method: GET
Searches Splunk for security events matching a given query string and time range. Used by the SOC team for rapid threat investigation.
naftiko: '0.5'
info:
label: Splunk Security Event Search
description: Searches Splunk for security events matching a given query string and time range. Used by the SOC team for rapid threat investigation.
tags:
- security
- siem
- splunk
capability:
exposes:
- type: mcp
namespace: security-monitoring
port: 8080
tools:
- name: search-security-events
description: Search Splunk for security events by query and time range.
inputParameters:
- name: search_query
in: body
type: string
description: Splunk search query (SPL).
- name: earliest_time
in: body
type: string
description: Earliest time for search (e.g. -24h, -7d).
call: splunk.create-search
with:
search: '{{search_query}}'
earliest_time: '{{earliest_time}}'
latest_time: now
consumes:
- type: http
namespace: splunk
baseUri: https://barclays-splunk.splunkcloud.com:8089
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /services/search/jobs
operations:
- name: create-search
method: POST
Retrieves the latest economic indicator value from Bloomberg Economics by indicator code. Returns value, date, and prior reading for macro research.
naftiko: '0.5'
info:
label: Bloomberg Economics Indicator Fetch
description: Retrieves the latest economic indicator value from Bloomberg Economics by indicator code. Returns value, date, and prior reading for macro research.
tags:
- research
- economics
- bloomberg-economics
capability:
exposes:
- type: mcp
namespace: macro-research
port: 8080
tools:
- name: get-economic-indicator
description: Fetch an economic indicator from Bloomberg Economics.
inputParameters:
- name: indicator_code
in: body
type: string
description: Bloomberg Economics indicator code (e.g. GDP CQOQ Index).
call: bloomberg-econ.get-indicator
with:
indicator: '{{indicator_code}}'
outputParameters:
- name: value
type: string
mapping: $.data.value
- name: date
type: string
mapping: $.data.date
- name: prior
type: string
mapping: $.data.prior
consumes:
- type: http
namespace: bloomberg-econ
baseUri: https://bql.data.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: economics
path: /economics/{{indicator}}
inputParameters:
- name: indicator
in: path
operations:
- name: get-indicator
method: GET
Orchestrates expense report processing by pulling the report from SAP Concur, validating against policy limits in Oracle, logging the approval in ServiceNow, and notifying the submitter via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Approval
description: Orchestrates expense report processing by pulling the report from SAP Concur, validating against policy limits in Oracle, logging the approval in ServiceNow, and notifying the submitter via Microsoft Teams.
tags:
- finance
- expense-management
- sap-concur
- oracle-database
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: process-expense-report
description: Process and approve an expense report with policy validation and audit logging.
inputParameters:
- name: report_id
in: body
type: string
description: SAP Concur expense report ID.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: validate-policy
type: call
call: oracle.validate-expense-policy
with:
department: '{{get-report.department}}'
total_amount: '{{get-report.totalAmount}}'
expense_type: '{{get-report.expenseType}}'
- name: log-approval
type: call
call: servicenow.create-record
with:
table: u_expense_approvals
short_description: 'Expense approval: {{get-report.employeeName}} - {{get-report.totalAmount}} {{get-report.currency}}'
description: 'Report {{report_id}}. Policy check: {{validate-policy.result}}.'
- name: notify-submitter
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-report.employeeEmail}}'
text: 'Your expense report {{report_id}} ({{get-report.totalAmount}} {{get-report.currency}}) has been {{validate-policy.result}}. Reference: {{log-approval.number}}.'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/finance/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: policy-validation
path: /expense-policy/validate
operations:
- name: validate-expense-policy
method: POST
- type: http
namespace: servicenow
baseUri: https://barclays.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: table-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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
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-pagerduty
type: call
call: pagerduty.create-resource
with:
channel: '{{notification_channel}}'
text: Disaster Recovery Readiness Pipeline step 3 complete.
consumes:
- type: http
namespace: servicenow
baseUri: https://barclays.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://barclays.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty-op
method: POST
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://barclays.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 company financial summary data from FactSet for a given ticker, returning revenue, EPS, market cap, and P/E ratio for analyst research.
naftiko: '0.5'
info:
label: FactSet Company Financials Lookup
description: Retrieves company financial summary data from FactSet for a given ticker, returning revenue, EPS, market cap, and P/E ratio for analyst research.
tags:
- research
- market-data
- factset
capability:
exposes:
- type: mcp
namespace: research-data
port: 8080
tools:
- name: get-company-financials
description: Fetch company financial summary from FactSet by ticker.
inputParameters:
- name: ticker
in: body
type: string
description: FactSet ticker identifier.
call: factset.get-fundamentals
with:
ticker: '{{ticker}}'
outputParameters:
- name: revenue
type: string
mapping: $.data.revenue
- name: eps
type: string
mapping: $.data.eps
- name: market_cap
type: string
mapping: $.data.marketCap
- name: pe_ratio
type: string
mapping: $.data.peRatio
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-fundamentals/v2
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: fundamentals
path: /fundamentals?ids={{ticker}}
inputParameters:
- name: ticker
in: query
operations:
- name: get-fundamentals
method: GET
Checks availability of an API endpoint. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays API Endpoint Status
description: Checks availability of an API endpoint. Used by Barclays teams.
tags:
- banking
- datadog
capability:
exposes:
- type: mcp
namespace: datadog
port: 8080
tools:
- name: get-api_endpoint_status
description: Checks availability of an API endpoint. Used by Barclays teams.
inputParameters:
- name: endpoint_url
in: body
type: string
description: The endpoint_url to look up.
call: datadog.get-endpoint_url
with:
endpoint_url: '{{endpoint_url}}'
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: barclays_api_endpoint_status
method: GET
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://barclays-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://barclays.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
Orchestrates an IRS trade by capturing terms from Tradeweb, booking in Bloomberg AIM, calculating initial margin via Azure Machine Learning, and dispatching the confirmation to the counterparty via IBM MQ.
naftiko: '0.5'
info:
label: Interest Rate Swap Lifecycle
description: Orchestrates an IRS trade by capturing terms from Tradeweb, booking in Bloomberg AIM, calculating initial margin via Azure Machine Learning, and dispatching the confirmation to the counterparty via IBM MQ.
tags:
- trading
- derivatives
- tradeweb
- bloomberg-aim
- azure-machine-learning
- ibm-mq
capability:
exposes:
- type: mcp
namespace: derivatives-trading
port: 8080
tools:
- name: process-irs-trade
description: Process an interest rate swap from execution through margin calculation and confirmation.
inputParameters:
- name: trade_id
in: body
type: string
description: Tradeweb IRS trade identifier.
steps:
- name: get-trade
type: call
call: tradeweb.get-trade
with:
trade_id: '{{trade_id}}'
- name: book-swap
type: call
call: bloomberg-aim.create-order
with:
portfolio_id: '{{get-trade.portfolio_id}}'
security: '{{get-trade.swap_identifier}}'
side: '{{get-trade.side}}'
quantity: '{{get-trade.notional}}'
price: '{{get-trade.fixed_rate}}'
- name: calc-margin
type: call
call: azure-ml.score-model
with:
model_name: initial-margin-calculator
input_data: '{"notional":"{{get-trade.notional}}","fixed_rate":"{{get-trade.fixed_rate}}","tenor":"{{get-trade.tenor}}","currency":"{{get-trade.currency}}"}'
- name: send-confirmation
type: call
call: ibmmq.send-message
with:
queue: DERIVATIVES.CONFIRMATIONS.OUT
body: '{"tradeId":"{{trade_id}}","type":"IRS","notional":"{{get-trade.notional}}","fixedRate":"{{get-trade.fixed_rate}}","floatingIndex":"{{get-trade.floating_index}}","initialMargin":"{{calc-margin.margin_amount}}"}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_api_key
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: azure-ml
baseUri: https://barclays-ml.westeurope.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: scoring
path: /score
operations:
- name: score-model
method: POST
- type: http
namespace: ibmmq
baseUri: https://barclays-mq.ibm.com/ibmmq/rest/v2
authentication:
type: basic
username: $secrets.ibmmq_user
password: $secrets.ibmmq_password
resources:
- name: messages
path: /messaging/qmgr/BARCMQ01/queue/{{queue}}/message
inputParameters:
- name: queue
in: path
operations:
- name: send-message
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://barclays.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://barclays.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
When an AML alert fires, pulls transaction details from Oracle Database, enriches with customer profile from Salesforce, runs risk scoring, and creates a JIRA investigation case for the compliance team.
naftiko: '0.5'
info:
label: AML Transaction Alert Triage
description: When an AML alert fires, pulls transaction details from Oracle Database, enriches with customer profile from Salesforce, runs risk scoring, and creates a JIRA investigation case for the compliance team.
tags:
- aml
- compliance
- oracle-database
- salesforce
- jira
capability:
exposes:
- type: mcp
namespace: aml-triage
port: 8080
tools:
- name: triage-aml-alert
description: Triage an AML transaction alert by enriching with customer data and opening an investigation ticket.
inputParameters:
- name: alert_id
in: body
type: string
description: The AML alert identifier from the monitoring system.
- name: transaction_id
in: body
type: string
description: The transaction reference to investigate.
steps:
- name: get-transaction
type: call
call: oracle.get-transaction
with:
transaction_id: '{{transaction_id}}'
- name: get-customer-profile
type: call
call: salesforce.get-account
with:
account_id: '{{get-transaction.customer_account_id}}'
- name: create-investigation
type: call
call: jira.create-issue
with:
project: AML
issue_type: Investigation
summary: AML Alert {{alert_id}} - {{get-customer-profile.Name}}
description: 'Transaction {{transaction_id}} amount {{get-transaction.amount}} {{get-transaction.currency}}. Customer risk: {{get-customer-profile.Risk_Rating__c}}.'
priority: High
consumes:
- type: http
namespace: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/aml/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: transactions
path: /transactions/{{transaction_id}}
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
- type: http
namespace: salesforce
baseUri: https://barclays.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: jira
baseUri: https://barclays.atlassian.net/rest/api/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 details of a support ticket. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Ticket Details Lookup
description: Retrieves the details of a support ticket. Used by Barclays teams.
tags:
- banking
- 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 Barclays 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: barclays_ticket_details_lookup
method: GET
Orchestrates institutional client onboarding by creating the client in Salesforce, provisioning access in SailPoint, setting up document storage in Box, and sending welcome instructions via Microsoft Teams.
naftiko: '0.5'
info:
label: Client Onboarding Orchestrator
description: Orchestrates institutional client onboarding by creating the client in Salesforce, provisioning access in SailPoint, setting up document storage in Box, and sending welcome instructions via Microsoft Teams.
tags:
- client-onboarding
- salesforce
- sailpoint
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: onboard-institutional-client
description: Onboard a new institutional client across CRM, identity, document storage, and communications.
inputParameters:
- name: client_name
in: body
type: string
description: Legal name of the client entity.
- name: client_type
in: body
type: string
description: Client type (hedge_fund, pension, corporate, sovereign).
- name: relationship_manager
in: body
type: string
description: Email of the assigned relationship manager.
steps:
- name: create-account
type: call
call: salesforce.create-account
with:
name: '{{client_name}}'
type: '{{client_type}}'
owner_email: '{{relationship_manager}}'
- name: provision-identity
type: call
call: sailpoint.create-identity
with:
name: '{{client_name}}'
type: service_account
source: institutional_clients
- name: create-folder
type: call
call: box.create-folder
with:
parent_id: '0'
name: Client_{{create-account.id}}_{{client_name}}
- name: notify-rm
type: call
call: msteams.send-message
with:
recipient_upn: '{{relationship_manager}}'
text: 'New client onboarded: {{client_name}} ({{client_type}}). Salesforce ID: {{create-account.id}}. Document folder: {{create-folder.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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: sailpoint
baseUri: https://barclays.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: identities
path: /accounts
operations:
- name: create-identity
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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Monitors transactions for suspicious patterns, scores risk, creates alerts, and notifies compliance.
naftiko: '0.5'
info:
label: Transaction Monitoring Pipeline
description: Monitors transactions for suspicious patterns, scores risk, creates alerts, and notifies compliance.
tags:
- compliance
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: barclays_transaction_monitoring_pipeline
description: Orchestrate transaction 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-servicenow
type: call
call: servicenow.process-resource
with:
data: '{{get-snowflake.result}}'
- name: create-slack
type: call
call: slack.create-resource
with:
channel: '{{notification_channel}}'
text: Transaction Monitoring Pipeline step 3 complete.
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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://barclays.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 KYC records due for review, collects updated information, validates identity, and updates records.
naftiko: '0.5'
info:
label: Client KYC Refresh Pipeline
description: Identifies KYC records due for review, collects updated information, validates identity, and updates records.
tags:
- compliance
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: client_kyc_refresh_pipeline
description: Orchestrate client kyc refresh 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: Client KYC Refresh Pipeline step 3 complete.
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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://barclays.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
Retrieves user account details from the directory. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays User Account Lookup
description: Retrieves user account details from the directory. Used by Barclays teams.
tags:
- banking
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-user_account_lookup
description: Retrieves user account details from the directory. Used by Barclays teams.
inputParameters:
- name: user_id
in: body
type: string
description: The user_id to look up.
call: jira.get-user_id
with:
user_id: '{{user_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://barclays.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: barclays_user_account_lookup
method: GET
Orchestrates a Value-at-Risk calculation by pulling positions from Bloomberg AIM, computing VaR via Azure Databricks, storing results in Snowflake, and sending a breach alert to Microsoft Teams if the limit is exceeded.
naftiko: '0.5'
info:
label: Market Risk VaR Calculation Pipeline
description: Orchestrates a Value-at-Risk calculation by pulling positions from Bloomberg AIM, computing VaR via Azure Databricks, storing results in Snowflake, and sending a breach alert to Microsoft Teams if the limit is exceeded.
tags:
- risk-management
- var
- bloomberg-aim
- azure-databricks
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-risk
port: 8080
tools:
- name: calculate-var
description: Run Value-at-Risk calculation for a trading book and alert on breaches.
inputParameters:
- name: book_id
in: body
type: string
description: Trading book identifier.
- name: confidence_level
in: body
type: string
description: VaR confidence level (e.g. 99, 95).
- name: horizon_days
in: body
type: string
description: Holding period in days.
steps:
- name: get-positions
type: call
call: bloomberg-aim.get-positions
with:
portfolio_id: '{{book_id}}'
- name: compute-var
type: call
call: databricks.run-job
with:
job_id: var-calculator
parameters: '{"positions":{{get-positions.holdings}},"confidence":"{{confidence_level}}","horizon":"{{horizon_days}}"}'
- name: store-result
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO risk.var_results (book_id, var_amount, confidence, horizon, calc_date) VALUES ('{{book_id}}', '{{compute-var.var_amount}}', '{{confidence_level}}', '{{horizon_days}}', CURRENT_DATE())
warehouse: RISK_WH
database: RISK_DB
- name: alert-breach
type: call
call: msteams.send-channel-message
with:
team_id: market-risk
channel_id: var-alerts
text: 'VaR Report - Book {{book_id}}: {{compute-var.var_amount}} ({{confidence_level}}% / {{horizon_days}}d). Limit utilization: {{compute-var.limit_utilization}}%.'
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: databricks
baseUri: https://barclays.cloud.databricks.com/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: snowflake
baseUri: https://barclays.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Queries cost and spending data. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Cost Report Query
description: Queries cost and spending data. Used by Barclays teams.
tags:
- banking
- github
capability:
exposes:
- type: mcp
namespace: github
port: 8080
tools:
- name: get-cost_report_query
description: Queries cost and spending data. Used by Barclays teams.
inputParameters:
- name: cost_center
in: body
type: string
description: The cost_center to look up.
call: github.get-cost_center
with:
cost_center: '{{cost_center}}'
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: barclays_cost_report_query
method: GET
Retrieves the latest build status for a Jenkins job. Returns build number, result, duration, and timestamp.
naftiko: '0.5'
info:
label: Jenkins Build Status Check
description: Retrieves the latest build status for a Jenkins job. Returns build number, result, duration, and timestamp.
tags:
- devops
- ci-cd
- jenkins
capability:
exposes:
- type: mcp
namespace: ci-monitoring
port: 8080
tools:
- name: get-build-status
description: Check the latest Jenkins build status for a job.
inputParameters:
- name: job_name
in: body
type: string
description: Jenkins job name (can include folder path).
call: jenkins.get-last-build
with:
job_name: '{{job_name}}'
outputParameters:
- name: build_number
type: string
mapping: $.number
- name: result
type: string
mapping: $.result
- name: duration
type: string
mapping: $.duration
consumes:
- type: http
namespace: jenkins
baseUri: https://jenkins.barclays.com
authentication:
type: basic
username: $secrets.jenkins_user
password: $secrets.jenkins_api_token
resources:
- name: builds
path: /job/{{job_name}}/lastBuild/api/json
inputParameters:
- name: job_name
in: path
operations:
- name: get-last-build
method: GET
Retrieves real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and daily change. Used by traders and portfolio managers for quick instrument checks.
naftiko: '0.5'
info:
label: Bloomberg Market Data Lookup
description: Retrieves real-time market data for a given security from Bloomberg Enterprise Data, returning price, volume, and daily change. Used by traders and portfolio managers for quick instrument checks.
tags:
- trading
- market-data
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-security-price
description: Fetch real-time price, volume, and change for a Bloomberg security identifier.
inputParameters:
- name: ticker
in: body
type: string
description: Bloomberg ticker symbol (e.g. BARC LN Equity).
call: bloomberg.get-security
with:
ticker: '{{ticker}}'
outputParameters:
- name: last_price
type: string
mapping: $.data.lastPrice
- name: volume
type: string
mapping: $.data.volume
- name: change_pct
type: string
mapping: $.data.changePct
consumes:
- type: http
namespace: bloomberg
baseUri: https://bql.data.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: securities
path: /data/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-security
method: GET
Orchestrates a portfolio reconciliation by extracting positions from Bloomberg AIM, running the reconciliation on Trioptima, logging discrepancies in Snowflake, and creating a Jira task for the operations team.
naftiko: '0.5'
info:
label: Trioptima Portfolio Reconciliation
description: Orchestrates a portfolio reconciliation by extracting positions from Bloomberg AIM, running the reconciliation on Trioptima, logging discrepancies in Snowflake, and creating a Jira task for the operations team.
tags:
- operations
- reconciliation
- bloomberg-aim
- trioptima
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: portfolio-recon
port: 8080
tools:
- name: reconcile-portfolio
description: Run portfolio reconciliation between internal positions and Trioptima, logging breaks.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Bloomberg AIM portfolio identifier.
- name: recon_date
in: body
type: string
description: Reconciliation date (YYYY-MM-DD).
steps:
- name: get-positions
type: call
call: bloomberg-aim.get-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: run-recon
type: call
call: trioptima.submit-reconciliation
with:
portfolio_id: '{{portfolio_id}}'
as_of_date: '{{recon_date}}'
positions: '{{get-positions.holdings}}'
- name: log-breaks
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO ops.recon_breaks SELECT * FROM TABLE(RESULT_SCAN('{{run-recon.query_id}}')) WHERE status = 'BREAK'
warehouse: OPS_WH
database: OPS_DB
- name: create-task
type: call
call: jira.create-issue
with:
project: OPS
issue_type: Task
summary: 'Recon breaks: Portfolio {{portfolio_id}} as of {{recon_date}}'
description: '{{run-recon.break_count}} breaks found. Review in Snowflake OPS_DB.ops.recon_breaks.'
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: trioptima
baseUri: https://api.trioptima.com/v1
authentication:
type: bearer
token: $secrets.trioptima_token
resources:
- name: reconciliations
path: /reconciliations
operations:
- name: submit-reconciliation
method: POST
- type: http
namespace: snowflake
baseUri: https://barclays.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://barclays.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Orchestrates quarterly regulatory report generation by extracting data from Snowflake, generating the report in Power BI, uploading to SharePoint, and creating a Jira sign-off task for the compliance officer.
naftiko: '0.5'
info:
label: Regulatory Report Generation
description: Orchestrates quarterly regulatory report generation by extracting data from Snowflake, generating the report in Power BI, uploading to SharePoint, and creating a Jira sign-off task for the compliance officer.
tags:
- compliance
- regulatory-reporting
- snowflake
- power-bi
- sharepoint
- jira
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-regulatory-report
description: Generate and distribute a quarterly regulatory report with sign-off tracking.
inputParameters:
- name: report_type
in: body
type: string
description: Report type (e.g. COREP, FINREP, LCR, NSFR).
- name: reporting_period
in: body
type: string
description: Reporting period in YYYY-QN format.
steps:
- name: extract-data
type: call
call: snowflake.execute-query
with:
statement: CALL regulatory.generate_report_data('{{report_type}}', '{{reporting_period}}')
warehouse: REGULATORY_WH
database: REGULATORY_DB
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
group_id: regulatory-reports
dataset_id: '{{report_type}}-dataset'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: regulatory_reporting
folder_path: Reports/{{reporting_period}}/{{report_type}}
file_name: '{{report_type}}_{{reporting_period}}.pdf'
- name: create-signoff
type: call
call: jira.create-issue
with:
project: REG
issue_type: Task
summary: 'Sign-off required: {{report_type}} report for {{reporting_period}}'
description: Report available at {{upload-report.url}}. Please review and approve.
priority: High
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /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: 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://barclays.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Triggers a Power BI dataset refresh for a specified workspace and dataset. Used by analysts to ensure dashboards display the latest data.
naftiko: '0.5'
info:
label: Power BI Dashboard Refresh
description: Triggers a Power BI dataset refresh for a specified workspace and dataset. Used by analysts to ensure dashboards display the latest data.
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics-reporting
port: 8080
tools:
- name: refresh-dashboard
description: Trigger a Power BI dataset refresh.
inputParameters:
- name: workspace_id
in: body
type: string
description: Power BI workspace (group) ID.
- name: dataset_id
in: body
type: string
description: Power BI dataset ID.
call: powerbi.refresh-dataset
with:
group_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: 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
After a trade is executed on Tradeweb, fetches the trade details, retrieves counterparty data from Salesforce, publishes a settlement instruction to IBM MQ, and updates the position in Bloomberg AIM.
naftiko: '0.5'
info:
label: Trade Execution Post-Trade Enrichment
description: After a trade is executed on Tradeweb, fetches the trade details, retrieves counterparty data from Salesforce, publishes a settlement instruction to IBM MQ, and updates the position in Bloomberg AIM.
tags:
- trading
- post-trade
- tradeweb
- salesforce
- ibm-mq
- bloomberg-aim
capability:
exposes:
- type: mcp
namespace: trade-enrichment
port: 8080
tools:
- name: enrich-trade
description: Enrich a completed trade with counterparty data, publish settlement instruction, and update portfolio position.
inputParameters:
- name: trade_id
in: body
type: string
description: The Tradeweb trade identifier.
steps:
- name: get-trade
type: call
call: tradeweb.get-trade
with:
trade_id: '{{trade_id}}'
- name: get-counterparty
type: call
call: salesforce.get-account
with:
account_id: '{{get-trade.counterparty_id}}'
- name: publish-settlement
type: call
call: ibmmq.send-message
with:
queue: SETTLEMENT.INSTRUCTIONS
body: '{"tradeId":"{{trade_id}}","counterparty":"{{get-counterparty.Name}}","amount":"{{get-trade.notional}}","currency":"{{get-trade.currency}}","settleDate":"{{get-trade.settlement_date}}"}'
- name: update-aim
type: call
call: bloomberg-aim.update-position
with:
portfolio_id: '{{get-trade.portfolio_id}}'
security: '{{get-trade.security}}'
quantity: '{{get-trade.quantity}}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_api_key
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: salesforce
baseUri: https://barclays.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: ibmmq
baseUri: https://barclays-mq.ibm.com/ibmmq/rest/v2
authentication:
type: basic
username: $secrets.ibmmq_user
password: $secrets.ibmmq_password
resources:
- name: messages
path: /messaging/qmgr/BARCMQ01/queue/{{queue}}/message
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: update-position
method: PUT
Orchestrates a wealth management suitability assessment by pulling client profile from Salesforce, risk questionnaire results from Oracle, running the suitability model on Azure Machine Learning, and storing the assessment in SharePoint.
naftiko: '0.5'
info:
label: Client Suitability Assessment
description: Orchestrates a wealth management suitability assessment by pulling client profile from Salesforce, risk questionnaire results from Oracle, running the suitability model on Azure Machine Learning, and storing the assessment in SharePoint.
tags:
- wealth-management
- suitability
- salesforce
- oracle-database
- azure-machine-learning
- sharepoint
capability:
exposes:
- type: mcp
namespace: wealth-suitability
port: 8080
tools:
- name: assess-suitability
description: Run a suitability assessment for a wealth management client.
inputParameters:
- name: client_id
in: body
type: string
description: Salesforce client account ID.
- name: product_type
in: body
type: string
description: Investment product type being assessed.
steps:
- name: get-client
type: call
call: salesforce.get-account
with:
account_id: '{{client_id}}'
- name: get-risk-questionnaire
type: call
call: oracle.get-risk-questionnaire
with:
client_id: '{{client_id}}'
- name: run-suitability-model
type: call
call: azure-ml.score-model
with:
model_name: suitability-assessor
input_data: '{"client_type":"{{get-client.Type}}","risk_tolerance":"{{get-risk-questionnaire.risk_tolerance}}","investment_horizon":"{{get-risk-questionnaire.investment_horizon}}","product_type":"{{product_type}}"}'
- name: store-assessment
type: call
call: sharepoint.upload-file
with:
site_id: wealth_management
folder_path: Suitability/{{client_id}}
file_name: suitability_{{product_type}}.json
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/wealth/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: risk-questionnaires
path: /risk-questionnaires/{{client_id}}
inputParameters:
- name: client_id
in: path
operations:
- name: get-risk-questionnaire
method: GET
- type: http
namespace: azure-ml
baseUri: https://barclays-ml.westeurope.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: scoring
path: /score
operations:
- name: score-model
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
Checks the status of a Mastercard payment transaction by reference ID. Returns authorization status, amount, and settlement state.
naftiko: '0.5'
info:
label: Mastercard Payment Gateway Status
description: Checks the status of a Mastercard payment transaction by reference ID. Returns authorization status, amount, and settlement state.
tags:
- payments
- card-processing
- mastercard
capability:
exposes:
- type: mcp
namespace: card-payments
port: 8080
tools:
- name: get-payment-status
description: Check a Mastercard payment transaction status.
inputParameters:
- name: transaction_ref
in: body
type: string
description: Mastercard transaction reference.
call: mastercard.get-transaction
with:
transaction_ref: '{{transaction_ref}}'
outputParameters:
- name: auth_status
type: string
mapping: $.transaction.authorizationStatus
- name: amount
type: string
mapping: $.transaction.amount
- name: settlement_status
type: string
mapping: $.transaction.settlementStatus
consumes:
- type: http
namespace: mastercard
baseUri: https://sandbox.api.mastercard.com/mcob/v1
authentication:
type: oauth2
token: $secrets.mastercard_oauth_token
resources:
- name: transactions
path: /transactions/{{transaction_ref}}
inputParameters:
- name: transaction_ref
in: path
operations:
- name: get-transaction
method: GET
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://barclays.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 a fixed income order by placing the order on Tradeweb, confirming execution, booking in Bloomberg AIM, and publishing the fill event to Apache Kafka for trade reporting.
naftiko: '0.5'
info:
label: Fixed Income Order Execution
description: Orchestrates a fixed income order by placing the order on Tradeweb, confirming execution, booking in Bloomberg AIM, and publishing the fill event to Apache Kafka for trade reporting.
tags:
- trading
- fixed-income
- tradeweb
- bloomberg-aim
- apache-kafka
capability:
exposes:
- type: mcp
namespace: fi-trading
port: 8080
tools:
- name: execute-fi-order
description: Execute a fixed income order through placement, booking, and event publication.
inputParameters:
- name: security_id
in: body
type: string
description: Bond ISIN or identifier.
- name: side
in: body
type: string
description: Order side (buy, sell).
- name: quantity
in: body
type: string
description: Face value / quantity.
- name: portfolio_id
in: body
type: string
description: Target portfolio ID.
steps:
- name: place-order
type: call
call: tradeweb.create-order
with:
security_id: '{{security_id}}'
side: '{{side}}'
quantity: '{{quantity}}'
order_type: limit
- name: book-trade
type: call
call: bloomberg-aim.create-order
with:
portfolio_id: '{{portfolio_id}}'
security: '{{security_id}}'
side: '{{side}}'
quantity: '{{quantity}}'
price: '{{place-order.execution_price}}'
- name: publish-fill
type: call
call: kafka.produce
with:
topic: fi.trades.fills
key: '{{place-order.trade_id}}'
value: '{"tradeId":"{{place-order.trade_id}}","security":"{{security_id}}","side":"{{side}}","quantity":"{{quantity}}","price":"{{place-order.execution_price}}"}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_api_key
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: kafka
baseUri: https://barclays-kafka.confluent.cloud/kafka/v3/clusters/barclays-prod
authentication:
type: basic
username: $secrets.kafka_api_key
password: $secrets.kafka_api_secret
resources:
- name: records
path: /topics/{{topic}}/records
inputParameters:
- name: topic
in: path
operations:
- name: produce
method: POST
Retrieves a ServiceNow incident by number and returns its state, priority, assignment group, and short description. Used by support teams for quick incident lookups.
naftiko: '0.5'
info:
label: ServiceNow Incident Status
description: Retrieves a ServiceNow incident by number and returns its state, priority, assignment group, and short description. Used by support teams for quick incident lookups.
tags:
- operations
- itsm
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm-support
port: 8080
tools:
- name: get-incident-status
description: Look up a ServiceNow incident by number.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number (e.g. INC0012345).
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
outputParameters:
- name: state
type: string
mapping: $.result.state
- name: priority
type: string
mapping: $.result.priority
- name: assigned_to
type: string
mapping: $.result.assigned_to.display_value
consumes:
- type: http
namespace: servicenow
baseUri: https://barclays.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
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://barclays.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://barclays.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://barclays.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://barclays.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
Orchestrates an international payment by validating the beneficiary in Oracle Database, formatting a SWIFT MT103 message, dispatching via IBM MQ, and logging the payment event to Splunk for monitoring.
naftiko: '0.5'
info:
label: Payment Processing SWIFT Dispatch
description: Orchestrates an international payment by validating the beneficiary in Oracle Database, formatting a SWIFT MT103 message, dispatching via IBM MQ, and logging the payment event to Splunk for monitoring.
tags:
- payments
- swift
- oracle-database
- ibm-mq
- splunk
capability:
exposes:
- type: mcp
namespace: payments-processing
port: 8080
tools:
- name: dispatch-swift-payment
description: Validate, format, and dispatch a SWIFT MT103 international payment with audit logging.
inputParameters:
- name: payment_ref
in: body
type: string
description: Internal payment reference.
- name: beneficiary_account
in: body
type: string
description: Beneficiary account number.
- name: amount
in: body
type: string
description: Payment amount.
- name: currency
in: body
type: string
description: ISO currency code.
- name: beneficiary_bic
in: body
type: string
description: Beneficiary bank SWIFT BIC.
steps:
- name: validate-beneficiary
type: call
call: oracle.get-beneficiary
with:
account_number: '{{beneficiary_account}}'
- name: send-swift
type: call
call: ibmmq.send-message
with:
queue: SWIFT.MT103.OUT
body: '{"ref":"{{payment_ref}}","beneficiary":"{{validate-beneficiary.account_holder}}","bic":"{{beneficiary_bic}}","amount":"{{amount}}","currency":"{{currency}}"}'
- name: log-event
type: call
call: splunk.send-event
with:
index: payments
source: swift-gateway
event: '{"payment_ref":"{{payment_ref}}","status":"dispatched","amount":"{{amount}}","currency":"{{currency}}"}'
consumes:
- type: http
namespace: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/payments/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: beneficiaries
path: /beneficiaries/{{account_number}}
inputParameters:
- name: account_number
in: path
operations:
- name: get-beneficiary
method: GET
- type: http
namespace: ibmmq
baseUri: https://barclays-mq.ibm.com/ibmmq/rest/v2
authentication:
type: basic
username: $secrets.ibmmq_user
password: $secrets.ibmmq_password
resources:
- name: messages
path: /messaging/qmgr/BARCMQ01/queue/{{queue}}/message
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: splunk
baseUri: https://barclays-splunk.splunkcloud.com:8088
authentication:
type: bearer
token: $secrets.splunk_hec_token
resources:
- name: events
path: /services/collector/event
operations:
- name: send-event
method: POST
Retrieves compliance check status. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Compliance Check Status
description: Retrieves compliance check status. Used by Barclays teams.
tags:
- banking
- okta
capability:
exposes:
- type: mcp
namespace: okta
port: 8080
tools:
- name: get-compliance_check_status
description: Retrieves compliance check status. Used by Barclays teams.
inputParameters:
- name: check_id
in: body
type: string
description: The check_id to look up.
call: okta.get-check_id
with:
check_id: '{{check_id}}'
consumes:
- type: http
namespace: okta
baseUri: https://barclays.okta.com/api/v1
authentication:
type: apiKey
key: $secrets.okta_api_token
header: Authorization
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_compliance_check_stat
method: GET
Retrieves the latest Bloomberg news articles for a given topic or security. Returns headlines, timestamps, and article summaries for research analysts.
naftiko: '0.5'
info:
label: Bloomberg News Feed
description: Retrieves the latest Bloomberg news articles for a given topic or security. Returns headlines, timestamps, and article summaries for research analysts.
tags:
- research
- news
- bloomberg-news
capability:
exposes:
- type: mcp
namespace: research-news
port: 8080
tools:
- name: get-bloomberg-news
description: Fetch latest Bloomberg news by topic or security.
inputParameters:
- name: topic
in: body
type: string
description: News topic or Bloomberg ticker.
call: bloomberg-news.search-articles
with:
query: '{{topic}}'
outputParameters:
- name: articles
type: array
mapping: $.articles
consumes:
- type: http
namespace: bloomberg-news
baseUri: https://bql.data.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: news
path: /news/search?query={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-articles
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://barclays.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://barclays.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://barclays-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana-op
method: POST
Orchestrates a service health check by querying Datadog for active alerts, pulling recent error logs from Splunk, and posting a consolidated health summary to Microsoft Teams for the on-call team.
naftiko: '0.5'
info:
label: Datadog Service Health Dashboard
description: Orchestrates a service health check by querying Datadog for active alerts, pulling recent error logs from Splunk, and posting a consolidated health summary to Microsoft Teams for the on-call team.
tags:
- operations
- monitoring
- datadog
- splunk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: service-health
port: 8080
tools:
- name: check-service-health
description: Run a consolidated service health check across monitoring and logging systems.
inputParameters:
- name: service_name
in: body
type: string
description: Service name to check.
steps:
- name: check-alerts
type: call
call: datadog.search-monitors
with:
query: tag:service:{{service_name}} status:alert
- name: search-errors
type: call
call: splunk.create-search
with:
search: index=applications service={{service_name}} level=ERROR earliest=-1h
earliest_time: -1h
latest_time: now
- name: post-summary
type: call
call: msteams.send-channel-message
with:
team_id: platform-engineering
channel_id: service-health
text: 'Service Health: {{service_name}}. Active alerts: {{check-alerts.total_count}}. Errors (1h): {{search-errors.result_count}}.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v1
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor/search
operations:
- name: search-monitors
method: GET
- type: http
namespace: splunk
baseUri: https://barclays-splunk.splunkcloud.com:8089
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /services/search/jobs
operations:
- name: create-search
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Orchestrates capital adequacy reporting by aggregating risk-weighted assets from Snowflake, computing capital ratios via Azure Databricks, generating the report in Power BI, uploading to SharePoint, and notifying the CFO office via Microsoft Outlook.
naftiko: '0.5'
info:
label: Capital Adequacy Report Pipeline
description: Orchestrates capital adequacy reporting by aggregating risk-weighted assets from Snowflake, computing capital ratios via Azure Databricks, generating the report in Power BI, uploading to SharePoint, and notifying the CFO office via Microsoft Outlook.
tags:
- risk-management
- capital-adequacy
- snowflake
- azure-databricks
- power-bi
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: capital-reporting
port: 8080
tools:
- name: generate-capital-report
description: Generate and distribute a capital adequacy report with ratio calculations.
inputParameters:
- name: reporting_date
in: body
type: string
description: Reporting date (YYYY-MM-DD).
steps:
- name: get-rwa
type: call
call: snowflake.execute-query
with:
statement: SELECT risk_category, SUM(rwa) as total_rwa FROM risk.risk_weighted_assets WHERE as_of_date = '{{reporting_date}}' GROUP BY risk_category
warehouse: RISK_WH
database: RISK_DB
- name: compute-ratios
type: call
call: databricks.run-job
with:
job_id: capital-ratio-calculator
parameters: '{"reporting_date":"{{reporting_date}}"}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
group_id: capital-reporting
dataset_id: capital-adequacy
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: finance_reporting
folder_path: Capital_Adequacy/{{reporting_date}}
file_name: capital_adequacy_{{reporting_date}}.pdf
- name: notify-cfo
type: call
call: outlook.send-mail
with:
to: cfo-office@barclays.com
subject: Capital Adequacy Report - {{reporting_date}}
body: 'CET1 Ratio: {{compute-ratios.cet1_ratio}}%. Tier 1: {{compute-ratios.tier1_ratio}}%. Total Capital: {{compute-ratios.total_capital_ratio}}%. Report: {{upload-report.url}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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: databricks
baseUri: https://barclays.cloud.databricks.com/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: 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: 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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/finance-reporting@barclays.com/sendMail
operations:
- name: send-mail
method: POST
Orchestrates a BACS batch payment submission by generating the payment file from Oracle, validating entries against Avaloq, submitting via Amazon SQS to the BACS gateway, and notifying treasury operations in Microsoft Teams.
naftiko: '0.5'
info:
label: BACS Payment Batch Submission
description: Orchestrates a BACS batch payment submission by generating the payment file from Oracle, validating entries against Avaloq, submitting via Amazon SQS to the BACS gateway, and notifying treasury operations in Microsoft Teams.
tags:
- payments
- bacs
- oracle-database
- avaloq
- amazon-sqs
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bacs-payments
port: 8080
tools:
- name: submit-bacs-batch
description: Generate, validate, and submit a BACS payment batch with operations notification.
inputParameters:
- name: batch_id
in: body
type: string
description: Payment batch identifier.
- name: processing_date
in: body
type: string
description: BACS processing date (YYYY-MM-DD).
steps:
- name: generate-file
type: call
call: oracle.generate-bacs-file
with:
batch_id: '{{batch_id}}'
processing_date: '{{processing_date}}'
- name: validate-accounts
type: call
call: avaloq.validate-batch
with:
batch_id: '{{batch_id}}'
payment_count: '{{generate-file.payment_count}}'
- name: submit-batch
type: call
call: sqs.send-message
with:
queue_url: https://sqs.eu-west-2.amazonaws.com/barclays/bacs-submissions
message_body: '{"batchId":"{{batch_id}}","processingDate":"{{processing_date}}","paymentCount":"{{generate-file.payment_count}}","totalAmount":"{{generate-file.total_amount}}"}'
- name: notify-ops
type: call
call: msteams.send-channel-message
with:
team_id: treasury-operations
channel_id: bacs-processing
text: 'BACS batch {{batch_id}} submitted for {{processing_date}}. Payments: {{generate-file.payment_count}}. Total: GBP {{generate-file.total_amount}}. Validation: {{validate-accounts.status}}.'
consumes:
- type: http
namespace: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/payments/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: bacs-files
path: /bacs/generate
operations:
- name: generate-bacs-file
method: POST
- type: http
namespace: avaloq
baseUri: https://barclays-avaloq.internal.barclays.com/api/v1
authentication:
type: bearer
token: $secrets.avaloq_token
resources:
- name: batch-validation
path: /payments/validate-batch
operations:
- name: validate-batch
method: POST
- type: http
namespace: sqs
baseUri: https://sqs.eu-west-2.amazonaws.com
authentication:
type: aws-sigv4
region: eu-west-2
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: messages
path: /barclays/bacs-submissions
operations:
- name: send-message
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates trade surveillance by pulling suspicious trade patterns from Snowflake, enriching with trader details from Workday, screening the counterparty in Refinitiv, and filing a compliance report in ServiceNow.
naftiko: '0.5'
info:
label: Trade Surveillance Alert Processing
description: Orchestrates trade surveillance by pulling suspicious trade patterns from Snowflake, enriching with trader details from Workday, screening the counterparty in Refinitiv, and filing a compliance report in ServiceNow.
tags:
- compliance
- trade-surveillance
- snowflake
- workday
- refinitiv
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-surveillance
port: 8080
tools:
- name: process-surveillance-alert
description: Process a trade surveillance alert with enrichment and compliance filing.
inputParameters:
- name: alert_id
in: body
type: string
description: Surveillance alert identifier.
- name: trader_id
in: body
type: string
description: Workday worker ID of the trader.
steps:
- name: get-alert-details
type: call
call: snowflake.execute-query
with:
statement: SELECT * FROM compliance.surveillance_alerts WHERE alert_id = '{{alert_id}}'
warehouse: COMPLIANCE_WH
database: COMPLIANCE_DB
- name: get-trader
type: call
call: workday.get-worker
with:
worker_id: '{{trader_id}}'
- name: screen-counterparty
type: call
call: refinitiv.screen-entity
with:
entity_name: '{{get-alert-details.counterparty_name}}'
entity_type: organisation
- name: file-report
type: call
call: servicenow.create-record
with:
table: u_surveillance_reports
short_description: 'Surveillance Alert {{alert_id}} - Trader: {{get-trader.full_name}}'
description: 'Pattern: {{get-alert-details.pattern_type}}. Counterparty screening: {{screen-counterparty.overallResult}}. Trade volume: {{get-alert-details.trade_volume}}.'
priority: '2'
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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/barclays
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: refinitiv
baseUri: https://rms-world-check-one-api-pilot.thomsonreuters.com/v2
authentication:
type: bearer
token: $secrets.refinitiv_api_key
resources:
- name: screening
path: /cases/screeningRequest
operations:
- name: screen-entity
method: POST
- type: http
namespace: servicenow
baseUri: https://barclays.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: table-records
path: /table/{{table}}
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Queries metric values from a monitoring dashboard. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Metric Dashboard Query
description: Queries metric values from a monitoring dashboard. Used by Barclays teams.
tags:
- banking
- splunk
capability:
exposes:
- type: mcp
namespace: splunk
port: 8080
tools:
- name: get-metric_dashboard_query
description: Queries metric values from a monitoring dashboard. Used by Barclays teams.
inputParameters:
- name: metric_name
in: body
type: string
description: The metric_name to look up.
call: splunk.get-metric_name
with:
metric_name: '{{metric_name}}'
consumes:
- type: http
namespace: splunk
baseUri: https://barclays-splunk.com/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_metric_dashboard_quer
method: GET
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://barclays.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://barclays.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 credit risk scoring by pulling applicant data from Salesforce, running the credit model on Azure Databricks, storing results in Snowflake, and notifying the credit committee via Microsoft Outlook.
naftiko: '0.5'
info:
label: Credit Risk Model Scoring
description: Orchestrates credit risk scoring by pulling applicant data from Salesforce, running the credit model on Azure Databricks, storing results in Snowflake, and notifying the credit committee via Microsoft Outlook.
tags:
- risk-management
- credit-risk
- salesforce
- azure-databricks
- snowflake
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: credit-risk
port: 8080
tools:
- name: score-credit-risk
description: Run credit risk model scoring for a loan applicant.
inputParameters:
- name: applicant_id
in: body
type: string
description: Salesforce contact ID for the applicant.
- name: loan_amount
in: body
type: string
description: Requested loan amount.
steps:
- name: get-applicant
type: call
call: salesforce.get-contact
with:
contact_id: '{{applicant_id}}'
- name: run-model
type: call
call: databricks.run-job
with:
job_id: credit-risk-scorer
parameters: '{"name":"{{get-applicant.Name}}","income":"{{get-applicant.Annual_Income__c}}","loan_amount":"{{loan_amount}}"}'
- name: store-result
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO credit.risk_scores (applicant_id, score, pd, lgd, timestamp) VALUES ('{{applicant_id}}', '{{run-model.score}}', '{{run-model.pd}}', '{{run-model.lgd}}', CURRENT_TIMESTAMP())
warehouse: RISK_WH
database: RISK_DB
- name: send-notification
type: call
call: outlook.send-mail
with:
to: credit-committee@barclays.com
subject: 'Credit Risk Score: {{get-applicant.Name}} - {{run-model.score}}'
body: 'Applicant: {{get-applicant.Name}}. Loan: {{loan_amount}}. PD: {{run-model.pd}}. LGD: {{run-model.lgd}}. Score: {{run-model.score}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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
- type: http
namespace: databricks
baseUri: https://barclays.cloud.databricks.com/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: snowflake
baseUri: https://barclays.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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/credit-service@barclays.com/sendMail
operations:
- name: send-mail
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-workday
type: call
call: workday.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-confluence
type: call
call: confluence.process-resource
with:
data: '{{get-workday.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: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/barclays
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: confluence
baseUri: https://barclays.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
Orchestrates sanctions list updates by fetching the latest list from Refinitiv, updating the screening database in Snowflake, triggering a re-screening batch on Azure Databricks, and notifying compliance via Microsoft Outlook.
naftiko: '0.5'
info:
label: Sanctions List Update Propagation
description: Orchestrates sanctions list updates by fetching the latest list from Refinitiv, updating the screening database in Snowflake, triggering a re-screening batch on Azure Databricks, and notifying compliance via Microsoft Outlook.
tags:
- compliance
- sanctions
- refinitiv
- snowflake
- azure-databricks
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: sanctions-management
port: 8080
tools:
- name: propagate-sanctions-update
description: Propagate a sanctions list update across screening infrastructure and notify compliance.
inputParameters:
- name: list_type
in: body
type: string
description: Sanctions list type (OFAC, EU, UN, HMT).
steps:
- name: fetch-list
type: call
call: refinitiv.get-sanctions-list
with:
list_type: '{{list_type}}'
- name: update-database
type: call
call: snowflake.execute-query
with:
statement: CALL compliance.update_sanctions_list('{{list_type}}', '{{fetch-list.version}}')
warehouse: COMPLIANCE_WH
database: COMPLIANCE_DB
- name: trigger-rescreening
type: call
call: databricks.run-job
with:
job_id: sanctions-rescreening
parameters: '{"list_type":"{{list_type}}","version":"{{fetch-list.version}}"}'
- name: notify-compliance
type: call
call: outlook.send-mail
with:
to: sanctions-team@barclays.com
subject: 'Sanctions List Updated: {{list_type}} v{{fetch-list.version}}'
body: '{{list_type}} sanctions list updated to version {{fetch-list.version}}. Rescreening batch initiated. {{trigger-rescreening.affected_entities}} entities queued for review.'
consumes:
- type: http
namespace: refinitiv
baseUri: https://rms-world-check-one-api-pilot.thomsonreuters.com/v2
authentication:
type: bearer
token: $secrets.refinitiv_api_key
resources:
- name: sanctions-lists
path: /lists/{{list_type}}
inputParameters:
- name: list_type
in: path
operations:
- name: get-sanctions-list
method: GET
- type: http
namespace: snowflake
baseUri: https://barclays.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: databricks
baseUri: https://barclays.cloud.databricks.com/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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/compliance-notices@barclays.com/sendMail
operations:
- name: send-mail
method: POST
Retrieves a signed URL for a report file stored in Amazon S3. Used by compliance and audit teams to access archived regulatory reports.
naftiko: '0.5'
info:
label: Amazon S3 Report Archive Retrieval
description: Retrieves a signed URL for a report file stored in Amazon S3. Used by compliance and audit teams to access archived regulatory reports.
tags:
- storage
- archive
- amazon-s3
capability:
exposes:
- type: mcp
namespace: report-archive
port: 8080
tools:
- name: get-archived-report
description: Generate a pre-signed URL for an S3 archived report.
inputParameters:
- name: bucket
in: body
type: string
description: S3 bucket name.
- name: object_key
in: body
type: string
description: S3 object key (file path).
call: s3.get-presigned-url
with:
bucket: '{{bucket}}'
key: '{{object_key}}'
consumes:
- type: http
namespace: s3
baseUri: https://s3.eu-west-2.amazonaws.com
authentication:
type: aws-sigv4
region: eu-west-2
access_key: $secrets.aws_access_key
secret_key: $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
Orchestrates a production deployment by triggering the GitHub Actions workflow, running smoke tests via Postman, checking Datadog health monitors, and posting the deployment result to Microsoft Teams.
naftiko: '0.5'
info:
label: Deployment Pipeline Orchestrator
description: Orchestrates a production deployment by triggering the GitHub Actions workflow, running smoke tests via Postman, checking Datadog health monitors, and posting the deployment result to Microsoft Teams.
tags:
- devops
- ci-cd
- github-actions
- postman
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: deployment-pipeline
port: 8080
tools:
- name: deploy-to-production
description: Trigger a full production deployment with smoke tests, health checks, and team notification.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository (owner/repo).
- name: workflow_id
in: body
type: string
description: GitHub Actions workflow file name.
- name: ref
in: body
type: string
description: Git ref to deploy (branch or tag).
steps:
- name: trigger-deploy
type: call
call: github.trigger-workflow
with:
repo: '{{repo}}'
workflow_id: '{{workflow_id}}'
ref: '{{ref}}'
- name: run-smoke-tests
type: call
call: postman.run-collection
with:
collection_id: smoke-tests-production
environment: production
- name: check-health
type: call
call: datadog.search-monitors
with:
query: tag:service:{{repo}} status:alert
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: platform-engineering
channel_id: deployments
text: 'Deployment of {{repo}}@{{ref}} complete. Smoke tests: {{run-smoke-tests.status}}. Active alerts: {{check-health.total_count}}.'
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: trigger-workflow
method: POST
- type: http
namespace: postman
baseUri: https://api.getpostman.com
authentication:
type: apiKey
name: X-Api-Key
in: header
value: $secrets.postman_api_key
resources:
- name: collection-runs
path: /collections/{{collection_id}}/runs
inputParameters:
- name: collection_id
in: path
operations:
- name: run-collection
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v1
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor/search
operations:
- name: search-monitors
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-channel-message
method: POST
Executes a read-only analytics query. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Database Query Runner
description: Executes a read-only analytics query. Used by Barclays teams.
tags:
- banking
- elasticsearch
capability:
exposes:
- type: mcp
namespace: elasticsearc
port: 8080
tools:
- name: get-database_query_runner
description: Executes a read-only analytics query. Used by Barclays teams.
inputParameters:
- name: sql_query
in: body
type: string
description: The sql_query to look up.
call: elasticsearch.get-sql_query
with:
sql_query: '{{sql_query}}'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://barclays-es.com:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_database_query_runner
method: GET
Orchestrates customer identity verification during onboarding by pulling customer data from Salesforce, running sanctions screening via Refinitiv World-Check, and logging the verification result in ServiceNow for audit trail.
naftiko: '0.5'
info:
label: KYC Customer Identity Verification
description: Orchestrates customer identity verification during onboarding by pulling customer data from Salesforce, running sanctions screening via Refinitiv World-Check, and logging the verification result in ServiceNow for audit trail.
tags:
- kyc
- compliance
- salesforce
- refinitiv
- servicenow
capability:
exposes:
- type: mcp
namespace: kyc-verification
port: 8080
tools:
- name: verify-customer-identity
description: Run full KYC identity verification for a customer, including sanctions screening and audit logging.
inputParameters:
- name: customer_id
in: body
type: string
description: The Salesforce customer account ID.
steps:
- name: fetch-customer
type: call
call: salesforce.get-account
with:
account_id: '{{customer_id}}'
- name: screen-sanctions
type: call
call: refinitiv.screen-entity
with:
entity_name: '{{fetch-customer.Name}}'
entity_type: individual
date_of_birth: '{{fetch-customer.PersonBirthdate}}'
- name: log-result
type: call
call: servicenow.create-record
with:
table: u_kyc_verification
short_description: KYC screening for {{fetch-customer.Name}}
result: '{{screen-sanctions.overallResult}}'
risk_score: '{{screen-sanctions.riskScore}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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: refinitiv
baseUri: https://rms-world-check-one-api-pilot.thomsonreuters.com/v2
authentication:
type: bearer
token: $secrets.refinitiv_api_key
resources:
- name: screening
path: /cases/screeningRequest
operations:
- name: screen-entity
method: POST
- type: http
namespace: servicenow
baseUri: https://barclays.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: table-records
path: /table/{{table}}
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Orchestrates publishing enriched trade events to Apache Kafka by pulling trade details from Tradeweb, enriching with Bloomberg market data, and producing the composite event to the trade events topic.
naftiko: '0.5'
info:
label: Kafka Trade Event Stream Publishing
description: Orchestrates publishing enriched trade events to Apache Kafka by pulling trade details from Tradeweb, enriching with Bloomberg market data, and producing the composite event to the trade events topic.
tags:
- trading
- event-streaming
- tradeweb
- bloomberg-enterprise-data
- apache-kafka
capability:
exposes:
- type: mcp
namespace: trade-events
port: 8080
tools:
- name: publish-enriched-trade-event
description: Enrich a trade with market data and publish to the Kafka trade events stream.
inputParameters:
- name: trade_id
in: body
type: string
description: Tradeweb trade identifier.
steps:
- name: get-trade
type: call
call: tradeweb.get-trade
with:
trade_id: '{{trade_id}}'
- name: get-market-data
type: call
call: bloomberg.get-security
with:
ticker: '{{get-trade.security}}'
- name: publish-event
type: call
call: kafka.produce
with:
topic: trades.enriched
key: '{{trade_id}}'
value: '{"tradeId":"{{trade_id}}","security":"{{get-trade.security}}","notional":"{{get-trade.notional}}","lastPrice":"{{get-market-data.lastPrice}}","volume":"{{get-market-data.volume}}"}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_api_key
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg
baseUri: https://bql.data.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: securities
path: /data/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-security
method: GET
- type: http
namespace: kafka
baseUri: https://barclays-kafka.confluent.cloud/kafka/v3/clusters/barclays-prod
authentication:
type: basic
username: $secrets.kafka_api_key
password: $secrets.kafka_api_secret
resources:
- name: records
path: /topics/{{topic}}/records
inputParameters:
- name: topic
in: path
operations:
- name: produce
method: POST
Executes a parameterized query against the Snowflake risk data warehouse to retrieve portfolio exposure by asset class. Used by risk managers for daily limit checks.
naftiko: '0.5'
info:
label: Snowflake Risk Exposure Query
description: Executes a parameterized query against the Snowflake risk data warehouse to retrieve portfolio exposure by asset class. Used by risk managers for daily limit checks.
tags:
- risk-management
- data-warehouse
- snowflake
capability:
exposes:
- type: mcp
namespace: risk-analytics
port: 8080
tools:
- name: query-risk-exposure
description: Run a portfolio exposure query on Snowflake by portfolio ID and asset class.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Portfolio identifier.
- name: asset_class
in: body
type: string
description: Asset class filter (e.g. equities, fixed_income, fx).
call: snowflake.execute-query
with:
statement: SELECT asset_class, SUM(notional) as total_exposure, SUM(pnl) as total_pnl FROM risk.positions WHERE portfolio_id = '{{portfolio_id}}' AND asset_class = '{{asset_class}}' GROUP BY asset_class
warehouse: RISK_WH
database: RISK_DB
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves vulnerability scan results. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Security Scan Results
description: Retrieves vulnerability scan results. Used by Barclays teams.
tags:
- banking
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty
port: 8080
tools:
- name: get-security_scan_results
description: Retrieves vulnerability scan results. Used by Barclays teams.
inputParameters:
- name: scan_id
in: body
type: string
description: The scan_id to look up.
call: pagerduty.get-scan_id
with:
scan_id: '{{scan_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: barclays_security_scan_results
method: GET
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-workday
type: call
call: workday.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
data: '{{get-workday.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: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/barclays
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: https://barclays.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
Orchestrates portfolio rebalancing by pulling current positions from Bloomberg AIM, computing target allocations via Azure Machine Learning, generating trade orders, and notifying the advisor in Microsoft Teams.
naftiko: '0.5'
info:
label: Wealth Management Portfolio Rebalancing
description: Orchestrates portfolio rebalancing by pulling current positions from Bloomberg AIM, computing target allocations via Azure Machine Learning, generating trade orders, and notifying the advisor in Microsoft Teams.
tags:
- wealth-management
- portfolio
- bloomberg-aim
- azure-machine-learning
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth-rebalance
port: 8080
tools:
- name: rebalance-portfolio
description: Trigger a portfolio rebalancing workflow for a wealth management client.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Bloomberg AIM portfolio identifier.
- name: risk_profile
in: body
type: string
description: Client risk profile (conservative, moderate, aggressive).
steps:
- name: get-positions
type: call
call: bloomberg-aim.get-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: compute-targets
type: call
call: azure-ml.score-model
with:
model_name: portfolio-optimizer
input_data: '{"positions":{{get-positions.holdings}},"risk_profile":"{{risk_profile}}"}'
- name: notify-advisor
type: call
call: msteams.send-channel-message
with:
team_id: wealth-advisory
channel_id: rebalancing
text: 'Portfolio {{portfolio_id}} rebalancing complete. Target allocation: {{compute-targets.targetAllocation}}. Trades required: {{compute-targets.tradeCount}}.'
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: azure-ml
baseUri: https://barclays-ml.westeurope.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: scoring
path: /score
operations:
- name: score-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
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://barclays.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
Orchestrates a threat investigation in Microsoft Sentinel by querying for incidents, enriching with SailPoint identity data, creating a ServiceNow security incident, and alerting the SOC team via Microsoft Teams.
naftiko: '0.5'
info:
label: Microsoft Sentinel Threat Investigation
description: Orchestrates a threat investigation in Microsoft Sentinel by querying for incidents, enriching with SailPoint identity data, creating a ServiceNow security incident, and alerting the SOC team via Microsoft Teams.
tags:
- security
- threat-detection
- microsoft-sentinel
- sailpoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: threat-investigation
port: 8080
tools:
- name: investigate-threat
description: Investigate a Microsoft Sentinel security incident with identity enrichment and escalation.
inputParameters:
- name: incident_id
in: body
type: string
description: Microsoft Sentinel incident ID.
steps:
- name: get-incident
type: call
call: sentinel.get-incident
with:
incident_id: '{{incident_id}}'
- name: get-identity
type: call
call: sailpoint.get-identity
with:
identity_name: '{{get-incident.owner.assignedTo}}'
- name: create-security-incident
type: call
call: servicenow.create-record
with:
table: sn_si_incident
short_description: 'Sentinel Alert: {{get-incident.properties.title}}'
severity: '{{get-incident.properties.severity}}'
description: 'Sentinel incident {{incident_id}}: {{get-incident.properties.description}}. Affected user: {{get-identity.displayName}} ({{get-identity.department}}).'
- name: alert-soc
type: call
call: msteams.send-channel-message
with:
team_id: security-operations
channel_id: incidents
text: 'Sentinel Incident {{incident_id}}: {{get-incident.properties.title}}. Severity: {{get-incident.properties.severity}}. ServiceNow: {{create-security-incident.number}}.'
consumes:
- type: http
namespace: sentinel
baseUri: https://management.azure.com/subscriptions/barclays-sub/resourceGroups/security-rg/providers/Microsoft.SecurityInsights
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: incidents
path: /incidents/{{incident_id}}?api-version=2023-11-01
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: sailpoint
baseUri: https://barclays.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: identities
path: /search/identities?query=name:{{identity_name}}
inputParameters:
- name: identity_name
in: query
operations:
- name: get-identity
method: GET
- type: http
namespace: servicenow
baseUri: https://barclays.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: table-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/{{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 document from knowledge management. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Document Retrieval
description: Retrieves a document from knowledge management. Used by Barclays teams.
tags:
- banking
- grafana
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: get-document_retrieval
description: Retrieves a document from knowledge management. Used by Barclays teams.
inputParameters:
- name: document_id
in: body
type: string
description: The document_id to look up.
call: grafana.get-document_id
with:
document_id: '{{document_id}}'
consumes:
- type: http
namespace: grafana
baseUri: https://barclays-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: barclays_document_retrieval
method: GET
Orchestrates an FX spot trade from execution to confirmation by capturing the trade via Tradeweb, booking it in Bloomberg AIM, sending confirmation via Microsoft Outlook, and streaming the event to Apache Kafka for downstream consumers.
naftiko: '0.5'
info:
label: FX Trade Lifecycle
description: Orchestrates an FX spot trade from execution to confirmation by capturing the trade via Tradeweb, booking it in Bloomberg AIM, sending confirmation via Microsoft Outlook, and streaming the event to Apache Kafka for downstream consumers.
tags:
- trading
- fx
- tradeweb
- bloomberg-aim
- microsoft-outlook
- apache-kafka
capability:
exposes:
- type: mcp
namespace: fx-trading
port: 8080
tools:
- name: process-fx-trade
description: Process an FX spot trade through booking, confirmation, and event streaming.
inputParameters:
- name: trade_id
in: body
type: string
description: Tradeweb FX trade identifier.
- name: counterparty_email
in: body
type: string
description: Counterparty confirmation email address.
steps:
- name: get-trade
type: call
call: tradeweb.get-trade
with:
trade_id: '{{trade_id}}'
- name: book-trade
type: call
call: bloomberg-aim.create-order
with:
portfolio_id: '{{get-trade.portfolio_id}}'
security: '{{get-trade.currency_pair}}'
side: '{{get-trade.side}}'
quantity: '{{get-trade.notional}}'
price: '{{get-trade.rate}}'
- name: send-confirmation
type: call
call: outlook.send-mail
with:
to: '{{counterparty_email}}'
subject: FX Trade Confirmation - {{trade_id}}
body: 'Trade {{trade_id}}: {{get-trade.side}} {{get-trade.notional}} {{get-trade.currency_pair}} at {{get-trade.rate}}. Settlement: {{get-trade.settlement_date}}.'
- name: publish-event
type: call
call: kafka.produce
with:
topic: fx.trades.completed
key: '{{trade_id}}'
value: '{"tradeId":"{{trade_id}}","pair":"{{get-trade.currency_pair}}","rate":"{{get-trade.rate}}","notional":"{{get-trade.notional}}"}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_api_key
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: orders
path: /orders
operations:
- name: create-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: /users/fx-confirmations@barclays.com/sendMail
operations:
- name: send-mail
method: POST
- type: http
namespace: kafka
baseUri: https://barclays-kafka.confluent.cloud/kafka/v3/clusters/barclays-prod
authentication:
type: basic
username: $secrets.kafka_api_key
password: $secrets.kafka_api_secret
resources:
- name: records
path: /topics/{{topic}}/records
inputParameters:
- name: topic
in: path
operations:
- name: produce
method: POST
Orchestrates a new loan application by creating the application in Salesforce, running credit checks via Refinitiv, generating risk documents in SharePoint, and notifying the lending team via Microsoft Teams.
naftiko: '0.5'
info:
label: Loan Origination Workflow
description: Orchestrates a new loan application by creating the application in Salesforce, running credit checks via Refinitiv, generating risk documents in SharePoint, and notifying the lending team via Microsoft Teams.
tags:
- lending
- loan-origination
- salesforce
- refinitiv
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lending-origination
port: 8080
tools:
- name: initiate-loan-application
description: Create and process a new loan application through credit check, document provisioning, and team notification.
inputParameters:
- name: applicant_name
in: body
type: string
description: Full name of the loan applicant.
- name: loan_amount
in: body
type: string
description: Requested loan amount.
- name: loan_currency
in: body
type: string
description: Currency code (e.g. GBP, USD).
- name: loan_type
in: body
type: string
description: Type of loan (mortgage, corporate, personal).
steps:
- name: create-application
type: call
call: salesforce.create-opportunity
with:
name: Loan - {{applicant_name}} - {{loan_amount}} {{loan_currency}}
stage: Application Received
amount: '{{loan_amount}}'
type: '{{loan_type}}'
- name: credit-check
type: call
call: refinitiv.screen-entity
with:
entity_name: '{{applicant_name}}'
entity_type: individual
check_type: credit
- name: provision-docs
type: call
call: sharepoint.create-folder
with:
site_id: lending_applications
folder_path: Applications/{{create-application.id}}_{{applicant_name}}
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: lending-approvals
channel_id: new-applications
text: 'New {{loan_type}} loan application: {{applicant_name}} for {{loan_amount}} {{loan_currency}}. Credit score: {{credit-check.creditScore}}. Docs: {{provision-docs.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://barclays.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: refinitiv
baseUri: https://rms-world-check-one-api-pilot.thomsonreuters.com/v2
authentication:
type: bearer
token: $secrets.refinitiv_api_key
resources:
- name: screening
path: /cases/screeningRequest
operations:
- name: screen-entity
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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
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://barclays.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
Checks status of a recent deployment. Used by Barclays teams.
naftiko: '0.5'
info:
label: Barclays Deployment Status Check
description: Checks status of a recent deployment. Used by Barclays teams.
tags:
- banking
- slack
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: get-deployment_status_check
description: Checks status of a recent deployment. Used by Barclays teams.
inputParameters:
- name: deployment_id
in: body
type: string
description: The deployment_id to look up.
call: slack.get-deployment_id
with:
deployment_id: '{{deployment_id}}'
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: barclays_deployment_status_che
method: GET
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://barclays-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://barclays.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
Orchestrates margin call processing by computing margin requirements from Snowflake, generating the call notice in SharePoint, dispatching to the counterparty via IBM MQ, and creating a follow-up task in Jira for collateral management.
naftiko: '0.5'
info:
label: Margin Call Processing
description: Orchestrates margin call processing by computing margin requirements from Snowflake, generating the call notice in SharePoint, dispatching to the counterparty via IBM MQ, and creating a follow-up task in Jira for collateral management.
tags:
- trading
- margin-calls
- snowflake
- sharepoint
- ibm-mq
- jira
capability:
exposes:
- type: mcp
namespace: margin-management
port: 8080
tools:
- name: process-margin-call
description: Compute margin requirements, generate notice, dispatch to counterparty, and track follow-up.
inputParameters:
- name: counterparty_lei
in: body
type: string
description: Counterparty Legal Entity Identifier.
- name: valuation_date
in: body
type: string
description: Valuation date (YYYY-MM-DD).
steps:
- name: compute-margin
type: call
call: snowflake.execute-query
with:
statement: SELECT counterparty_lei, SUM(mtm_value) as portfolio_mtm, SUM(collateral_value) as collateral_held, SUM(mtm_value) - SUM(collateral_value) as margin_shortfall FROM risk.counterparty_positions WHERE counterparty_lei = '{{counterparty_lei}}' AND valuation_date = '{{valuation_date}}' GROUP BY counterparty_lei
warehouse: RISK_WH
database: RISK_DB
- name: generate-notice
type: call
call: sharepoint.upload-file
with:
site_id: collateral_management
folder_path: Margin_Calls/{{counterparty_lei}}/{{valuation_date}}
file_name: margin_call_{{counterparty_lei}}_{{valuation_date}}.json
- name: dispatch-notice
type: call
call: ibmmq.send-message
with:
queue: MARGIN.CALLS.OUT
body: '{"lei":"{{counterparty_lei}}","valuationDate":"{{valuation_date}}","shortfall":"{{compute-margin.margin_shortfall}}","portfolioMtm":"{{compute-margin.portfolio_mtm}}"}'
- name: create-follow-up
type: call
call: jira.create-issue
with:
project: COLL
issue_type: Task
summary: 'Margin Call: {{counterparty_lei}} - shortfall {{compute-margin.margin_shortfall}}'
description: 'Margin call dispatched for {{valuation_date}}. Portfolio MTM: {{compute-margin.portfolio_mtm}}. Collateral held: {{compute-margin.collateral_held}}. Shortfall: {{compute-margin.margin_shortfall}}.'
priority: High
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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: 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: ibmmq
baseUri: https://barclays-mq.ibm.com/ibmmq/rest/v2
authentication:
type: basic
username: $secrets.ibmmq_user
password: $secrets.ibmmq_password
resources:
- name: messages
path: /messaging/qmgr/BARCMQ01/queue/{{queue}}/message
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: jira
baseUri: https://barclays.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
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://barclays.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
Collects applicant data, runs credit models, generates decisions, and notifies relationship managers.
naftiko: '0.5'
info:
label: Credit Scoring Pipeline
description: Collects applicant data, runs credit models, generates decisions, and notifies relationship managers.
tags:
- lending
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: barclays_credit_scoring_pipeline
description: Orchestrate credit scoring 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: Credit Scoring Pipeline step 3 complete.
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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://barclays.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
Orchestrates end-of-day P&L aggregation by pulling trade data from Snowflake, computing PnL via Azure Databricks, updating Bloomberg AIM portfolio valuations, and distributing the PnL report to front office via Microsoft Outlook.
naftiko: '0.5'
info:
label: End-of-Day PnL Aggregation
description: Orchestrates end-of-day P&L aggregation by pulling trade data from Snowflake, computing PnL via Azure Databricks, updating Bloomberg AIM portfolio valuations, and distributing the PnL report to front office via Microsoft Outlook.
tags:
- trading
- pnl
- snowflake
- azure-databricks
- bloomberg-aim
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: eod-pnl
port: 8080
tools:
- name: aggregate-eod-pnl
description: Run end-of-day PnL aggregation with reporting and distribution.
inputParameters:
- name: trading_date
in: body
type: string
description: Trading date (YYYY-MM-DD).
- name: desk
in: body
type: string
description: Trading desk identifier.
steps:
- name: get-trades
type: call
call: snowflake.execute-query
with:
statement: SELECT * FROM trading.trades WHERE trade_date = '{{trading_date}}' AND desk = '{{desk}}'
warehouse: TRADING_WH
database: TRADING_DB
- name: compute-pnl
type: call
call: databricks.run-job
with:
job_id: eod-pnl-calculator
parameters: '{"trading_date":"{{trading_date}}","desk":"{{desk}}"}'
- name: update-valuations
type: call
call: bloomberg-aim.update-valuations
with:
desk: '{{desk}}'
as_of_date: '{{trading_date}}'
realized_pnl: '{{compute-pnl.realized_pnl}}'
unrealized_pnl: '{{compute-pnl.unrealized_pnl}}'
- name: send-report
type: call
call: outlook.send-mail
with:
to: '{{desk}}-desk@barclays.com'
subject: EOD PnL Report - {{desk}} - {{trading_date}}
body: 'Realized PnL: {{compute-pnl.realized_pnl}}. Unrealized PnL: {{compute-pnl.unrealized_pnl}}. Total: {{compute-pnl.total_pnl}}. Trades: {{compute-pnl.trade_count}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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: databricks
baseUri: https://barclays.cloud.databricks.com/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: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: valuations
path: /valuations
operations:
- name: update-valuations
method: PUT
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/trading-reports@barclays.com/sendMail
operations:
- name: send-mail
method: POST
Orchestrates a regulatory stress test by pulling portfolio positions from Bloomberg AIM, applying scenario shocks via Azure Databricks, storing results in Snowflake, generating the report in Power BI, and emailing the risk committee.
naftiko: '0.5'
info:
label: Stress Testing Orchestrator
description: Orchestrates a regulatory stress test by pulling portfolio positions from Bloomberg AIM, applying scenario shocks via Azure Databricks, storing results in Snowflake, generating the report in Power BI, and emailing the risk committee.
tags:
- risk-management
- stress-testing
- bloomberg-aim
- azure-databricks
- snowflake
- power-bi
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: stress-testing
port: 8080
tools:
- name: run-stress-test
description: Execute a full stress testing scenario across the portfolio with reporting and notification.
inputParameters:
- name: scenario_name
in: body
type: string
description: Stress scenario name (e.g. severe_recession, rate_shock_200bps).
- name: portfolio_id
in: body
type: string
description: Portfolio to stress test.
steps:
- name: get-positions
type: call
call: bloomberg-aim.get-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: apply-scenario
type: call
call: databricks.run-job
with:
job_id: stress-test-engine
parameters: '{"scenario":"{{scenario_name}}","positions":{{get-positions.holdings}}}'
- name: store-results
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO risk.stress_test_results (portfolio_id, scenario, pnl_impact, capital_impact, run_date) VALUES ('{{portfolio_id}}', '{{scenario_name}}', '{{apply-scenario.pnl_impact}}', '{{apply-scenario.capital_impact}}', CURRENT_DATE())
warehouse: RISK_WH
database: RISK_DB
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
group_id: risk-reporting
dataset_id: stress-test-results
- name: notify-committee
type: call
call: outlook.send-mail
with:
to: risk-committee@barclays.com
subject: 'Stress Test Complete: {{scenario_name}} - Portfolio {{portfolio_id}}'
body: 'Scenario: {{scenario_name}}. PnL Impact: {{apply-scenario.pnl_impact}}. Capital Impact: {{apply-scenario.capital_impact}}. Dashboard refreshed.'
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: databricks
baseUri: https://barclays.cloud.databricks.com/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: snowflake
baseUri: https://barclays.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/risk-reporting@barclays.com/sendMail
operations:
- name: send-mail
method: POST
Retrieves a Jira issue from the compliance project by key, returning summary, status, assignee, and due date.
naftiko: '0.5'
info:
label: Jira Compliance Task Lookup
description: Retrieves a Jira issue from the compliance project by key, returning summary, status, assignee, and due date.
tags:
- compliance
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: compliance-tasks
port: 8080
tools:
- name: get-compliance-task
description: Look up a Jira compliance task by issue key.
inputParameters:
- name: issue_key
in: body
type: string
description: Jira issue key (e.g. COMP-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: due_date
type: string
mapping: $.fields.duedate
consumes:
- type: http
namespace: jira
baseUri: https://barclays.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue/{{issue_key}}
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Orchestrates operational risk event recording by creating the event in ServiceNow, storing supporting evidence in Box, computing the risk impact via Azure Databricks, and notifying the operational risk committee via Microsoft Outlook.
naftiko: '0.5'
info:
label: Operational Risk Event Capture
description: Orchestrates operational risk event recording by creating the event in ServiceNow, storing supporting evidence in Box, computing the risk impact via Azure Databricks, and notifying the operational risk committee via Microsoft Outlook.
tags:
- risk-management
- operational-risk
- servicenow
- box
- azure-databricks
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: oprisk-management
port: 8080
tools:
- name: record-oprisk-event
description: Record an operational risk event with evidence collection, impact assessment, and committee notification.
inputParameters:
- name: event_description
in: body
type: string
description: Description of the operational risk event.
- name: business_unit
in: body
type: string
description: Affected business unit.
- name: estimated_loss
in: body
type: string
description: Estimated financial loss.
- name: currency
in: body
type: string
description: Loss currency.
steps:
- name: create-event
type: call
call: servicenow.create-record
with:
table: u_oprisk_events
short_description: 'OpRisk Event: {{business_unit}} - {{estimated_loss}} {{currency}}'
description: '{{event_description}}'
category: operational_risk
- name: create-evidence-folder
type: call
call: box.create-folder
with:
parent_id: oprisk_evidence
name: Event_{{create-event.sys_id}}
- name: assess-impact
type: call
call: databricks.run-job
with:
job_id: oprisk-impact-assessor
parameters: '{"estimated_loss":"{{estimated_loss}}","currency":"{{currency}}","business_unit":"{{business_unit}}"}'
- name: notify-committee
type: call
call: outlook.send-mail
with:
to: oprisk-committee@barclays.com
subject: 'OpRisk Event: {{business_unit}} - {{estimated_loss}} {{currency}}'
body: 'Event: {{event_description}}. Estimated loss: {{estimated_loss}} {{currency}}. Risk category: {{assess-impact.risk_category}}. Capital impact: {{assess-impact.capital_impact}}. ServiceNow: {{create-event.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://barclays.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: table-records
path: /table/{{table}}
inputParameters:
- name: table
in: path
operations:
- name: create-record
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: databricks
baseUri: https://barclays.cloud.databricks.com/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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/oprisk-reporting@barclays.com/sendMail
operations:
- name: send-mail
method: POST
Retrieves account details from the Avaloq core banking system by account number, returning balance, currency, status, and holder name. Used by operations staff for account inquiries.
naftiko: '0.5'
info:
label: Avaloq Banking Core Account Inquiry
description: Retrieves account details from the Avaloq core banking system by account number, returning balance, currency, status, and holder name. Used by operations staff for account inquiries.
tags:
- core-banking
- accounts
- avaloq
capability:
exposes:
- type: mcp
namespace: core-banking
port: 8080
tools:
- name: get-account-details
description: Look up an account in Avaloq core banking by account number.
inputParameters:
- name: account_number
in: body
type: string
description: Avaloq account number.
call: avaloq.get-account
with:
account_number: '{{account_number}}'
outputParameters:
- name: balance
type: string
mapping: $.account.balance
- name: currency
type: string
mapping: $.account.currency
- name: status
type: string
mapping: $.account.status
- name: holder_name
type: string
mapping: $.account.holderName
consumes:
- type: http
namespace: avaloq
baseUri: https://barclays-avaloq.internal.barclays.com/api/v1
authentication:
type: bearer
token: $secrets.avaloq_token
resources:
- name: accounts
path: /accounts/{{account_number}}
inputParameters:
- name: account_number
in: path
operations:
- name: get-account
method: GET
Orchestrates daily LCR monitoring by pulling HQLA positions from Snowflake, net cash outflows from Oracle, computing the ratio via Azure Databricks, and alerting treasury via Microsoft Teams if below threshold.
naftiko: '0.5'
info:
label: Liquidity Coverage Ratio Monitoring
description: Orchestrates daily LCR monitoring by pulling HQLA positions from Snowflake, net cash outflows from Oracle, computing the ratio via Azure Databricks, and alerting treasury via Microsoft Teams if below threshold.
tags:
- risk-management
- liquidity
- snowflake
- oracle-database
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: liquidity-risk
port: 8080
tools:
- name: monitor-lcr
description: Compute and monitor the Liquidity Coverage Ratio with threshold alerting.
inputParameters:
- name: reporting_date
in: body
type: string
description: Reporting date (YYYY-MM-DD).
- name: threshold_pct
in: body
type: string
description: Alert threshold percentage (e.g. 100).
steps:
- name: get-hqla
type: call
call: snowflake.execute-query
with:
statement: SELECT SUM(market_value) as hqla_total FROM treasury.hqla_positions WHERE as_of_date = '{{reporting_date}}'
warehouse: TREASURY_WH
database: TREASURY_DB
- name: get-outflows
type: call
call: oracle.get-cash-outflows
with:
reporting_date: '{{reporting_date}}'
- name: compute-lcr
type: call
call: databricks.run-job
with:
job_id: lcr-calculator
parameters: '{"hqla":"{{get-hqla.hqla_total}}","net_outflows":"{{get-outflows.net_outflow_total}}","threshold":"{{threshold_pct}}"}'
- name: alert-treasury
type: call
call: msteams.send-channel-message
with:
team_id: treasury
channel_id: liquidity-monitoring
text: 'LCR Report {{reporting_date}}: HQLA {{get-hqla.hqla_total}}, Net Outflows {{get-outflows.net_outflow_total}}, LCR {{compute-lcr.lcr_ratio}}%. Threshold: {{threshold_pct}}%. Status: {{compute-lcr.breach_status}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://barclays.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: oracle
baseUri: https://barclays-ords.db.oracle.com/ords/treasury/v1
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: cash-outflows
path: /cash-outflows/{{reporting_date}}
inputParameters:
- name: reporting_date
in: path
operations:
- name: get-cash-outflows
method: GET
- type: http
namespace: databricks
baseUri: https://barclays.cloud.databricks.com/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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Executes a SQL statement against the Snowflake risk warehouse to retrieve portfolio-level aggregation data such as sector allocation or duration.
naftiko: '0.5'
info:
label: Snowflake Portfolio Query
description: Executes a SQL statement against the Snowflake risk warehouse to retrieve portfolio-level aggregation data such as sector allocation or duration.
tags:
- data-warehouse
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-query
port: 8080
tools:
- name: run-portfolio-query
description: Run a read-only SQL query on the Snowflake portfolio analytics warehouse.
inputParameters:
- name: sql_statement
in: body
type: string
description: The SQL SELECT statement to execute.
call: snowflake.execute-statement
with:
statement: '{{sql_statement}}'
warehouse: PORTFOLIO_WH
consumes:
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Triggers an Aladdin portfolio rebalance, retrieves the proposed trades, publishes results to a Kafka topic for downstream systems, and notifies the portfolio manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Aladdin Rebalance and Notification Workflow
description: Triggers an Aladdin portfolio rebalance, retrieves the proposed trades, publishes results to a Kafka topic for downstream systems, and notifies the portfolio manager via Microsoft Teams.
tags:
- portfolio-management
- rebalancing
- aladdin
- apache-kafka
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: rebalance-workflow
port: 8080
tools:
- name: trigger-rebalance
description: Run an Aladdin rebalance for a portfolio and distribute results.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: model_id
in: body
type: string
description: The target model portfolio ID.
- name: pm_email
in: body
type: string
description: Portfolio manager email for notification.
steps:
- name: run-rebalance
type: call
call: aladdin.trigger-rebalance
with:
portfolio_id: '{{portfolio_id}}'
model_id: '{{model_id}}'
- name: get-proposed-trades
type: call
call: aladdin.get-proposed-trades
with:
rebalance_id: '{{run-rebalance.rebalance_id}}'
- name: publish-trades
type: call
call: kafka.produce-message
with:
topic: portfolio.rebalance.proposed-trades
key: '{{portfolio_id}}'
value: '{{get-proposed-trades.trades}}'
- name: notify-pm
type: call
call: msteams.send-message
with:
recipient_upn: '{{pm_email}}'
text: Rebalance complete for portfolio {{portfolio_id}}. {{get-proposed-trades.trade_count}} proposed trades generated against model {{model_id}}.
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: rebalance
path: /portfolios/{{portfolio_id}}/rebalance
inputParameters:
- name: portfolio_id
in: path
operations:
- name: trigger-rebalance
method: POST
- name: proposed-trades
path: /rebalances/{{rebalance_id}}/trades
inputParameters:
- name: rebalance_id
in: path
operations:
- name: get-proposed-trades
method: GET
- type: http
namespace: kafka
baseUri: https://kafka-rest.blackrock.com/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: records
path: /clusters/main/topics/{{topic}}/records
inputParameters:
- name: topic
in: path
operations:
- name: produce-message
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a Prometheus alert fires for an Aladdin microservice, queries Grafana for dashboard context, creates a PagerDuty incident, and logs the event in ServiceNow.
naftiko: '0.5'
info:
label: Prometheus Alert to PagerDuty Escalation
description: When a Prometheus alert fires for an Aladdin microservice, queries Grafana for dashboard context, creates a PagerDuty incident, and logs the event in ServiceNow.
tags:
- monitoring
- incident-response
- prometheus
- grafana
- servicenow
capability:
exposes:
- type: mcp
namespace: alert-escalation
port: 8080
tools:
- name: escalate-prometheus-alert
description: Escalate a Prometheus alert through Grafana context, PagerDuty, and ServiceNow.
inputParameters:
- name: alert_name
in: body
type: string
description: Prometheus alert name.
- name: service
in: body
type: string
description: Affected service name.
- name: severity
in: body
type: string
description: Alert severity (critical, warning).
steps:
- name: get-dashboard
type: call
call: grafana.get-dashboard
with:
uid: '{{service}}-overview'
- name: create-pagerduty-incident
type: call
call: pagerduty.create-incident
with:
service_id: '{{service}}'
title: '{{alert_name}} - {{severity}}'
body: 'Prometheus alert {{alert_name}} fired for {{service}}. Dashboard: {{get-dashboard.url}}'
- name: log-to-servicenow
type: call
call: servicenow.create-incident
with:
short_description: 'Prometheus: {{alert_name}} on {{service}}'
category: infrastructure
assigned_group: SRE_Team
description: 'Alert: {{alert_name}}. Severity: {{severity}}. PagerDuty: {{create-pagerduty-incident.incident_id}}.'
consumes:
- type: http
namespace: grafana
baseUri: https://grafana.blackrock.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: dashboards
path: /dashboards/uid/{{uid}}
inputParameters:
- name: uid
in: path
operations:
- name: get-dashboard
method: GET
- 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: servicenow
baseUri: https://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Pulls a real-time market data snapshot from Bloomberg Enterprise Data for a given security identifier, returning price, yield, and volume.
naftiko: '0.5'
info:
label: Bloomberg Market Data Snapshot
description: Pulls a real-time market data snapshot from Bloomberg Enterprise Data for a given security identifier, returning price, yield, and volume.
tags:
- market-data
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-market-snapshot
description: Fetch the latest price, bid, ask, yield, and volume for a given Bloomberg security identifier.
inputParameters:
- name: security_id
in: body
type: string
description: The Bloomberg FIGI or ticker symbol.
call: bloomberg.get-snapshot
with:
security_id: '{{security_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_eap_token
resources:
- name: snapshots
path: /snapshots/{{security_id}}
inputParameters:
- name: security_id
in: path
operations:
- name: get-snapshot
method: GET
Searches BlackRock's Confluence knowledge base for investment research documentation and internal policy pages.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Search
description: Searches BlackRock's Confluence knowledge base for investment research documentation and internal policy pages.
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-search
port: 8080
tools:
- name: search-confluence
description: Search Confluence for pages matching a query string.
inputParameters:
- name: search_query
in: body
type: string
description: The CQL search query.
call: confluence.search
with:
cql: '{{search_query}}'
consumes:
- type: http
namespace: confluence
baseUri: https://blackrock.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: search
path: /search?cql={{cql}}
inputParameters:
- name: cql
in: query
operations:
- name: search
method: GET
Pulls ESG ratings from MSCI, enriches portfolio holdings in Aladdin with ESG scores, stores results in Snowflake, and refreshes the ESG Tableau dashboard.
naftiko: '0.5'
info:
label: ESG Data Integration Pipeline
description: Pulls ESG ratings from MSCI, enriches portfolio holdings in Aladdin with ESG scores, stores results in Snowflake, and refreshes the ESG Tableau dashboard.
tags:
- esg
- msci
- aladdin
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: esg-integration
port: 8080
tools:
- name: integrate-esg-data
description: Pull ESG ratings, enrich portfolio holdings, store in Snowflake, and refresh dashboards.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
steps:
- name: get-holdings
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-esg-ratings
type: call
call: msci.get-esg-ratings
with:
isins: '{{get-holdings.isin_list}}'
- name: store-scores
type: call
call: snowflake.execute-statement
with:
statement: CALL ESG.UPDATE_PORTFOLIO_SCORES('{{portfolio_id}}')
- name: refresh-dashboard
type: call
call: tableau.refresh-workbook
with:
workbook_id: esg-dashboard
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: msci
baseUri: https://api.msci.com/esg/v2
authentication:
type: bearer
token: $secrets.msci_token
resources:
- name: ratings
path: /ratings
inputParameters:
- name: isins
in: query
operations:
- name: get-esg-ratings
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: tableau
baseUri: https://tableau.blackrock.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
Retrieves fund performance data and ratings from Morningstar for competitive analysis and client reporting.
naftiko: '0.5'
info:
label: Morningstar Fund Data Lookup
description: Retrieves fund performance data and ratings from Morningstar for competitive analysis and client reporting.
tags:
- fund-data
- morningstar
capability:
exposes:
- type: mcp
namespace: morningstar
port: 8080
tools:
- name: get-fund-data
description: Look up fund performance data from Morningstar.
inputParameters:
- name: fund_id
in: body
type: string
description: The Morningstar fund identifier.
call: morningstar.get-fund
with:
fund_id: '{{fund_id}}'
outputParameters:
- name: name
type: string
mapping: $.fund.name
- name: star_rating
type: integer
mapping: $.fund.starRating
- name: ytd_return
type: number
mapping: $.fund.ytdReturn
consumes:
- type: http
namespace: morningstar
baseUri: https://api.morningstar.com/v2
authentication:
type: apiKey
name: x-api-key
in: header
value: $secrets.morningstar_api_key
resources:
- name: funds
path: /funds/{{fund_id}}
inputParameters:
- name: fund_id
in: path
operations:
- name: get-fund
method: GET
Triggers a PagerDuty incident for critical trading platform and infrastructure alerts.
naftiko: '0.5'
info:
label: PagerDuty Incident Trigger
description: Triggers a PagerDuty incident for critical trading platform and infrastructure alerts.
tags:
- incident-management
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty
port: 8080
tools:
- name: trigger-incident
description: Create a new PagerDuty incident.
inputParameters:
- name: service_id
in: body
type: string
description: The PagerDuty service ID.
- name: title
in: body
type: string
description: Incident title.
- name: urgency
in: body
type: string
description: 'Incident urgency: high or low.'
call: pagerduty.create-incident
with:
service_id: '{{service_id}}'
title: '{{title}}'
urgency: '{{urgency}}'
outputParameters:
- name: incident_id
type: string
mapping: $.incident.id
- name: incident_url
type: string
mapping: $.incident.html_url
consumes:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Retrieves active Datadog alerts filtered by tag for BlackRock infrastructure monitoring.
naftiko: '0.5'
info:
label: Datadog Infrastructure Alert Check
description: Retrieves active Datadog alerts filtered by tag for BlackRock infrastructure monitoring.
tags:
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-active-alerts
description: Fetch currently triggered Datadog monitors filtered by service tag.
inputParameters:
- name: service_tag
in: body
type: string
description: The service tag to filter monitors, e.g. service:aladdin.
call: datadog.get-monitors
with:
tags: '{{service_tag}}'
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?tags={{tags}}
inputParameters:
- name: tags
in: query
operations:
- name: get-monitors
method: GET
Retrieves market prices from Bloomberg, calculates NAV in SimCorp, validates against Aladdin, and distributes to fund accountants via Microsoft Outlook.
naftiko: '0.5'
info:
label: Daily NAV Calculation Pipeline
description: Retrieves market prices from Bloomberg, calculates NAV in SimCorp, validates against Aladdin, and distributes to fund accountants via Microsoft Outlook.
tags:
- nav-calculation
- fund-accounting
- bloomberg
- simcorp-dimension
- aladdin
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: daily-nav
port: 8080
tools:
- name: calculate-nav
description: Calculate daily NAV, validate, and distribute.
inputParameters:
- name: fund_id
in: body
type: string
description: The fund identifier.
- name: accountant_email
in: body
type: string
description: Fund accountant email.
steps:
- name: get-prices
type: call
call: bloomberg.get-market-data
with:
fund_id: '{{fund_id}}'
- name: calculate-nav
type: call
call: simcorp.calculate-nav
with:
fund_id: '{{fund_id}}'
prices: '{{get-prices.prices}}'
- name: validate-nav
type: call
call: aladdin.validate-nav
with:
fund_id: '{{fund_id}}'
calculated_nav: '{{calculate-nav.nav_per_share}}'
- name: distribute-nav
type: call
call: outlook.send-mail
with:
to: '{{accountant_email}}'
subject: 'Daily NAV: {{fund_id}} — ${{calculate-nav.nav_per_share}}'
body: 'NAV: ${{calculate-nav.nav_per_share}}. AUM: ${{calculate-nav.total_aum}}M. Validation: {{validate-nav.status}}. Variance: {{validate-nav.variance_bps}}bps.'
consumes:
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: market-data
path: /marketdata/snapshots
operations:
- name: get-market-data
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: nav
path: /funds/{{fund_id}}/nav
inputParameters:
- name: fund_id
in: path
operations:
- name: calculate-nav
method: POST
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: nav-validation
path: /funds/{{fund_id}}/nav/validate
inputParameters:
- name: fund_id
in: path
operations:
- name: validate-nav
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-mail
method: POST
Deploys a trained model from Azure Databricks to Azure Machine Learning, creates a Grafana monitoring dashboard, and notifies the data science team via Slack.
naftiko: '0.5'
info:
label: ML Model Deployment and Monitoring
description: Deploys a trained model from Azure Databricks to Azure Machine Learning, creates a Grafana monitoring dashboard, and notifies the data science team via Slack.
tags:
- machine-learning
- azure-databricks
- azure-machine-learning
- grafana
- slack
capability:
exposes:
- type: mcp
namespace: ml-deploy
port: 8080
tools:
- name: deploy-model
description: Deploy a model to production with monitoring and notifications.
inputParameters:
- name: model_name
in: body
type: string
description: Name of the registered model.
- name: model_version
in: body
type: string
description: Model version to deploy.
steps:
- name: get-model
type: call
call: databricks.get-model-version
with:
name: '{{model_name}}'
version: '{{model_version}}'
- name: deploy-endpoint
type: call
call: azure-ml.create-deployment
with:
model_uri: '{{get-model.source}}'
endpoint_name: '{{model_name}}-prod'
- name: create-dashboard
type: call
call: grafana.create-dashboard
with:
title: ML Model — {{model_name}} v{{model_version}}
endpoint: '{{deploy-endpoint.scoring_uri}}'
- name: notify-team
type: call
call: slack.post-message
with:
channel: '#data-science'
text: 'Model {{model_name}} v{{model_version}} deployed. Endpoint: {{deploy-endpoint.scoring_uri}}. Dashboard: {{create-dashboard.url}}.'
consumes:
- type: http
namespace: databricks
baseUri: https://adb-blackrock.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: models
path: /mlflow/model-versions/get
inputParameters:
- name: name
in: query
- name: version
in: query
operations:
- name: get-model-version
method: GET
- type: http
namespace: azure-ml
baseUri: https://ml.azure.com/api/v1
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: deployments
path: /deployments
operations:
- name: create-deployment
method: POST
- type: http
namespace: grafana
baseUri: https://grafana.blackrock.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: dashboards
path: /dashboards/db
operations:
- name: create-dashboard
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
Calculates rebalancing trades in Aladdin, validates compliance, submits orders via Bloomberg EMSX, and notifies the portfolio manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Portfolio Rebalancing Execution Pipeline
description: Calculates rebalancing trades in Aladdin, validates compliance, submits orders via Bloomberg EMSX, and notifies the portfolio manager via Microsoft Teams.
tags:
- portfolio-management
- rebalancing
- aladdin
- bloomberg-emsx
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: portfolio-rebalancing
port: 8080
tools:
- name: execute-rebalance
description: Calculate, validate, execute, and notify for portfolio rebalancing.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: pm_channel
in: body
type: string
description: Microsoft Teams PM channel.
steps:
- name: calculate-trades
type: call
call: aladdin.calculate-rebalance
with:
portfolio_id: '{{portfolio_id}}'
- name: check-compliance
type: call
call: aladdin.check-compliance
with:
portfolio_id: '{{portfolio_id}}'
trades: '{{calculate-trades.proposed_trades}}'
- name: submit-orders
type: call
call: emsx.create-order-batch
with:
orders: '{{calculate-trades.proposed_trades}}'
- name: notify-pm
type: call
call: msteams.post-channel-message
with:
channel_id: '{{pm_channel}}'
text: 'Rebalance executed for {{portfolio_id}}: {{calculate-trades.trade_count}} trades. Compliance: {{check-compliance.status}}. EMSX batch: {{submit-orders.batch_id}}.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: rebalance
path: /portfolios/{{portfolio_id}}/rebalance
inputParameters:
- name: portfolio_id
in: path
operations:
- name: calculate-rebalance
method: POST
- name: compliance
path: /compliance/check
operations:
- name: check-compliance
method: POST
- type: http
namespace: emsx
baseUri: https://bsapi.bloomberg.com/emsapi/v1
authentication:
type: bearer
token: $secrets.bloomberg_emsx_token
resources:
- name: orders
path: /orders/batch
operations:
- name: create-order-batch
method: POST
- 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
Fetches ESG ratings from FactSet for a portfolio's holdings from Aladdin, aggregates scores, and stores the enriched dataset in Snowflake for reporting.
naftiko: '0.5'
info:
label: ESG Score Enrichment Pipeline
description: Fetches ESG ratings from FactSet for a portfolio's holdings from Aladdin, aggregates scores, and stores the enriched dataset in Snowflake for reporting.
tags:
- esg
- portfolio-management
- factset
- aladdin
- snowflake
capability:
exposes:
- type: mcp
namespace: esg-enrichment
port: 8080
tools:
- name: enrich-portfolio-esg
description: Pull holdings from Aladdin, fetch ESG scores from FactSet, and store aggregated results in Snowflake.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
steps:
- name: get-holdings
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: fetch-esg-scores
type: call
call: factset.get-esg-scores
with:
ids: '{{get-holdings.tickers}}'
- name: store-results
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO esg.portfolio_scores SELECT * FROM TABLE(RESULT_SCAN('{{fetch-esg-scores.request_id}}'))
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2/portfolios
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-esg/v1
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: esg-scores
path: /esg-scores
operations:
- name: get-esg-scores
method: POST
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Routes investment orders through Bloomberg AIM, validates against Aladdin compliance, and logs execution details to Snowflake for audit.
naftiko: '0.5'
info:
label: Bloomberg AIM Order Routing
description: Routes investment orders through Bloomberg AIM, validates against Aladdin compliance, and logs execution details to Snowflake for audit.
tags:
- trading
- order-management
- bloomberg-aim
- aladdin
- snowflake
capability:
exposes:
- type: mcp
namespace: aim-routing
port: 8080
tools:
- name: route-aim-order
description: Validate and route an order through Bloomberg AIM with compliance and audit logging.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Aladdin portfolio identifier.
- name: ticker
in: body
type: string
description: Security ticker.
- name: side
in: body
type: string
description: BUY or SELL.
- name: quantity
in: body
type: integer
description: Order quantity.
- name: broker
in: body
type: string
description: Target broker code.
steps:
- name: compliance-check
type: call
call: aladdin.check-compliance
with:
portfolio_id: '{{portfolio_id}}'
ticker: '{{ticker}}'
side: '{{side}}'
quantity: '{{quantity}}'
- name: submit-aim-order
type: call
call: aim.create-order
with:
ticker: '{{ticker}}'
side: '{{side}}'
quantity: '{{quantity}}'
broker: '{{broker}}'
- name: log-execution
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO trading.order_audit VALUES ('{{submit-aim-order.order_id}}', '{{portfolio_id}}', '{{ticker}}', '{{side}}', {{quantity}}, '{{broker}}', CURRENT_TIMESTAMP())
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: compliance
path: /compliance/check
operations:
- name: check-compliance
method: POST
- type: http
namespace: aim
baseUri: https://bsapi.bloomberg.com/aim/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Fetches holdings from Aladdin, retrieves benchmark data from FactSet, generates a Tableau dashboard snapshot, and emails the review package to the client via Microsoft Outlook.
naftiko: '0.5'
info:
label: Client Portfolio Review Generator
description: Fetches holdings from Aladdin, retrieves benchmark data from FactSet, generates a Tableau dashboard snapshot, and emails the review package to the client via Microsoft Outlook.
tags:
- client-reporting
- aladdin
- factset
- tableau
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: portfolio-review
port: 8080
tools:
- name: generate-review
description: Generate and distribute a client portfolio review package.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: client_email
in: body
type: string
description: Client email address for distribution.
- name: benchmark_id
in: body
type: string
description: FactSet benchmark identifier.
steps:
- name: get-holdings
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-benchmark
type: call
call: factset.get-benchmark-returns
with:
benchmark_id: '{{benchmark_id}}'
- name: refresh-dashboard
type: call
call: tableau.refresh-workbook
with:
workbook_id: portfolio-review-{{portfolio_id}}
- name: send-review
type: call
call: outlook.send-email
with:
to: '{{client_email}}'
subject: Portfolio Review — {{portfolio_id}}
body: 'Your portfolio review is ready. Dashboard: {{refresh-dashboard.url}}. Total holdings: {{get-holdings.total_count}}.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: factset
baseUri: https://api.factset.com/analytics/v3
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_api_key
resources:
- name: benchmarks
path: /benchmarks/{{benchmark_id}}/returns
inputParameters:
- name: benchmark_id
in: path
operations:
- name: get-benchmark-returns
method: GET
- type: http
namespace: tableau
baseUri: https://tableau.blackrock.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
- 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
Looks up a Jira issue by key and returns its current status, assignee, priority, and last updated timestamp.
naftiko: '0.5'
info:
label: Jira Issue Status Check
description: Looks up a Jira issue by key and returns its current status, assignee, priority, and last updated timestamp.
tags:
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: project-tracking
port: 8080
tools:
- name: get-jira-issue
description: Retrieve a Jira issue by key to check its status and assignment.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key, e.g. RISK-1234.
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
consumes:
- type: http
namespace: jira
baseUri: https://blackrock.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 Morningstar category-level performance and ranking data for a given fund, returning percentile rank and peer group statistics.
naftiko: '0.5'
info:
label: Morningstar Category Performance
description: Fetches Morningstar category-level performance and ranking data for a given fund, returning percentile rank and peer group statistics.
tags:
- fund-analytics
- morningstar
capability:
exposes:
- type: mcp
namespace: morningstar-perf
port: 8080
tools:
- name: get-category-performance
description: Retrieve Morningstar category performance and percentile rank for a fund by its SecId.
inputParameters:
- name: sec_id
in: body
type: string
description: The Morningstar security identifier.
call: morningstar.get-performance
with:
sec_id: '{{sec_id}}'
consumes:
- type: http
namespace: morningstar
baseUri: https://api.morningstar.com/v2
authentication:
type: apiKey
name: X-API-KEY
in: header
value: $secrets.morningstar_api_key
resources:
- name: performance
path: /securities/{{sec_id}}/performance
inputParameters:
- name: sec_id
in: path
operations:
- name: get-performance
method: GET
Sends an SMS notification via Twilio for critical portfolio alerts and trade confirmations.
naftiko: '0.5'
info:
label: Twilio SMS Notification
description: Sends an SMS notification via Twilio for critical portfolio alerts and trade confirmations.
tags:
- notifications
- twilio
capability:
exposes:
- type: mcp
namespace: twilio-sms
port: 8080
tools:
- name: send-sms
description: Send an SMS message to a phone number.
inputParameters:
- name: to
in: body
type: string
description: Recipient phone number in E.164 format.
- name: message
in: body
type: string
description: The SMS message body.
call: twilio.send-message
with:
to: '{{to}}'
from: $secrets.twilio_from_number
body: '{{message}}'
outputParameters:
- name: message_sid
type: string
mapping: $.sid
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: twilio
baseUri: https://api.twilio.com/2010-04-01/Accounts/$secrets.twilio_account_sid
authentication:
type: basic
username: $secrets.twilio_account_sid
password: $secrets.twilio_auth_token
resources:
- name: messages
path: /Messages.json
operations:
- name: send-message
method: POST
Scales an Azure Kubernetes Service deployment for Aladdin microservices, verifies pod readiness, and updates Grafana annotations for tracking.
naftiko: '0.5'
info:
label: Kubernetes Deployment Scaler
description: Scales an Azure Kubernetes Service deployment for Aladdin microservices, verifies pod readiness, and updates Grafana annotations for tracking.
tags:
- infrastructure
- azure-kubernetes-service
- grafana
capability:
exposes:
- type: mcp
namespace: k8s-ops
port: 8080
tools:
- name: scale-and-annotate
description: Scale an AKS deployment and record the event in Grafana.
inputParameters:
- name: namespace
in: body
type: string
description: Kubernetes namespace.
- name: deployment
in: body
type: string
description: Deployment name.
- name: replicas
in: body
type: integer
description: Desired replica count.
steps:
- name: scale-deployment
type: call
call: aks.scale-deployment
with:
namespace: '{{namespace}}'
deployment: '{{deployment}}'
replicas: '{{replicas}}'
- name: annotate-grafana
type: call
call: grafana.create-annotation
with:
dashboard_id: aladdin-infra
text: Scaled {{deployment}} in {{namespace}} to {{replicas}} replicas
consumes:
- type: http
namespace: aks
baseUri: https://blackrock-aks.hcp.eastus.azmk8s.io/apis/apps/v1
authentication:
type: bearer
token: $secrets.aks_token
resources:
- name: deployments
path: /namespaces/{{namespace}}/deployments/{{deployment}}/scale
inputParameters:
- name: namespace
in: path
- name: deployment
in: path
operations:
- name: scale-deployment
method: PATCH
- type: http
namespace: grafana
baseUri: https://grafana.blackrock.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: annotations
path: /annotations
operations:
- name: create-annotation
method: POST
Extracts departmental budgets from Oracle Hyperion, reconciles against Workday actuals, stores variance analysis in Snowflake, and emails the CFO a summary via Microsoft Outlook.
naftiko: '0.5'
info:
label: Oracle Hyperion Budget Consolidation
description: Extracts departmental budgets from Oracle Hyperion, reconciles against Workday actuals, stores variance analysis in Snowflake, and emails the CFO a summary via Microsoft Outlook.
tags:
- finance
- budgeting
- oracle-hyperion
- workday
- snowflake
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: budget-consolidation
port: 8080
tools:
- name: consolidate-budgets
description: Consolidate Hyperion budgets against Workday actuals and distribute variance report.
inputParameters:
- name: fiscal_period
in: body
type: string
description: Fiscal period identifier (e.g. FY2026-Q1).
- name: cfo_email
in: body
type: string
description: CFO email for report delivery.
steps:
- name: get-budgets
type: call
call: hyperion.get-budget-data
with:
period: '{{fiscal_period}}'
- name: get-actuals
type: call
call: workday.get-actuals
with:
period: '{{fiscal_period}}'
- name: store-variance
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO finance.budget_variance SELECT '{{fiscal_period}}', budget.dept, budget.amount, actual.amount, (budget.amount - actual.amount) AS variance FROM ({{get-budgets.data}}) budget JOIN ({{get-actuals.data}}) actual ON budget.dept = actual.dept
- name: email-cfo
type: call
call: outlook.send-mail
with:
to: '{{cfo_email}}'
subject: Budget Variance Report - {{fiscal_period}}
body: 'Budget consolidation complete for {{fiscal_period}}. Total budget: {{get-budgets.total}}. Total actuals: {{get-actuals.total}}. Variance analysis stored in Snowflake.'
consumes:
- type: http
namespace: hyperion
baseUri: https://hyperion.blackrock.com/HyperionPlanning/rest/v3
authentication:
type: basic
username: $secrets.hyperion_user
password: $secrets.hyperion_password
resources:
- name: budget-data
path: /applications/BudgetApp/plantypes/Plan1/exportDataSlice
operations:
- name: get-budget-data
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: actuals
path: /financial-management/actuals?period={{period}}
inputParameters:
- name: period
in: query
operations:
- name: get-actuals
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.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: outlook
baseUri: https://graph.microsoft.com/v1.0/me
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /sendMail
operations:
- name: send-mail
method: POST
Executes an Azure Databricks notebook for quantitative research, stores output in Amazon S3, and updates a Confluence research wiki page with results.
naftiko: '0.5'
info:
label: Azure Databricks Notebook Execution
description: Executes an Azure Databricks notebook for quantitative research, stores output in Amazon S3, and updates a Confluence research wiki page with results.
tags:
- research
- quantitative
- azure-databricks
- amazon-s3
- confluence
capability:
exposes:
- type: mcp
namespace: quant-research
port: 8080
tools:
- name: run-research-notebook
description: Execute a Databricks notebook and publish results to S3 and Confluence.
inputParameters:
- name: notebook_path
in: body
type: string
description: Path to the Databricks notebook.
- name: s3_bucket
in: body
type: string
description: S3 bucket for output storage.
- name: confluence_page_id
in: body
type: string
description: Confluence page ID to update with results.
steps:
- name: run-notebook
type: call
call: databricks.run-notebook
with:
notebook_path: '{{notebook_path}}'
- name: upload-to-s3
type: call
call: s3.put-object
with:
bucket: '{{s3_bucket}}'
key: research/{{run-notebook.run_id}}/output.json
body: '{{run-notebook.output}}'
- name: update-wiki
type: call
call: confluence.update-page
with:
page_id: '{{confluence_page_id}}'
body: 'Research run {{run-notebook.run_id}} completed. Output: s3://{{s3_bucket}}/research/{{run-notebook.run_id}}/output.json'
consumes:
- type: http
namespace: databricks
baseUri: https://blackrock.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/runs/submit
operations:
- name: run-notebook
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_s3_token
resources:
- name: objects
path: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: confluence
baseUri: https://blackrock.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: update-page
method: PUT
Retrieves research notes from Confluence, enriches with market data from Bloomberg, generates formatted reports via Power BI, and distributes to PMs via Microsoft Outlook.
naftiko: '0.5'
info:
label: Investment Research Distribution Pipeline
description: Retrieves research notes from Confluence, enriches with market data from Bloomberg, generates formatted reports via Power BI, and distributes to PMs via Microsoft Outlook.
tags:
- research
- distribution
- confluence
- bloomberg
- power-bi
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: research-distribution
port: 8080
tools:
- name: distribute-research
description: Retrieve research, enrich with data, format report, and distribute.
inputParameters:
- name: page_id
in: body
type: string
description: Confluence research page ID.
- name: dataset_id
in: body
type: string
description: Power BI dataset ID.
- name: group_id
in: body
type: string
description: Power BI workspace ID.
- name: pm_list
in: body
type: string
description: PM distribution list email.
steps:
- name: get-research
type: call
call: confluence.get-page
with:
page_id: '{{page_id}}'
- name: get-market-data
type: call
call: bloomberg.get-market-data
with:
tickers: '{{get-research.tickers}}'
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
- name: distribute
type: call
call: outlook.send-mail
with:
to: '{{pm_list}}'
subject: 'Research: {{get-research.title}}'
body: 'New research published: {{get-research.title}}. Key thesis: {{get-research.summary}}. Dashboard refreshed.'
consumes:
- type: http
namespace: confluence
baseUri: https://blackrock.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /content/{{page_id}}?expand=body.storage
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: market-data
path: /marketdata/snapshots
operations:
- name: get-market-data
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: 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
Pulls portfolio holdings from Aladdin, fetches benchmark data from MSCI, generates an attribution report in Power BI, and distributes it via Salesforce to relationship managers.
naftiko: '0.5'
info:
label: Quarterly Attribution Report Pipeline
description: Pulls portfolio holdings from Aladdin, fetches benchmark data from MSCI, generates an attribution report in Power BI, and distributes it via Salesforce to relationship managers.
tags:
- reporting
- aladdin
- msci
- power-bi
- salesforce
capability:
exposes:
- type: mcp
namespace: attribution-report
port: 8080
tools:
- name: generate-attribution-report
description: Generate and distribute a quarterly performance attribution report for a portfolio.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: benchmark_id
in: body
type: string
description: The MSCI benchmark index ID.
- name: quarter
in: body
type: string
description: Reporting quarter in YYYY-Q format.
steps:
- name: get-holdings
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-benchmark
type: call
call: msci.get-index-returns
with:
index_id: '{{benchmark_id}}'
period: '{{quarter}}'
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: attribution-{{portfolio_id}}
- name: notify-rms
type: call
call: salesforce.send-report-notification
with:
subject: Q{{quarter}} Attribution Report — Portfolio {{portfolio_id}}
body: 'Attribution report refreshed. Active return: {{get-benchmark.active_return}}. View in Power BI.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: msci
baseUri: https://api.msci.com/index/v1
authentication:
type: bearer
token: $secrets.msci_token
resources:
- name: returns
path: /indexes/{{index_id}}/returns
inputParameters:
- name: index_id
in: path
- name: period
in: query
operations:
- name: get-index-returns
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: salesforce
baseUri: https://blackrock.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: notifications
path: /sobjects/Task
operations:
- name: send-report-notification
method: POST
Launches a Google Cloud Dataflow streaming job for real-time trade event processing and posts job status to a Microsoft Teams channel.
naftiko: '0.5'
info:
label: Google Cloud Dataflow Job Launcher
description: Launches a Google Cloud Dataflow streaming job for real-time trade event processing and posts job status to a Microsoft Teams channel.
tags:
- data-engineering
- streaming
- google-cloud-dataflow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dataflow-ops
port: 8080
tools:
- name: launch-dataflow-job
description: Launch a Dataflow streaming job and notify the team.
inputParameters:
- name: template_name
in: body
type: string
description: Dataflow template name.
- name: project_id
in: body
type: string
description: GCP project ID.
- name: channel_id
in: body
type: string
description: Teams channel for notifications.
steps:
- name: launch-job
type: call
call: dataflow.launch-template
with:
project_id: '{{project_id}}'
template_name: '{{template_name}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: '{{channel_id}}'
text: 'Dataflow job launched: {{template_name}} in project {{project_id}}. Job ID: {{launch-job.job_id}}. State: {{launch-job.currentState}}.'
consumes:
- type: http
namespace: dataflow
baseUri: https://dataflow.googleapis.com/v1b3/projects
authentication:
type: bearer
token: $secrets.gcp_token
resources:
- name: templates
path: /{{project_id}}/templates:launch
inputParameters:
- name: project_id
in: path
operations:
- name: launch-template
method: POST
- 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
Triggers a Terraform plan for an Aladdin infrastructure module, posts the plan output to a Confluence review page, and creates a Jira approval ticket.
naftiko: '0.5'
info:
label: Terraform Infrastructure Plan Review
description: Triggers a Terraform plan for an Aladdin infrastructure module, posts the plan output to a Confluence review page, and creates a Jira approval ticket.
tags:
- infrastructure
- terraform
- confluence
- jira
capability:
exposes:
- type: mcp
namespace: infra-review
port: 8080
tools:
- name: plan-and-review
description: Run a Terraform plan and create review artifacts in Confluence and Jira.
inputParameters:
- name: workspace_id
in: body
type: string
description: Terraform Cloud workspace ID.
- name: confluence_space
in: body
type: string
description: Confluence space key for infrastructure reviews.
steps:
- name: create-run
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
is_destroy: false
message: Automated plan review
- name: create-review-page
type: call
call: confluence.create-page
with:
space_key: '{{confluence_space}}'
title: Terraform Plan Review - {{create-run.id}}
body: 'Plan output for workspace {{workspace_id}}: {{create-run.plan_summary}}'
- name: create-approval
type: call
call: jira.create-issue
with:
project: INFRA
summary: 'Approve Terraform plan: {{create-run.id}}'
description: 'Review page: {{create-review-page.url}}. Resources to add: {{create-run.resource_additions}}, to change: {{create-run.resource_changes}}, to destroy: {{create-run.resource_destructions}}.'
issue_type: Task
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: confluence
baseUri: https://blackrock.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: jira
baseUri: https://blackrock.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Retrieves current risk factor exposures from Snowflake, runs stress scenarios through Aladdin Risk, stores results in Azure Blob Storage, and notifies the risk team via Slack.
naftiko: '0.5'
info:
label: Risk Factor Stress Test Pipeline
description: Retrieves current risk factor exposures from Snowflake, runs stress scenarios through Aladdin Risk, stores results in Azure Blob Storage, and notifies the risk team via Slack.
tags:
- risk-management
- snowflake
- aladdin
- azure-blob-storage
- slack
capability:
exposes:
- type: mcp
namespace: stress-test
port: 8080
tools:
- name: run-stress-test
description: Execute a stress test scenario and distribute results.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio identifier.
- name: scenario_name
in: body
type: string
description: Name of the stress scenario to run.
steps:
- name: get-exposures
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM RISK.FACTOR_EXPOSURES WHERE portfolio_id = '{{portfolio_id}}'
- name: run-scenario
type: call
call: aladdin.run-stress-test
with:
portfolio_id: '{{portfolio_id}}'
scenario: '{{scenario_name}}'
- name: store-results
type: call
call: azure-blob.upload
with:
container: stress-test-results
blob_name: '{{portfolio_id}}/{{scenario_name}}/latest.json'
content: '{{run-scenario.results}}'
- name: notify-risk
type: call
call: slack.post-message
with:
channel: '#risk-management'
text: 'Stress test complete: {{scenario_name}} on {{portfolio_id}}. P&L impact: {{run-scenario.pnl_impact}}. Results: {{store-results.url}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: stress-tests
path: /risk/stress-tests
operations:
- name: run-stress-test
method: POST
- type: http
namespace: azure-blob
baseUri: https://blackrockdata.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: upload
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
Processes ETF creation/redemption baskets in Aladdin, updates NAV in SimCorp, settles with custodians via SWIFT, and notifies the ETF desk via Microsoft Teams.
naftiko: '0.5'
info:
label: ETF Creation Redemption Pipeline
description: Processes ETF creation/redemption baskets in Aladdin, updates NAV in SimCorp, settles with custodians via SWIFT, and notifies the ETF desk via Microsoft Teams.
tags:
- etf
- creation-redemption
- aladdin
- simcorp-dimension
- swift
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: etf-cr
port: 8080
tools:
- name: process-cr-basket
description: Process ETF creation/redemption basket across Aladdin, SimCorp, SWIFT, and Teams.
inputParameters:
- name: fund_id
in: body
type: string
description: The ETF fund identifier.
- name: cr_type
in: body
type: string
description: CREATE or REDEEM.
- name: units
in: body
type: integer
description: Number of creation/redemption units.
- name: etf_channel
in: body
type: string
description: Microsoft Teams ETF desk channel.
steps:
- name: generate-basket
type: call
call: aladdin.generate-cr-basket
with:
fund_id: '{{fund_id}}'
type: '{{cr_type}}'
units: '{{units}}'
- name: update-nav
type: call
call: simcorp.update-fund-nav
with:
fund_id: '{{fund_id}}'
units: '{{units}}'
cr_type: '{{cr_type}}'
- name: send-settlement
type: call
call: swift.send-message
with:
message_type: MT543
fund_id: '{{fund_id}}'
basket: '{{generate-basket.basket}}'
- name: notify-desk
type: call
call: msteams.post-channel-message
with:
channel_id: '{{etf_channel}}'
text: 'ETF {{cr_type}}: {{fund_id}}, {{units}} units. Basket value: ${{generate-basket.basket_value}}. SWIFT: {{send-settlement.reference}}. NAV updated.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: cr-baskets
path: /etf/{{fund_id}}/cr-basket
inputParameters:
- name: fund_id
in: path
operations:
- name: generate-cr-basket
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: funds
path: /funds/{{fund_id}}/nav
inputParameters:
- name: fund_id
in: path
operations:
- name: update-fund-nav
method: PATCH
- type: http
namespace: swift
baseUri: https://swift.blackrock.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages
operations:
- name: send-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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Pulls fundamental data from FactSet, retrieves recent Bloomberg news, sends both to OpenAI for an investment memo draft, and uploads the result to SharePoint.
naftiko: '0.5'
info:
label: OpenAI-Powered Investment Memo Drafter
description: Pulls fundamental data from FactSet, retrieves recent Bloomberg news, sends both to OpenAI for an investment memo draft, and uploads the result to SharePoint.
tags:
- research
- ai
- factset
- bloomberg-news
- openai
- sharepoint
capability:
exposes:
- type: mcp
namespace: ai-research
port: 8080
tools:
- name: draft-investment-memo
description: Generate an AI-drafted investment memo from market data and news.
inputParameters:
- name: ticker
in: body
type: string
description: Equity ticker symbol.
- name: analyst_name
in: body
type: string
description: Name of the requesting analyst.
steps:
- name: get-fundamentals
type: call
call: factset.get-fundamentals
with:
ticker: '{{ticker}}'
- name: get-news
type: call
call: bloomberg-news.get-articles
with:
query: '{{ticker}}'
limit: 10
- name: generate-memo
type: call
call: openai.create-completion
with:
model: gpt-4
prompt: 'Draft an investment memo for {{ticker}}. Fundamentals: {{get-fundamentals.data}}. Recent news: {{get-news.articles}}. Analyst: {{analyst_name}}.'
- name: upload-memo
type: call
call: sharepoint.upload-file
with:
site_id: investment-research
file_path: Memos/{{ticker}}_memo.md
content: '{{generate-memo.text}}'
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-fundamentals/v2
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: fundamentals
path: /fundamentals?ids={{ticker}}
inputParameters:
- name: ticker
in: query
operations:
- name: get-fundamentals
method: GET
- type: http
namespace: bloomberg-news
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_eap_token
resources:
- name: articles
path: /news?query={{query}}&limit={{limit}}
inputParameters:
- name: query
in: query
- name: limit
in: query
operations:
- name: get-articles
method: GET
- type: http
namespace: openai
baseUri: https://api.openai.com/v1
authentication:
type: bearer
token: $secrets.openai_api_key
resources:
- name: completions
path: /chat/completions
operations:
- name: create-completion
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
Pulls portfolio performance from Aladdin, generates attribution reports in Snowflake, creates presentation decks via Power BI, and distributes to relationship managers via Microsoft Outlook.
naftiko: '0.5'
info:
label: Client Quarterly Review Orchestrator
description: Pulls portfolio performance from Aladdin, generates attribution reports in Snowflake, creates presentation decks via Power BI, and distributes to relationship managers via Microsoft Outlook.
tags:
- client-reporting
- quarterly-review
- aladdin
- snowflake
- power-bi
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: client-review
port: 8080
tools:
- name: prepare-quarterly-review
description: Pull performance, generate attribution, create deck, and distribute.
inputParameters:
- name: client_id
in: body
type: string
description: The client identifier.
- name: dataset_id
in: body
type: string
description: Power BI dataset ID.
- name: group_id
in: body
type: string
description: Power BI workspace ID.
- name: rm_email
in: body
type: string
description: Relationship manager email.
steps:
- name: get-performance
type: call
call: aladdin.get-portfolio-performance
with:
client_id: '{{client_id}}'
- name: generate-attribution
type: call
call: snowflake.execute-statement
with:
statement: CALL GENERATE_ATTRIBUTION('{{client_id}}')
warehouse: ANALYTICS_WH
- name: refresh-deck
type: call
call: powerbi.refresh-dataset
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
- name: distribute-report
type: call
call: outlook.send-mail
with:
to: '{{rm_email}}'
subject: 'Q Review: {{client_id}} — {{get-performance.return_pct}}% return'
body: 'Portfolio return: {{get-performance.return_pct}}%. Benchmark: {{get-performance.benchmark_pct}}%. Alpha: {{generate-attribution.alpha_bps}}bps. Dashboard refreshed.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: performance
path: /clients/{{client_id}}/performance
inputParameters:
- name: client_id
in: path
operations:
- name: get-portfolio-performance
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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: 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
Calculates FX hedge requirements in Aladdin, submits trades via Tradeweb, updates positions in SimCorp, and notifies the FX desk via Slack.
naftiko: '0.5'
info:
label: FX Hedging Execution Pipeline
description: Calculates FX hedge requirements in Aladdin, submits trades via Tradeweb, updates positions in SimCorp, and notifies the FX desk via Slack.
tags:
- fx-hedging
- foreign-exchange
- aladdin
- tradeweb
- simcorp-dimension
- slack
capability:
exposes:
- type: mcp
namespace: fx-hedging
port: 8080
tools:
- name: execute-fx-hedge
description: Calculate FX hedges, execute trades, update positions, and notify.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: slack_channel
in: body
type: string
description: Slack channel for FX desk.
steps:
- name: calculate-hedges
type: call
call: aladdin.calculate-fx-hedges
with:
portfolio_id: '{{portfolio_id}}'
- name: execute-trades
type: call
call: tradeweb.submit-rfq
with:
currency_pairs: '{{calculate-hedges.currency_pairs}}'
notionals: '{{calculate-hedges.notionals}}'
- name: update-positions
type: call
call: simcorp.update-fx-positions
with:
portfolio_id: '{{portfolio_id}}'
trades: '{{execute-trades.executed_trades}}'
- name: notify-desk
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'FX hedge executed for {{portfolio_id}}: {{calculate-hedges.trade_count}} trades. Total notional: ${{calculate-hedges.total_notional}}M. Avg rate improvement: {{execute-trades.avg_improvement_bps}}bps.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: fx-hedges
path: /portfolios/{{portfolio_id}}/fx-hedges
inputParameters:
- name: portfolio_id
in: path
operations:
- name: calculate-fx-hedges
method: POST
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: rfq
path: /rfq
operations:
- name: submit-rfq
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: fx-positions
path: /portfolios/{{portfolio_id}}/fx-positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: update-fx-positions
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
Creates an OpsGenie alert for Aladdin platform and trading infrastructure issues.
naftiko: '0.5'
info:
label: OpsGenie Alert Creation
description: Creates an OpsGenie alert for Aladdin platform and trading infrastructure issues.
tags:
- alerting
- opsgenie
capability:
exposes:
- type: mcp
namespace: opsgenie
port: 8080
tools:
- name: create-alert
description: Create a new OpsGenie alert.
inputParameters:
- name: message
in: body
type: string
description: Alert message.
- name: priority
in: body
type: string
description: 'Priority level: P1 through P5.'
- name: team
in: body
type: string
description: Responder team name.
call: opsgenie.create-alert
with:
message: '{{message}}'
priority: '{{priority}}'
team: '{{team}}'
outputParameters:
- name: request_id
type: string
mapping: $.requestId
consumes:
- type: http
namespace: opsgenie
baseUri: https://api.opsgenie.com/v2
authentication:
type: apiKey
name: Authorization
in: header
value: GenieKey $secrets.opsgenie_api_key
resources:
- name: alerts
path: /alerts
operations:
- name: create-alert
method: POST
Retrieves the current on-call engineer for a given PagerDuty escalation policy, returning name, email, and escalation level.
naftiko: '0.5'
info:
label: PagerDuty On-Call Lookup
description: Retrieves the current on-call engineer for a given PagerDuty escalation policy, returning name, email, and escalation level.
tags:
- incident-management
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty-oncall
port: 8080
tools:
- name: get-oncall
description: Look up who is currently on call for a given PagerDuty escalation policy.
inputParameters:
- name: policy_id
in: body
type: string
description: The PagerDuty escalation policy ID.
call: pagerduty.get-oncalls
with:
escalation_policy_ids: '{{policy_id}}'
consumes:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: oncalls
path: /oncalls
inputParameters:
- name: escalation_policy_ids
in: query
operations:
- name: get-oncalls
method: GET
Scans Docker container images for vulnerabilities in investment platform deployment pipelines.
naftiko: '0.5'
info:
label: Docker Image Vulnerability Scan
description: Scans Docker container images for vulnerabilities in investment platform deployment pipelines.
tags:
- security
- snyk
capability:
exposes:
- type: mcp
namespace: container-security
port: 8080
tools:
- name: scan-image
description: Scan a Docker image for vulnerabilities.
inputParameters:
- name: image
in: body
type: string
description: The Docker image reference.
call: snyk.test-image
with:
image: '{{image}}'
outputParameters:
- name: vulnerability_count
type: integer
mapping: $.summary.totalVulnerabilities
- name: critical_count
type: integer
mapping: $.summary.criticalVulnerabilities
consumes:
- type: http
namespace: snyk
baseUri: https://api.snyk.io/v1
authentication:
type: bearer
token: $secrets.snyk_token
resources:
- name: test
path: /test/docker
operations:
- name: test-image
method: POST
Extracts Net Asset Value data from SimCorp Dimension, compares against Aladdin valuations, flags discrepancies in Snowflake, and alerts operations via Microsoft Teams.
naftiko: '0.5'
info:
label: SimCorp Dimension NAV Reconciliation
description: Extracts Net Asset Value data from SimCorp Dimension, compares against Aladdin valuations, flags discrepancies in Snowflake, and alerts operations via Microsoft Teams.
tags:
- fund-accounting
- reconciliation
- simcorp-dimension
- aladdin
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nav-recon
port: 8080
tools:
- name: reconcile-nav
description: Compare NAV between SimCorp and Aladdin, flag and alert on discrepancies.
inputParameters:
- name: fund_id
in: body
type: string
description: The fund identifier.
- name: valuation_date
in: body
type: string
description: Valuation date in YYYY-MM-DD format.
- name: ops_channel_id
in: body
type: string
description: Teams channel for operations alerts.
steps:
- name: get-simcorp-nav
type: call
call: simcorp.get-nav
with:
fund_id: '{{fund_id}}'
date: '{{valuation_date}}'
- name: get-aladdin-nav
type: call
call: aladdin.get-valuation
with:
portfolio_id: '{{fund_id}}'
date: '{{valuation_date}}'
- name: log-discrepancy
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO recon.nav_breaks VALUES ('{{fund_id}}', '{{valuation_date}}', '{{get-simcorp-nav.nav}}', '{{get-aladdin-nav.nav}}', CURRENT_TIMESTAMP())
- name: alert-ops
type: call
call: msteams.post-channel-message
with:
channel_id: '{{ops_channel_id}}'
text: 'NAV Recon for {{fund_id}} on {{valuation_date}}: SimCorp={{get-simcorp-nav.nav}}, Aladdin={{get-aladdin-nav.nav}}. Difference logged.'
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.blackrock.com/api/v1
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: nav
path: /funds/{{fund_id}}/nav?date={{date}}
inputParameters:
- name: fund_id
in: path
- name: date
in: query
operations:
- name: get-nav
method: GET
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: valuations
path: /portfolios/{{portfolio_id}}/valuation?date={{date}}
inputParameters:
- name: portfolio_id
in: path
- name: date
in: query
operations:
- name: get-valuation
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks the latest GitHub Actions workflow run status for a BlackRock repository and posts results to a Microsoft Teams development channel.
naftiko: '0.5'
info:
label: GitHub Actions CI Pipeline Status
description: Checks the latest GitHub Actions workflow run status for a BlackRock repository and posts results to a Microsoft Teams development channel.
tags:
- development
- ci-cd
- github-actions
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ci-status
port: 8080
tools:
- name: check-ci-and-notify
description: Fetch the latest CI run status from GitHub Actions and post to a Teams channel.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository name (org/repo format).
- name: channel_id
in: body
type: string
description: Teams channel ID for dev notifications.
steps:
- name: get-latest-run
type: call
call: github.get-workflow-runs
with:
repo: '{{repo}}'
- name: post-status
type: call
call: msteams.post-channel-message
with:
channel_id: '{{channel_id}}'
text: 'CI Status for {{repo}}: {{get-latest-run.workflow_runs[0].conclusion}} ({{get-latest-run.workflow_runs[0].name}}). Commit: {{get-latest-run.workflow_runs[0].head_sha}}.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com/repos
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-runs
path: /{{repo}}/actions/runs?per_page=1
inputParameters:
- name: repo
in: path
operations:
- name: get-workflow-runs
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
Receives an invoice from Coupa, validates the vendor in SAP, routes for approval in ServiceNow, and posts the journal entry to Oracle Hyperion upon approval.
naftiko: '0.5'
info:
label: Vendor Invoice Approval Pipeline
description: Receives an invoice from Coupa, validates the vendor in SAP, routes for approval in ServiceNow, and posts the journal entry to Oracle Hyperion upon approval.
tags:
- procurement
- coupa
- sap
- servicenow
- oracle-hyperion
capability:
exposes:
- type: mcp
namespace: invoice-approval
port: 8080
tools:
- name: process-invoice
description: Validate, approve, and post a vendor invoice across Coupa, SAP, ServiceNow, and Hyperion.
inputParameters:
- name: invoice_id
in: body
type: string
description: The Coupa invoice identifier.
steps:
- name: get-invoice
type: call
call: coupa.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: validate-vendor
type: call
call: sap.get-vendor
with:
vendor_id: '{{get-invoice.vendor_id}}'
- name: request-approval
type: call
call: servicenow.create-change-request
with:
short_description: 'Invoice approval: {{get-invoice.invoice_number}} — ${{get-invoice.total_amount}}'
description: 'Vendor: {{validate-vendor.vendor_name}}. Amount: ${{get-invoice.total_amount}}. Cost center: {{get-invoice.cost_center}}.'
category: finance
- name: post-journal
type: call
call: hyperion.post-entry
with:
account: '{{get-invoice.gl_account}}'
amount: '{{get-invoice.total_amount}}'
cost_center: '{{get-invoice.cost_center}}'
reference: '{{get-invoice.invoice_number}}'
consumes:
- type: http
namespace: coupa
baseUri: https://blackrock.coupahost.com/api
authentication:
type: bearer
token: $secrets.coupa_api_key
resources:
- name: invoices
path: /invoices/{{invoice_id}}
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
- type: http
namespace: sap
baseUri: https://blackrock-s4.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /API_BUSINESS_PARTNER/A_Supplier('{{vendor_id}}')
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: servicenow
baseUri: https://blackrock.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: hyperion
baseUri: https://hyperion.blackrock.com/HyperionPlanning/rest/v3
authentication:
type: basic
username: $secrets.hyperion_user
password: $secrets.hyperion_password
resources:
- name: journal-entries
path: /applications/FINPLAN/journals
operations:
- name: post-entry
method: POST
Retrieves the approval status of an expense report from SAP Concur for finance team tracking.
naftiko: '0.5'
info:
label: SAP Concur Expense Status Check
description: Retrieves the approval status of an expense report from SAP Concur for finance team tracking.
tags:
- expense-management
- sap-concur
capability:
exposes:
- type: mcp
namespace: concur
port: 8080
tools:
- name: get-expense-status
description: Check the status of an 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: status
type: string
mapping: $.ApprovalStatus
- name: total
type: number
mapping: $.Total
consumes:
- type: http
namespace: concur
baseUri: https://us2.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-report
method: GET
Rotates a secret in HashiCorp Vault, updates the corresponding Azure Key Vault entry, and logs the rotation event in ServiceNow for audit compliance.
naftiko: '0.5'
info:
label: HashiCorp Vault Secret Rotation
description: Rotates a secret in HashiCorp Vault, updates the corresponding Azure Key Vault entry, and logs the rotation event in ServiceNow for audit compliance.
tags:
- security
- secret-management
- hashicorp-vault
- azure-key-vault
- servicenow
capability:
exposes:
- type: mcp
namespace: secret-rotation
port: 8080
tools:
- name: rotate-secret
description: Rotate a secret across Vault and Azure Key Vault with audit logging.
inputParameters:
- name: secret_path
in: body
type: string
description: The Vault secret path.
- name: azure_secret_name
in: body
type: string
description: Corresponding Azure Key Vault secret name.
steps:
- name: rotate-vault-secret
type: call
call: vault.rotate-secret
with:
path: '{{secret_path}}'
- name: update-azure-kv
type: call
call: keyvault.set-secret
with:
secret_name: '{{azure_secret_name}}'
value: '{{rotate-vault-secret.new_value}}'
- name: log-rotation
type: call
call: servicenow.create-incident
with:
short_description: 'Secret rotation: {{secret_path}}'
category: security_audit
assigned_group: Security_Ops
description: 'Secret {{secret_path}} rotated. Azure KV {{azure_secret_name}} updated. Version: {{update-azure-kv.version}}.'
consumes:
- type: http
namespace: vault
baseUri: https://vault.blackrock.com/v1
authentication:
type: bearer
token: $secrets.vault_token
resources:
- name: secrets
path: /secret/data/{{path}}
inputParameters:
- name: path
in: path
operations:
- name: rotate-secret
method: POST
- type: http
namespace: keyvault
baseUri: https://blackrock-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: set-secret
method: PUT
- type: http
namespace: servicenow
baseUri: https://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Invokes an AWS Lambda function for serverless data processing in investment analytics pipelines.
naftiko: '0.5'
info:
label: AWS Lambda Function Invocation
description: Invokes an AWS Lambda function for serverless data processing in investment analytics pipelines.
tags:
- serverless
- aws-lambda
capability:
exposes:
- type: mcp
namespace: aws-lambda
port: 8080
tools:
- name: invoke-function
description: Invoke an AWS Lambda function by name.
inputParameters:
- name: function_name
in: body
type: string
description: The Lambda function name or ARN.
- name: payload
in: body
type: string
description: JSON payload to pass to the function.
call: lambda.invoke
with:
function_name: '{{function_name}}'
payload: '{{payload}}'
outputParameters:
- name: status_code
type: integer
mapping: $.StatusCode
- name: response_payload
type: string
mapping: $.Payload
consumes:
- type: http
namespace: lambda
baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
authentication:
type: aws-sigv4
accessKeyId: $secrets.aws_access_key
secretAccessKey: $secrets.aws_secret_key
resources:
- name: functions
path: /functions/{{function_name}}/invocations
inputParameters:
- name: function_name
in: path
operations:
- name: invoke
method: POST
Provisions a new fund by creating the Aladdin portfolio, registering in SimCorp Dimension, setting up the Confluence documentation space, and notifying stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: New Fund Launch Orchestrator
description: Provisions a new fund by creating the Aladdin portfolio, registering in SimCorp Dimension, setting up the Confluence documentation space, and notifying stakeholders via Microsoft Teams.
tags:
- fund-operations
- aladdin
- simcorp-dimension
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fund-launch
port: 8080
tools:
- name: launch-fund
description: Orchestrate new fund setup across Aladdin, SimCorp, Confluence, and Teams.
inputParameters:
- name: fund_name
in: body
type: string
description: Name of the new fund.
- name: fund_type
in: body
type: string
description: Fund type (ETF, mutual_fund, alternatives).
- name: pm_email
in: body
type: string
description: Portfolio manager email.
steps:
- name: create-portfolio
type: call
call: aladdin.create-portfolio
with:
name: '{{fund_name}}'
type: '{{fund_type}}'
- name: register-fund
type: call
call: simcorp.create-portfolio
with:
portfolio_name: '{{fund_name}}'
portfolio_ref: '{{create-portfolio.portfolio_id}}'
- name: create-docs-space
type: call
call: confluence.create-space
with:
key: FUND-{{create-portfolio.portfolio_id}}
name: '{{fund_name}} Documentation'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{pm_email}}'
text: 'Fund {{fund_name}} launched. Aladdin: {{create-portfolio.portfolio_id}}. SimCorp: {{register-fund.portfolio_code}}. Docs: {{create-docs-space.url}}.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: portfolios
path: /portfolios
operations:
- name: create-portfolio
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: portfolios
path: /portfolios
operations:
- name: create-portfolio
method: POST
- type: http
namespace: confluence
baseUri: https://blackrock.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: spaces
path: /space
operations:
- name: create-space
method: POST
- 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 user profile details from Azure Active Directory by UPN or object ID, returning display name, department, and manager chain.
naftiko: '0.5'
info:
label: Azure AD User Lookup
description: Retrieves user profile details from Azure Active Directory by UPN or object ID, returning display name, department, and manager chain.
tags:
- identity
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: azure-ad
port: 8080
tools:
- name: get-user-profile
description: Look up an Azure AD user by UPN or object ID and return profile attributes.
inputParameters:
- name: user_id
in: body
type: string
description: The user principal name or Azure AD object ID.
call: azure-ad.get-user
with:
user_id: '{{user_id}}'
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/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: get-user
method: GET
Queries Elasticsearch for trade execution logs, returning matching records for compliance investigation and audit.
naftiko: '0.5'
info:
label: Elastic Search Trade Log Query
description: Queries Elasticsearch for trade execution logs, returning matching records for compliance investigation and audit.
tags:
- search
- elasticsearch
capability:
exposes:
- type: mcp
namespace: elasticsearch
port: 8080
tools:
- name: search-trade-logs
description: Search trade execution logs in Elasticsearch.
inputParameters:
- name: index
in: body
type: string
description: The Elasticsearch index name.
- name: query
in: body
type: string
description: The search query string.
call: elasticsearch.search
with:
index: '{{index}}'
q: '{{query}}'
outputParameters:
- name: total_hits
type: integer
mapping: $.hits.total.value
- name: results
type: array
mapping: $.hits.hits
consumes:
- type: http
namespace: elasticsearch
baseUri: https://elasticsearch.blackrock.com:9200
authentication:
type: basic
username: $secrets.elasticsearch_user
password: $secrets.elasticsearch_password
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: GET
When a Docker image vulnerability is found, creates a Jira ticket for the owning team, posts to the security Slack channel, and triggers a Terraform plan to rotate affected infrastructure.
naftiko: '0.5'
info:
label: Security Vulnerability Remediation Pipeline
description: When a Docker image vulnerability is found, creates a Jira ticket for the owning team, posts to the security Slack channel, and triggers a Terraform plan to rotate affected infrastructure.
tags:
- security
- docker
- jira
- slack
- terraform
capability:
exposes:
- type: mcp
namespace: vuln-remediation
port: 8080
tools:
- name: remediate-vulnerability
description: Track and remediate a container vulnerability across Jira, Slack, and Terraform.
inputParameters:
- name: image_name
in: body
type: string
description: The Docker image name with tag.
- name: cve_id
in: body
type: string
description: The CVE identifier.
- name: severity
in: body
type: string
description: Severity level (CRITICAL, HIGH, MEDIUM, LOW).
- name: owning_team
in: body
type: string
description: Jira project key for the owning team.
steps:
- name: create-ticket
type: call
call: jira.create-issue
with:
project: '{{owning_team}}'
summary: '{{severity}} vulnerability {{cve_id}} in {{image_name}}'
description: 'CVE: {{cve_id}}. Image: {{image_name}}. Severity: {{severity}}. Remediate immediately.'
issue_type: Bug
priority: '{{severity}}'
- name: notify-security
type: call
call: slack.post-message
with:
channel: '#security-alerts'
text: '{{severity}} vulnerability {{cve_id}} found in {{image_name}}. Jira: {{create-ticket.key}}. Assigned to {{owning_team}}.'
- name: trigger-rotation
type: call
call: terraform.create-run
with:
workspace_id: ws-infra-rotation
message: Rotate infrastructure for {{cve_id}} remediation
consumes:
- type: http
namespace: jira
baseUri: https://blackrock.atlassian.net/rest/api/3
authentication:
type: 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: 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
Queries Azure cost data, identifies underutilized resources via Datadog metrics, creates optimization recommendations in Jira, and posts a summary to the FinOps Slack channel.
naftiko: '0.5'
info:
label: Infrastructure Cost Optimization Workflow
description: Queries Azure cost data, identifies underutilized resources via Datadog metrics, creates optimization recommendations in Jira, and posts a summary to the FinOps Slack channel.
tags:
- finops
- microsoft-azure
- datadog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: cost-optimization
port: 8080
tools:
- name: optimize-costs
description: Identify and track cost optimization opportunities across Azure infrastructure.
inputParameters:
- name: subscription_id
in: body
type: string
description: Azure subscription identifier.
- name: threshold_percent
in: body
type: integer
description: CPU utilization threshold below which resources are flagged.
steps:
- name: get-costs
type: call
call: azure.get-cost-details
with:
subscription_id: '{{subscription_id}}'
- name: get-utilization
type: call
call: datadog.query-metrics
with:
query: avg:azure.vm.percentage_cpu{subscription_id:{{subscription_id}}} by {resource_name}
period: 7d
- name: create-recommendations
type: call
call: jira.create-issue
with:
project: FINOPS
summary: 'Cost optimization: {{subscription_id}} — ${{get-costs.total_cost}} monthly'
description: 'Underutilized resources identified. Current spend: ${{get-costs.total_cost}}. Resources below {{threshold_percent}}% CPU: {{get-utilization.low_util_count}}.'
issue_type: Story
- name: post-summary
type: call
call: slack.post-message
with:
channel: '#finops'
text: 'Cost optimization scan complete for {{subscription_id}}. Monthly spend: ${{get-costs.total_cost}}. Recommendations: {{create-recommendations.key}}.'
consumes:
- type: http
namespace: azure
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: costs
path: /subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/query
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-cost-details
method: POST
- 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
- name: period
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: jira
baseUri: https://blackrock.atlassian.net/rest/api/3
authentication:
type: 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
Screens transactions against sanctions lists in Snowflake, generates risk scores via Azure ML, creates compliance cases in ServiceNow, and alerts the AML team via PagerDuty.
naftiko: '0.5'
info:
label: AML Transaction Screening Pipeline
description: Screens transactions against sanctions lists in Snowflake, generates risk scores via Azure ML, creates compliance cases in ServiceNow, and alerts the AML team via PagerDuty.
tags:
- aml
- compliance
- snowflake
- azure-machine-learning
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: aml-screening
port: 8080
tools:
- name: screen-transactions
description: Screen transactions, score risk, create cases, and alert AML team.
inputParameters:
- name: batch_id
in: body
type: string
description: The transaction batch identifier.
- name: pagerduty_service
in: body
type: string
description: PagerDuty service for AML alerts.
steps:
- name: screen-sanctions
type: call
call: snowflake.execute-statement
with:
statement: CALL SCREEN_SANCTIONS('{{batch_id}}')
warehouse: COMPLIANCE_WH
- name: score-risk
type: call
call: azureml.score
with:
model_type: aml_risk
data: '{{screen-sanctions.flagged_transactions}}'
- name: create-case
type: call
call: servicenow.create-record
with:
table: u_aml_case
batch_id: '{{batch_id}}'
flagged_count: '{{score-risk.high_risk_count}}'
total_screened: '{{screen-sanctions.total_screened}}'
- name: alert-aml
type: call
call: pagerduty.create-incident
with:
service_id: '{{pagerduty_service}}'
title: 'AML: {{score-risk.high_risk_count}} high-risk transactions in batch {{batch_id}}'
urgency: high
consumes:
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: azureml
baseUri: https://blackrock-ml.eastus.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: scoring
path: /score
operations:
- name: score
method: POST
- type: http
namespace: servicenow
baseUri: https://blackrock.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Pulls performance attribution from Aladdin, enriches with Bloomberg benchmark data, stores in Snowflake, uploads to SharePoint, and emails the report via Microsoft Outlook.
naftiko: '0.5'
info:
label: Multi-Asset Portfolio Attribution Report
description: Pulls performance attribution from Aladdin, enriches with Bloomberg benchmark data, stores in Snowflake, uploads to SharePoint, and emails the report via Microsoft Outlook.
tags:
- portfolio-management
- attribution
- aladdin
- bloomberg-enterprise-data
- snowflake
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: attribution-report
port: 8080
tools:
- name: generate-attribution-report
description: Build and distribute a multi-asset performance attribution report.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: benchmark_id
in: body
type: string
description: Bloomberg benchmark identifier.
- name: period
in: body
type: string
description: Reporting period (e.g. 2026-Q1).
- name: recipient_email
in: body
type: string
description: Email address for report delivery.
steps:
- name: get-attribution
type: call
call: aladdin.get-attribution
with:
portfolio_id: '{{portfolio_id}}'
period: '{{period}}'
- name: get-benchmark
type: call
call: bloomberg.get-snapshot
with:
security_id: '{{benchmark_id}}'
- name: store-attribution
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO performance.attribution VALUES ('{{portfolio_id}}', '{{period}}', '{{get-attribution.total_return}}', '{{get-benchmark.price}}')
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: performance-reports
file_path: Attribution/{{portfolio_id}}_{{period}}.pdf
content: '{{get-attribution.report_data}}'
- name: email-report
type: call
call: outlook.send-mail
with:
to: '{{recipient_email}}'
subject: Attribution Report - Portfolio {{portfolio_id}} - {{period}}
body: 'Please find attached the performance attribution report. Total return: {{get-attribution.total_return}}. Benchmark: {{get-benchmark.price}}.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: attribution
path: /portfolios/{{portfolio_id}}/attribution
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-attribution
method: GET
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_eap_token
resources:
- name: snapshots
path: /snapshots/{{security_id}}
inputParameters:
- name: security_id
in: path
operations:
- name: get-snapshot
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.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: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0/me
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /sendMail
operations:
- name: send-mail
method: POST
Retrieves security reference data from Refinitiv Eikon for instrument identification and classification.
naftiko: '0.5'
info:
label: Refinitiv Eikon Security Lookup
description: Retrieves security reference data from Refinitiv Eikon for instrument identification and classification.
tags:
- reference-data
- refinitiv
capability:
exposes:
- type: mcp
namespace: refinitiv
port: 8080
tools:
- name: lookup-security
description: Look up security reference data from Refinitiv.
inputParameters:
- name: ric
in: body
type: string
description: The Reuters Instrument Code.
call: refinitiv.get-instrument
with:
ric: '{{ric}}'
outputParameters:
- name: name
type: string
mapping: $.instrument.name
- name: isin
type: string
mapping: $.instrument.isin
- name: currency
type: string
mapping: $.instrument.currency
consumes:
- type: http
namespace: refinitiv
baseUri: https://api.refinitiv.com/data/v1
authentication:
type: bearer
token: $secrets.refinitiv_token
resources:
- name: instruments
path: /instruments/{{ric}}
inputParameters:
- name: ric
in: path
operations:
- name: get-instrument
method: GET
Executes a SQL query against BlackRock's Snowflake data warehouse to retrieve computed risk factor exposures for a given portfolio.
naftiko: '0.5'
info:
label: Snowflake Risk Factor Query
description: Executes a SQL query against BlackRock's Snowflake data warehouse to retrieve computed risk factor exposures for a given portfolio.
tags:
- risk-analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: risk-warehouse
port: 8080
tools:
- name: query-risk-factors
description: Run a risk factor exposure query against Snowflake for a specified portfolio and date.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The internal portfolio identifier.
- name: as_of_date
in: body
type: string
description: Risk calculation date in YYYY-MM-DD format.
call: snowflake.execute-query
with:
statement: SELECT factor_name, exposure, contribution FROM risk.factor_exposures WHERE portfolio_id = '{{portfolio_id}}' AND as_of_date = '{{as_of_date}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves cached market data from Redis for low-latency price lookups in trading systems.
naftiko: '0.5'
info:
label: Redis Cache Market Data Lookup
description: Retrieves cached market data from Redis for low-latency price lookups in trading systems.
tags:
- caching
- redis
capability:
exposes:
- type: mcp
namespace: redis-cache
port: 8080
tools:
- name: get-value
description: Look up a cached market data value in Redis by key.
inputParameters:
- name: key
in: body
type: string
description: The Redis key to retrieve.
call: redis.get-key
with:
key: '{{key}}'
outputParameters:
- name: value
type: string
mapping: $.value
- name: ttl
type: integer
mapping: $.ttl
consumes:
- type: http
namespace: redis
baseUri: https://redis.blackrock.com:6380
authentication:
type: apiKey
name: Authorization
in: header
value: $secrets.redis_token
resources:
- name: keys
path: /get/{{key}}
inputParameters:
- name: key
in: path
operations:
- name: get-key
method: GET
Posts a message to a Slack channel for investment team communications and automated trading notifications.
naftiko: '0.5'
info:
label: Slack Channel Message
description: Posts a message to a Slack channel for investment team communications and automated trading notifications.
tags:
- messaging
- slack
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: post-message
description: Post a message to a Slack channel.
inputParameters:
- name: channel
in: body
type: string
description: The Slack channel ID.
- name: text
in: body
type: string
description: Message text.
call: slack.post-message
with:
channel: '{{channel}}'
text: '{{text}}'
outputParameters:
- name: ts
type: string
mapping: $.ts
- name: ok
type: boolean
mapping: $.ok
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Pulls security reference data from Refinitiv, validates against Aladdin security master, and updates discrepancies in Snowflake.
naftiko: '0.5'
info:
label: Refinitiv Reference Data Sync
description: Pulls security reference data from Refinitiv, validates against Aladdin security master, and updates discrepancies in Snowflake.
tags:
- market-data
- reference-data
- refinitiv
- aladdin
- snowflake
capability:
exposes:
- type: mcp
namespace: ref-data-sync
port: 8080
tools:
- name: sync-reference-data
description: Compare Refinitiv and Aladdin security reference data and log differences.
inputParameters:
- name: ric
in: body
type: string
description: Reuters Instrument Code.
steps:
- name: get-refinitiv-data
type: call
call: refinitiv.get-security
with:
ric: '{{ric}}'
- name: get-aladdin-security
type: call
call: aladdin.get-security
with:
identifier: '{{ric}}'
- name: log-differences
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO reference_data.sync_log VALUES ('{{ric}}', '{{get-refinitiv-data.name}}', '{{get-aladdin-security.name}}', CURRENT_TIMESTAMP())
consumes:
- type: http
namespace: refinitiv
baseUri: https://api.refinitiv.com/data/pricing/v1
authentication:
type: bearer
token: $secrets.refinitiv_token
resources:
- name: instruments
path: /instruments/{{ric}}
inputParameters:
- name: ric
in: path
operations:
- name: get-security
method: GET
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: securities
path: /securities/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-security
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Monitors Bloomberg market data for anomalies, runs detection models in Azure Databricks, logs alerts in Splunk, and notifies the quant team via Slack.
naftiko: '0.5'
info:
label: Market Data Anomaly Detection Pipeline
description: Monitors Bloomberg market data for anomalies, runs detection models in Azure Databricks, logs alerts in Splunk, and notifies the quant team via Slack.
tags:
- market-data
- bloomberg
- azure-databricks
- splunk
- slack
capability:
exposes:
- type: mcp
namespace: anomaly-detection
port: 8080
tools:
- name: detect-anomalies
description: Run market data anomaly detection and alert the quant team.
inputParameters:
- name: asset_class
in: body
type: string
description: Asset class to monitor (equities, fixed_income, fx).
- name: lookback_hours
in: body
type: integer
description: Hours of data to analyze.
steps:
- name: get-market-data
type: call
call: bloomberg.get-bulk-data
with:
asset_class: '{{asset_class}}'
lookback: '{{lookback_hours}}h'
- name: run-detection
type: call
call: databricks.submit-job
with:
job_name: anomaly-detection-{{asset_class}}
parameters: '{{get-market-data.snapshot_id}}'
- name: log-alerts
type: call
call: splunk.create-event
with:
index: market-data-anomalies
source: anomaly-detector
event: '{{run-detection.anomalies}}'
- name: notify-quants
type: call
call: slack.post-message
with:
channel: '#quant-alerts'
text: Anomaly detection complete for {{asset_class}}. Found {{run-detection.anomaly_count}} anomalies. Review in Splunk.
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: bulk-data
path: /snapshots
inputParameters:
- name: asset_class
in: query
- name: lookback
in: query
operations:
- name: get-bulk-data
method: GET
- type: http
namespace: databricks
baseUri: https://adb-blackrock.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: submit-job
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.blackrock.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: events
path: /receivers/simple
operations:
- name: create-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
Packages and deploys a Helm chart to Azure Kubernetes Service, runs post-deployment health checks via Datadog, and updates the Jira deployment ticket.
naftiko: '0.5'
info:
label: Helm Chart Deployment Pipeline
description: Packages and deploys a Helm chart to Azure Kubernetes Service, runs post-deployment health checks via Datadog, and updates the Jira deployment ticket.
tags:
- devops
- helm
- azure-kubernetes-service
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: helm-deploy
port: 8080
tools:
- name: deploy-helm-chart
description: Deploy a Helm chart to AKS with health verification and ticket update.
inputParameters:
- name: chart_name
in: body
type: string
description: Helm chart name.
- name: chart_version
in: body
type: string
description: Chart version to deploy.
- name: namespace
in: body
type: string
description: Target Kubernetes namespace.
- name: jira_ticket
in: body
type: string
description: Deployment Jira ticket key.
steps:
- name: deploy-chart
type: call
call: aks.deploy-helm
with:
chart_name: '{{chart_name}}'
chart_version: '{{chart_version}}'
namespace: '{{namespace}}'
- name: health-check
type: call
call: datadog.get-monitors
with:
tags: service:{{chart_name}},env:{{namespace}}
- name: update-ticket
type: call
call: jira.add-comment
with:
issue_key: '{{jira_ticket}}'
body: 'Deployed {{chart_name}}:{{chart_version}} to {{namespace}}. Health: {{health-check.overall_state}}.'
consumes:
- type: http
namespace: aks
baseUri: https://blackrock-aks.hcp.eastus.azmk8s.io/apis/helm/v1
authentication:
type: bearer
token: $secrets.aks_token
resources:
- name: releases
path: /namespaces/{{namespace}}/releases
inputParameters:
- name: namespace
in: path
operations:
- name: deploy-helm
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: monitors
path: /monitor?tags={{tags}}
inputParameters:
- name: tags
in: query
operations:
- name: get-monitors
method: GET
- type: http
namespace: jira
baseUri: https://blackrock.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
Retrieves credit spread data for a corporate bond from Refinitiv, returning z-spread, OAS, and benchmark spread values.
naftiko: '0.5'
info:
label: Refinitiv Credit Spread Lookup
description: Retrieves credit spread data for a corporate bond from Refinitiv, returning z-spread, OAS, and benchmark spread values.
tags:
- fixed-income
- refinitiv
capability:
exposes:
- type: mcp
namespace: refinitiv-credit
port: 8080
tools:
- name: get-credit-spread
description: Fetch credit spread metrics for a bond by its ISIN from Refinitiv.
inputParameters:
- name: isin
in: body
type: string
description: The ISIN of the bond instrument.
call: refinitiv.get-spreads
with:
isin: '{{isin}}'
consumes:
- type: http
namespace: refinitiv
baseUri: https://api.refinitiv.com/data/pricing/v1
authentication:
type: bearer
token: $secrets.refinitiv_token
resources:
- name: spreads
path: /instruments/{{isin}}/spreads
inputParameters:
- name: isin
in: path
operations:
- name: get-spreads
method: GET
Fetches frequently accessed securities from Snowflake, pulls latest prices from Bloomberg, and pre-loads them into Redis for low-latency market data access.
naftiko: '0.5'
info:
label: Redis Cache Warm-Up for Market Data
description: Fetches frequently accessed securities from Snowflake, pulls latest prices from Bloomberg, and pre-loads them into Redis for low-latency market data access.
tags:
- performance
- caching
- snowflake
- bloomberg-enterprise-data
- redis
capability:
exposes:
- type: mcp
namespace: cache-warmup
port: 8080
tools:
- name: warm-market-data-cache
description: Pre-load top securities pricing into Redis from Bloomberg via Snowflake universe list.
inputParameters:
- name: universe_name
in: body
type: string
description: Security universe name in Snowflake.
steps:
- name: get-universe
type: call
call: snowflake.execute-query
with:
statement: SELECT security_id FROM market_data.universes WHERE universe_name = '{{universe_name}}' LIMIT 500
- name: fetch-prices
type: call
call: bloomberg.get-bulk-snapshots
with:
security_ids: '{{get-universe.data}}'
- name: load-cache
type: call
call: redis.mset
with:
key_prefix: 'mktdata:'
data: '{{fetch-prices.snapshots}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://blackrock.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: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_eap_token
resources:
- name: bulk-snapshots
path: /snapshots/bulk
operations:
- name: get-bulk-snapshots
method: POST
- type: http
namespace: redis
baseUri: https://redis-api.blackrock.com/v1
authentication:
type: bearer
token: $secrets.redis_token
resources:
- name: commands
path: /mset
operations:
- name: mset
method: POST
Checks the status of an Azure Data Factory pipeline run and sends a Grafana annotation plus a Microsoft Teams notification on completion.
naftiko: '0.5'
info:
label: Azure Data Factory Pipeline Monitor
description: Checks the status of an Azure Data Factory pipeline run and sends a Grafana annotation plus a Microsoft Teams notification on completion.
tags:
- data-engineering
- azure-data-factory
- grafana
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adf-monitor
port: 8080
tools:
- name: monitor-adf-pipeline
description: Check ADF pipeline run status and notify on completion.
inputParameters:
- name: factory_name
in: body
type: string
description: Azure Data Factory name.
- name: run_id
in: body
type: string
description: Pipeline run identifier.
- name: channel_id
in: body
type: string
description: Teams channel for data engineering alerts.
steps:
- name: get-run-status
type: call
call: adf.get-pipeline-run
with:
factory_name: '{{factory_name}}'
run_id: '{{run_id}}'
- name: annotate-grafana
type: call
call: grafana.create-annotation
with:
dashboard_id: data-pipelines
text: 'ADF pipeline {{factory_name}}/{{run_id}}: {{get-run-status.status}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: '{{channel_id}}'
text: 'ADF Pipeline {{factory_name}} run {{run_id}}: {{get-run-status.status}}. Duration: {{get-run-status.duration_in_ms}}ms.'
consumes:
- type: http
namespace: adf
baseUri: https://management.azure.com/subscriptions/blackrock-sub/resourceGroups/data-rg/providers/Microsoft.DataFactory/factories
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: pipeline-runs
path: /{{factory_name}}/pipelineruns/{{run_id}}?api-version=2018-06-01
inputParameters:
- name: factory_name
in: path
- name: run_id
in: path
operations:
- name: get-pipeline-run
method: GET
- type: http
namespace: grafana
baseUri: https://grafana.blackrock.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: annotations
path: /annotations
operations:
- name: create-annotation
method: POST
- 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
Scans a Docker container image for vulnerabilities using SonarQube, deploys to Azure Kubernetes Service if clean, and posts the deployment status to a Jira release ticket.
naftiko: '0.5'
info:
label: Docker Container Image Scan and Deploy
description: Scans a Docker container image for vulnerabilities using SonarQube, deploys to Azure Kubernetes Service if clean, and posts the deployment status to a Jira release ticket.
tags:
- devops
- security
- docker
- sonarqube
- azure-kubernetes-service
- jira
capability:
exposes:
- type: mcp
namespace: container-deploy
port: 8080
tools:
- name: scan-and-deploy
description: Scan a container image and deploy to AKS if it passes security checks.
inputParameters:
- name: image_uri
in: body
type: string
description: Full Docker image URI with tag.
- name: namespace
in: body
type: string
description: Target Kubernetes namespace.
- name: deployment
in: body
type: string
description: Deployment name to update.
- name: jira_ticket
in: body
type: string
description: Jira release ticket key.
steps:
- name: scan-image
type: call
call: sonarqube.scan-project
with:
project_key: '{{deployment}}'
- name: update-deployment
type: call
call: aks.update-image
with:
namespace: '{{namespace}}'
deployment: '{{deployment}}'
image: '{{image_uri}}'
- name: update-ticket
type: call
call: jira.add-comment
with:
issue_key: '{{jira_ticket}}'
body: 'Image {{image_uri}} deployed to {{namespace}}/{{deployment}}. Scan status: {{scan-image.status}}.'
consumes:
- type: http
namespace: sonarqube
baseUri: https://sonarqube.blackrock.com/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: projects
path: /qualitygates/project_status?projectKey={{project_key}}
inputParameters:
- name: project_key
in: query
operations:
- name: scan-project
method: GET
- type: http
namespace: aks
baseUri: https://blackrock-aks.hcp.eastus.azmk8s.io/apis/apps/v1
authentication:
type: bearer
token: $secrets.aks_token
resources:
- name: deployments
path: /namespaces/{{namespace}}/deployments/{{deployment}}
inputParameters:
- name: namespace
in: path
- name: deployment
in: path
operations:
- name: update-image
method: PATCH
- type: http
namespace: jira
baseUri: https://blackrock.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
Retrieves bond pricing from Bloomberg, computes duration and convexity analytics via Aladdin, stores results in Snowflake, and refreshes the Tableau fixed income dashboard.
naftiko: '0.5'
info:
label: Fixed Income Pricing and Analytics Pipeline
description: Retrieves bond pricing from Bloomberg, computes duration and convexity analytics via Aladdin, stores results in Snowflake, and refreshes the Tableau fixed income dashboard.
tags:
- fixed-income
- analytics
- bloomberg-enterprise-data
- aladdin
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: fi-analytics
port: 8080
tools:
- name: run-fi-analytics
description: Pull bond pricing, compute analytics, store, and refresh dashboards.
inputParameters:
- name: security_id
in: body
type: string
description: Bloomberg bond identifier.
- name: portfolio_id
in: body
type: string
description: Aladdin portfolio for analytics context.
- name: tableau_datasource_id
in: body
type: string
description: Tableau datasource LUID to refresh.
steps:
- name: get-bond-price
type: call
call: bloomberg.get-snapshot
with:
security_id: '{{security_id}}'
- name: compute-analytics
type: call
call: aladdin.compute-fi-analytics
with:
security_id: '{{security_id}}'
portfolio_id: '{{portfolio_id}}'
price: '{{get-bond-price.price}}'
- name: store-analytics
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO fixed_income.analytics VALUES ('{{security_id}}', '{{compute-analytics.duration}}', '{{compute-analytics.convexity}}', CURRENT_TIMESTAMP())
- name: refresh-dashboard
type: call
call: tableau.refresh-datasource
with:
datasource_id: '{{tableau_datasource_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_eap_token
resources:
- name: snapshots
path: /snapshots/{{security_id}}
inputParameters:
- name: security_id
in: path
operations:
- name: get-snapshot
method: GET
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: fi-analytics
path: /analytics/fixed-income
operations:
- name: compute-fi-analytics
method: POST
- type: http
namespace: snowflake
baseUri: https://blackrock.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: tableau
baseUri: https://tableau.blackrock.com/api/3.21
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/default/datasources/{{datasource_id}}/refresh
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-datasource
method: POST
Uploads investment reports and portfolio data to Azure Blob Storage for archival and distribution.
naftiko: '0.5'
info:
label: Azure Blob Storage Upload
description: Uploads investment reports and portfolio data to Azure Blob Storage for archival and distribution.
tags:
- cloud-storage
- azure-blob-storage
capability:
exposes:
- type: mcp
namespace: azure-blob
port: 8080
tools:
- name: upload-blob
description: Upload a file to an Azure Blob Storage container.
inputParameters:
- name: container
in: body
type: string
description: The Azure Blob container name.
- name: blob_name
in: body
type: string
description: The destination blob name.
call: azureblob.put-blob
with:
container: '{{container}}'
blob_name: '{{blob_name}}'
outputParameters:
- name: url
type: string
mapping: $.url
- name: etag
type: string
mapping: $.etag
consumes:
- type: http
namespace: azureblob
baseUri: https://blackrock.blob.core.windows.net
authentication:
type: apiKey
name: x-ms-access-key
in: header
value: $secrets.azure_storage_key
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: put-blob
method: PUT
Triggers an Alteryx analytics workflow for portfolio risk decomposition, waits for completion, and stores the output in Snowflake.
naftiko: '0.5'
info:
label: Alteryx Analytics Workflow Trigger
description: Triggers an Alteryx analytics workflow for portfolio risk decomposition, waits for completion, and stores the output in Snowflake.
tags:
- analytics
- alteryx
- snowflake
capability:
exposes:
- type: mcp
namespace: alteryx-analytics
port: 8080
tools:
- name: run-alteryx-workflow
description: Trigger an Alteryx workflow and persist results to Snowflake.
inputParameters:
- name: workflow_id
in: body
type: string
description: The Alteryx Server workflow ID.
- name: portfolio_id
in: body
type: string
description: Portfolio identifier to pass as workflow parameter.
steps:
- name: trigger-workflow
type: call
call: alteryx.run-workflow
with:
workflow_id: '{{workflow_id}}'
parameters: '{"portfolio_id": "{{portfolio_id}}"}'
- name: store-output
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO analytics.alteryx_results SELECT * FROM TABLE(RESULT_SCAN('{{trigger-workflow.job_id}}'))
consumes:
- type: http
namespace: alteryx
baseUri: https://alteryx.blackrock.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://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Checks API gateway health via Datadog, scales Kubernetes pods if latency exceeds thresholds, logs the scaling event in ServiceNow, and notifies the platform team via Teams.
naftiko: '0.5'
info:
label: API Gateway Health and Scaling Pipeline
description: Checks API gateway health via Datadog, scales Kubernetes pods if latency exceeds thresholds, logs the scaling event in ServiceNow, and notifies the platform team via Teams.
tags:
- platform
- datadog
- kubernetes
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: gateway-scaling
port: 8080
tools:
- name: check-and-scale-gateway
description: Monitor API gateway health and auto-scale if needed.
inputParameters:
- name: gateway_service
in: body
type: string
description: The API gateway service name.
- name: latency_threshold_ms
in: body
type: integer
description: P99 latency threshold in milliseconds.
steps:
- name: check-metrics
type: call
call: datadog.query-metrics
with:
query: p99:trace.http.request{service:{{gateway_service}}}
period: 15m
- name: scale-pods
type: call
call: kubernetes.scale-deployment
with:
namespace: api-gateway
deployment: '{{gateway_service}}'
replicas: 10
- name: log-event
type: call
call: servicenow.create-change-request
with:
short_description: 'Auto-scale: {{gateway_service}} scaled to 10 replicas'
description: P99 latency exceeded {{latency_threshold_ms}}ms. Auto-scaled to 10 replicas.
category: auto_scaling
- name: notify-platform
type: call
call: msteams.send-message
with:
recipient_upn: platform-team@blackrock.com
text: 'API gateway {{gateway_service}} auto-scaled. Change request: {{log-event.number}}.'
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
- name: period
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: kubernetes
baseUri: https://aks.blackrock.com/apis/apps/v1
authentication:
type: bearer
token: $secrets.k8s_token
resources:
- name: deployments
path: /namespaces/{{namespace}}/deployments/{{deployment}}/scale
inputParameters:
- name: namespace
in: path
- name: deployment
in: path
operations:
- name: scale-deployment
method: PATCH
- type: http
namespace: servicenow
baseUri: https://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change-requests
path: /table/change_request
operations:
- name: create-change-request
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Creates a shareable Grafana dashboard snapshot for investment platform performance metrics.
naftiko: '0.5'
info:
label: Grafana Dashboard Snapshot
description: Creates a shareable Grafana dashboard snapshot for investment platform performance metrics.
tags:
- monitoring
- grafana
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: create-snapshot
description: Create a shareable snapshot of a Grafana dashboard.
inputParameters:
- name: dashboard_uid
in: body
type: string
description: The Grafana dashboard UID.
- name: expires_in
in: body
type: integer
description: Snapshot expiry in seconds.
call: grafana.create-snapshot
with:
dashboard_uid: '{{dashboard_uid}}'
expires: '{{expires_in}}'
outputParameters:
- name: snapshot_url
type: string
mapping: $.url
- name: snapshot_id
type: string
mapping: $.id
consumes:
- type: http
namespace: grafana
baseUri: https://grafana.blackrock.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: snapshots
path: /snapshots
operations:
- name: create-snapshot
method: POST
Retrieves company engagement records from Salesforce, scores ESG progress in Snowflake, updates Aladdin ESG signals, and distributes reports via SharePoint.
naftiko: '0.5'
info:
label: ESG Engagement Tracking Pipeline
description: Retrieves company engagement records from Salesforce, scores ESG progress in Snowflake, updates Aladdin ESG signals, and distributes reports via SharePoint.
tags:
- esg
- engagement
- salesforce
- snowflake
- aladdin
- sharepoint
capability:
exposes:
- type: mcp
namespace: esg-engagement
port: 8080
tools:
- name: track-engagement
description: Track ESG engagement, score progress, update signals, and distribute.
inputParameters:
- name: company_id
in: body
type: string
description: The company identifier.
steps:
- name: get-engagements
type: call
call: salesforce.get-engagement-records
with:
company_id: '{{company_id}}'
- name: score-progress
type: call
call: snowflake.execute-statement
with:
statement: CALL SCORE_ESG_ENGAGEMENT('{{company_id}}')
warehouse: ESG_WH
- name: update-signals
type: call
call: aladdin.update-esg-signal
with:
company_id: '{{company_id}}'
engagement_score: '{{score-progress.engagement_score}}'
- name: publish-report
type: call
call: sharepoint.upload-file
with:
site_id: esg_site
folder_path: Engagements/{{company_id}}
file_name: engagement_report_{{company_id}}.pdf
consumes:
- type: http
namespace: salesforce
baseUri: https://blackrock.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: engagements
path: /sobjects/Engagement__c
operations:
- name: get-engagement-records
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: esg-signals
path: /esg/signals
operations:
- name: update-esg-signal
method: PATCH
- 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
When a Salesforce opportunity is won, provisions an Aladdin portfolio, creates a DocuSign IMA envelope, and opens a ServiceNow implementation ticket.
naftiko: '0.5'
info:
label: Salesforce Opportunity to Aladdin Pipeline
description: When a Salesforce opportunity is won, provisions an Aladdin portfolio, creates a DocuSign IMA envelope, and opens a ServiceNow implementation ticket.
tags:
- sales
- salesforce
- aladdin
- docusign
- servicenow
capability:
exposes:
- type: mcp
namespace: opportunity-pipeline
port: 8080
tools:
- name: process-won-opportunity
description: Provision portfolio and initiate client agreement when an opportunity is won.
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-portfolio
type: call
call: aladdin.create-portfolio
with:
name: '{{get-opportunity.Account.Name}} — {{get-opportunity.Name}}'
mandate_type: '{{get-opportunity.Investment_Strategy__c}}'
- name: send-ima
type: call
call: docusign.create-envelope
with:
template_id: IMA-STANDARD
signer_email: '{{get-opportunity.Contact_Email__c}}'
signer_name: '{{get-opportunity.Contact_Name__c}}'
portfolio_id: '{{create-portfolio.portfolio_id}}'
- name: open-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Implementation: {{get-opportunity.Account.Name}}'
description: 'Opportunity {{opportunity_id}} won. Portfolio: {{create-portfolio.portfolio_id}}. IMA: {{send-ima.envelope_id}}.'
category: client_implementation
consumes:
- type: http
namespace: salesforce
baseUri: https://blackrock.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: portfolios
path: /portfolios
operations:
- name: create-portfolio
method: POST
- 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
- type: http
namespace: servicenow
baseUri: https://blackrock.service-now.com/api/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 Aladdin for exposure limit breaches, creates a compliance Jira ticket, notifies the risk committee via Microsoft Teams, and logs the breach in Snowflake for regulatory reporting.
naftiko: '0.5'
info:
label: Aladdin Exposure Limit Breach Handler
description: Monitors Aladdin for exposure limit breaches, creates a compliance Jira ticket, notifies the risk committee via Microsoft Teams, and logs the breach in Snowflake for regulatory reporting.
tags:
- compliance
- risk-analytics
- aladdin
- jira
- microsoft-teams
- snowflake
capability:
exposes:
- type: mcp
namespace: limit-breach
port: 8080
tools:
- name: handle-limit-breach
description: Process an exposure limit breach with escalation, notification, and audit logging.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: limit_type
in: body
type: string
description: Type of limit breached (e.g. sector, issuer, duration).
- name: risk_committee_channel
in: body
type: string
description: Teams channel ID for risk committee.
steps:
- name: get-breach-details
type: call
call: aladdin.get-limit-breaches
with:
portfolio_id: '{{portfolio_id}}'
limit_type: '{{limit_type}}'
- name: create-compliance-ticket
type: call
call: jira.create-issue
with:
project: COMPLIANCE
summary: 'Exposure limit breach: {{portfolio_id}} - {{limit_type}}'
description: 'Breach details: {{get-breach-details.breach_amount}} over limit of {{get-breach-details.limit_value}}. Securities: {{get-breach-details.securities}}.'
issue_type: Bug
priority: High
- name: notify-risk-committee
type: call
call: msteams.post-channel-message
with:
channel_id: '{{risk_committee_channel}}'
text: 'LIMIT BREACH: Portfolio {{portfolio_id}}, {{limit_type}} limit exceeded by {{get-breach-details.breach_amount}}. Jira: {{create-compliance-ticket.key}}.'
- name: log-breach
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO compliance.limit_breaches VALUES ('{{portfolio_id}}', '{{limit_type}}', '{{get-breach-details.breach_amount}}', '{{create-compliance-ticket.key}}', CURRENT_TIMESTAMP())
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: limit-breaches
path: /portfolios/{{portfolio_id}}/limits/breaches?type={{limit_type}}
inputParameters:
- name: portfolio_id
in: path
- name: limit_type
in: query
operations:
- name: get-limit-breaches
method: GET
- type: http
namespace: jira
baseUri: https://blackrock.atlassian.net/rest/api/3
authentication:
type: 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: post-channel-message
method: POST
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Triggers an Informatica data quality job for client reference data, stores quality scores in Snowflake, and creates a ServiceNow ticket for data stewards if quality drops below threshold.
naftiko: '0.5'
info:
label: Informatica Data Quality Pipeline
description: Triggers an Informatica data quality job for client reference data, stores quality scores in Snowflake, and creates a ServiceNow ticket for data stewards if quality drops below threshold.
tags:
- data-quality
- informatica
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-data-quality-check
description: Execute Informatica DQ job and escalate quality issues.
inputParameters:
- name: job_id
in: body
type: string
description: Informatica DQ job identifier.
- name: quality_threshold
in: body
type: number
description: Minimum acceptable quality score (0-100).
steps:
- name: run-dq-job
type: call
call: informatica.run-job
with:
job_id: '{{job_id}}'
- name: store-scores
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO data_quality.scores VALUES ('{{job_id}}', '{{run-dq-job.quality_score}}', CURRENT_TIMESTAMP())
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Data quality below threshold for job {{job_id}}
category: data_quality
assigned_group: Data_Stewards
description: 'Quality score: {{run-dq-job.quality_score}}. Threshold: {{quality_threshold}}.'
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: run-job
method: POST
- type: http
namespace: snowflake
baseUri: https://blackrock.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://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Extracts portfolio data from Aladdin, queries compliance metadata from Snowflake, generates a regulatory report, uploads to SharePoint, and creates a DocuSign envelope for sign-off.
naftiko: '0.5'
info:
label: Regulatory Filing Preparation Workflow
description: Extracts portfolio data from Aladdin, queries compliance metadata from Snowflake, generates a regulatory report, uploads to SharePoint, and creates a DocuSign envelope for sign-off.
tags:
- compliance
- regulatory
- aladdin
- snowflake
- sharepoint
- docusign
capability:
exposes:
- type: mcp
namespace: regulatory-filing
port: 8080
tools:
- name: prepare-regulatory-filing
description: Assemble a regulatory filing package from portfolio data, compliance metadata, and route for signature.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: filing_type
in: body
type: string
description: Regulatory filing type (e.g. 13F, N-PORT).
- name: signer_email
in: body
type: string
description: Email of the authorized signatory.
steps:
- name: get-holdings
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-compliance-metadata
type: call
call: snowflake.execute-query
with:
statement: SELECT * FROM compliance.filing_metadata WHERE portfolio_id = '{{portfolio_id}}' AND filing_type = '{{filing_type}}'
- name: upload-filing
type: call
call: sharepoint.upload-file
with:
site_id: regulatory-filings
file_path: Filings/{{filing_type}}/{{portfolio_id}}_draft.pdf
content: '{{get-compliance-metadata.data}}'
- name: send-for-signature
type: call
call: docusign.create-envelope
with:
signer_email: '{{signer_email}}'
document_url: '{{upload-filing.url}}'
subject: '{{filing_type}} Filing - Portfolio {{portfolio_id}}'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2/portfolios
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.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: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/blackrock
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /envelopes
operations:
- name: create-envelope
method: POST
Submits a new equity order through Bloomberg EMSX, specifying ticker, side, quantity, order type, and limit price.
naftiko: '0.5'
info:
label: Bloomberg EMSX Trade Submission
description: Submits a new equity order through Bloomberg EMSX, specifying ticker, side, quantity, order type, and limit price.
tags:
- trading
- bloomberg-emsx
capability:
exposes:
- type: mcp
namespace: trade-execution
port: 8080
tools:
- name: submit-emsx-order
description: Submit an equity order via Bloomberg EMSX with order parameters.
inputParameters:
- name: ticker
in: body
type: string
description: Bloomberg ticker symbol.
- name: side
in: body
type: string
description: BUY or SELL.
- name: quantity
in: body
type: integer
description: Number of shares.
- name: order_type
in: body
type: string
description: Order type (MARKET, LIMIT).
- name: limit_price
in: body
type: number
description: Limit price if applicable.
call: emsx.create-order
with:
ticker: '{{ticker}}'
side: '{{side}}'
quantity: '{{quantity}}'
order_type: '{{order_type}}'
limit_price: '{{limit_price}}'
consumes:
- type: http
namespace: emsx
baseUri: https://bsapi.bloomberg.com/emsapi/v1
authentication:
type: bearer
token: $secrets.bloomberg_emsx_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
Queries Databricks for the latest ML model inference metrics, checks drift thresholds in Snowflake, and creates a Jira ticket if model performance degrades beyond acceptable limits.
naftiko: '0.5'
info:
label: Databricks ML Model Performance Monitor
description: Queries Databricks for the latest ML model inference metrics, checks drift thresholds in Snowflake, and creates a Jira ticket if model performance degrades beyond acceptable limits.
tags:
- machine-learning
- monitoring
- databricks
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: ml-monitoring
port: 8080
tools:
- name: check-model-performance
description: Monitor a deployed ML model's performance metrics and escalate if degradation is detected.
inputParameters:
- name: model_name
in: body
type: string
description: The registered Databricks model name.
- name: drift_threshold
in: body
type: number
description: Maximum acceptable drift score.
steps:
- name: get-model-metrics
type: call
call: databricks.get-model-metrics
with:
model_name: '{{model_name}}'
- name: check-drift
type: call
call: snowflake.execute-query
with:
statement: SELECT drift_score FROM ml.model_drift WHERE model_name = '{{model_name}}' ORDER BY computed_at DESC LIMIT 1
- name: create-ticket
type: call
call: jira.create-issue
with:
project: MLOPS
summary: 'Model drift alert: {{model_name}} - score {{check-drift.drift_score}}'
description: 'Model {{model_name}} drift score {{check-drift.drift_score}} exceeds threshold {{drift_threshold}}. Accuracy: {{get-model-metrics.accuracy}}.'
issue_type: Bug
consumes:
- type: http
namespace: databricks
baseUri: https://blackrock.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-metrics
path: /mlflow/runs/search
operations:
- name: get-model-metrics
method: POST
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://blackrock.atlassian.net/rest/api/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 portfolio holdings from Aladdin, queries risk factor exposures from Snowflake, generates a summary, and uploads the report to SharePoint for distribution.
naftiko: '0.5'
info:
label: Portfolio Risk Report Generator
description: Retrieves portfolio holdings from Aladdin, queries risk factor exposures from Snowflake, generates a summary, and uploads the report to SharePoint for distribution.
tags:
- risk-analytics
- portfolio-management
- aladdin
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: risk-reporting
port: 8080
tools:
- name: generate-risk-report
description: Build a risk report for a portfolio by combining holdings and factor exposures, then upload to SharePoint.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: as_of_date
in: body
type: string
description: Report date in YYYY-MM-DD format.
steps:
- name: get-holdings
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-risk-factors
type: call
call: snowflake.execute-query
with:
statement: SELECT factor_name, exposure, contribution FROM risk.factor_exposures WHERE portfolio_id = '{{portfolio_id}}' AND as_of_date = '{{as_of_date}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: risk-reports-site
file_path: RiskReports/{{portfolio_id}}_{{as_of_date}}.json
content: '{{get-risk-factors.data}}'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2/portfolios
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.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: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
Downloads a file from Box by file ID, returning the file content and metadata for investment documentation retrieval.
naftiko: '0.5'
info:
label: Box Document Download
description: Downloads a file from Box by file ID, returning the file content and metadata for investment documentation retrieval.
tags:
- document-management
- box
capability:
exposes:
- type: mcp
namespace: box-docs
port: 8080
tools:
- name: download-file
description: Download a file from Box by its file ID.
inputParameters:
- name: file_id
in: body
type: string
description: The Box file identifier.
call: box.get-file-content
with:
file_id: '{{file_id}}'
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}}/content
inputParameters:
- name: file_id
in: path
operations:
- name: get-file-content
method: GET
Retrieves a Salesforce account summary for an institutional client, returning AUM, relationship tier, and contact details.
naftiko: '0.5'
info:
label: Salesforce Client Account Summary
description: Retrieves a Salesforce account summary for an institutional client, returning AUM, relationship tier, and contact details.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-client-account
description: Fetch a Salesforce account record for an institutional client by account ID.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account identifier.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://blackrock.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
Runs a Splunk search query against BlackRock security logs to investigate access events and anomalies.
naftiko: '0.5'
info:
label: Splunk Security Log Query
description: Runs a Splunk search query against BlackRock security logs to investigate access events and anomalies.
tags:
- security
- splunk
capability:
exposes:
- type: mcp
namespace: security-logs
port: 8080
tools:
- name: search-security-logs
description: Execute a Splunk search query against security event indexes.
inputParameters:
- name: search_query
in: body
type: string
description: The Splunk SPL search query.
call: splunk.create-search
with:
search: '{{search_query}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.blackrock.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /search/jobs
operations:
- name: create-search
method: POST
Retrieves pending expense reports from SAP Concur, matches them against budget codes in Snowflake, and creates Workday journal entries for approved expenses.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Sync
description: Retrieves pending expense reports from SAP Concur, matches them against budget codes in Snowflake, and creates Workday journal entries for approved expenses.
tags:
- finance
- expenses
- sap-concur
- snowflake
- workday
capability:
exposes:
- type: mcp
namespace: expense-sync
port: 8080
tools:
- name: sync-expenses
description: Pull Concur expenses, validate budgets, and post to Workday.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
steps:
- name: get-expense-report
type: call
call: concur.get-report
with:
report_id: '{{report_id}}'
- name: validate-budget
type: call
call: snowflake.execute-query
with:
statement: SELECT budget_code, remaining_amount FROM finance.budgets WHERE cost_center = '{{get-expense-report.cost_center}}'
- name: post-journal
type: call
call: workday.create-journal
with:
cost_center: '{{get-expense-report.cost_center}}'
amount: '{{get-expense-report.total_amount}}'
description: 'Expense report {{report_id}}: {{get-expense-report.purpose}}'
consumes:
- type: http
namespace: concur
baseUri: https://us2.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-report
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.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: journals
path: /financial-management/journal-entries
operations:
- name: create-journal
method: POST
Retrieves fundamental financial data for a company from FactSet, including revenue, earnings, P/E ratio, and market cap.
naftiko: '0.5'
info:
label: FactSet Company Fundamentals Lookup
description: Retrieves fundamental financial data for a company from FactSet, including revenue, earnings, P/E ratio, and market cap.
tags:
- research
- factset
capability:
exposes:
- type: mcp
namespace: factset-fundamentals
port: 8080
tools:
- name: get-fundamentals
description: Retrieve key fundamental metrics for a company from FactSet given a ticker symbol.
inputParameters:
- name: ticker
in: body
type: string
description: The equity ticker symbol.
call: factset.get-fundamentals
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-fundamentals/v2
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: fundamentals
path: /fundamentals?ids={{ticker}}
inputParameters:
- name: ticker
in: query
operations:
- name: get-fundamentals
method: GET
Retrieves approved invoices from Coupa, validates against Oracle Financials GL codes, posts journal entries in Workday, and notifies the accounts payable team via Microsoft Teams.
naftiko: '0.5'
info:
label: Coupa Invoice Processing Pipeline
description: Retrieves approved invoices from Coupa, validates against Oracle Financials GL codes, posts journal entries in Workday, and notifies the accounts payable team via Microsoft Teams.
tags:
- finance
- accounts-payable
- coupa
- oracle-financials
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: invoice-processing
port: 8080
tools:
- name: process-invoice
description: Validate and post approved Coupa invoices to Workday with GL verification.
inputParameters:
- name: invoice_id
in: body
type: string
description: The Coupa invoice ID.
- name: ap_channel_id
in: body
type: string
description: Teams channel for AP notifications.
steps:
- name: get-invoice
type: call
call: coupa.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: validate-gl
type: call
call: oracle.validate-gl-code
with:
gl_code: '{{get-invoice.gl_code}}'
- name: post-journal
type: call
call: workday.create-journal
with:
amount: '{{get-invoice.total}}'
description: Coupa invoice {{invoice_id}} - {{get-invoice.supplier_name}}
gl_code: '{{get-invoice.gl_code}}'
- name: notify-ap
type: call
call: msteams.post-channel-message
with:
channel_id: '{{ap_channel_id}}'
text: 'Invoice {{invoice_id}} from {{get-invoice.supplier_name}} posted. Amount: {{get-invoice.total}}. Journal: {{post-journal.journal_id}}.'
consumes:
- type: http
namespace: coupa
baseUri: https://blackrock.coupahost.com/api
authentication:
type: bearer
token: $secrets.coupa_token
resources:
- name: invoices
path: /invoices/{{invoice_id}}
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
- type: http
namespace: oracle
baseUri: https://oracle-fin.blackrock.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: gl-codes
path: /generalLedgerAccounts/{{gl_code}}
inputParameters:
- name: gl_code
in: path
operations:
- name: validate-gl-code
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: journals
path: /financial-management/journal-entries
operations:
- name: create-journal
method: POST
- 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
Triggers a Tableau Server extract refresh for a specified risk analytics workbook to ensure dashboards reflect the latest data.
naftiko: '0.5'
info:
label: Tableau Risk Dashboard Refresh
description: Triggers a Tableau Server extract refresh for a specified risk analytics workbook to ensure dashboards reflect the latest data.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: analytics-refresh
port: 8080
tools:
- name: refresh-risk-dashboard
description: Trigger an extract refresh on a Tableau workbook by datasource ID.
inputParameters:
- name: datasource_id
in: body
type: string
description: The Tableau datasource LUID.
call: tableau.refresh-datasource
with:
datasource_id: '{{datasource_id}}'
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.blackrock.com/api/3.21
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/default/datasources/{{datasource_id}}/refresh
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-datasource
method: POST
Before submitting a trade through Bloomberg EMSX, validates the order against Aladdin compliance rules. If the order passes, submits to EMSX; if it fails, creates a Jira compliance review ticket and notifies the trader via Microsoft Teams.
naftiko: '0.5'
info:
label: Trade Compliance Pre-Check and EMSX Submission
description: Before submitting a trade through Bloomberg EMSX, validates the order against Aladdin compliance rules. If the order passes, submits to EMSX; if it fails, creates a Jira compliance review ticket and notifies the trader via Microsoft Teams.
tags:
- trading
- compliance
- aladdin
- bloomberg-emsx
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliant-trade
port: 8080
tools:
- name: submit-compliant-trade
description: Validate a trade against compliance rules and submit to EMSX if approved, or escalate if rejected.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
- name: ticker
in: body
type: string
description: Security ticker symbol.
- name: side
in: body
type: string
description: BUY or SELL.
- name: quantity
in: body
type: integer
description: Number of shares.
- name: trader_email
in: body
type: string
description: Email of the trader for notification.
steps:
- name: compliance-check
type: call
call: aladdin.check-compliance
with:
portfolio_id: '{{portfolio_id}}'
ticker: '{{ticker}}'
side: '{{side}}'
quantity: '{{quantity}}'
- name: submit-order
type: call
call: emsx.create-order
with:
ticker: '{{ticker}}'
side: '{{side}}'
quantity: '{{quantity}}'
order_type: MARKET
- name: notify-trader
type: call
call: msteams.send-message
with:
recipient_upn: '{{trader_email}}'
text: 'Trade {{side}} {{quantity}} {{ticker}} for portfolio {{portfolio_id}} submitted. EMSX order ref: {{submit-order.order_id}}.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: compliance
path: /compliance/check
operations:
- name: check-compliance
method: POST
- type: http
namespace: emsx
baseUri: https://bsapi.bloomberg.com/emsapi/v1
authentication:
type: bearer
token: $secrets.bloomberg_emsx_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Posts notifications to Microsoft Teams channels for investment team alerts and portfolio updates.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Notification
description: Posts notifications to Microsoft Teams channels for investment team alerts and portfolio updates.
tags:
- messaging
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: msteams
port: 8080
tools:
- name: post-message
description: Post a message to a Microsoft Teams channel.
inputParameters:
- name: channel_id
in: body
type: string
description: The Teams channel ID.
- name: text
in: body
type: string
description: Message text.
call: msteams.post-channel-message
with:
channel_id: '{{channel_id}}'
text: '{{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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Tracks private market deal progress by fetching deal data from Salesforce, updating Aladdin with valuation, logging milestones in Confluence, and alerting the deal team via Teams.
naftiko: '0.5'
info:
label: Private Markets Deal Tracking Pipeline
description: Tracks private market deal progress by fetching deal data from Salesforce, updating Aladdin with valuation, logging milestones in Confluence, and alerting the deal team via Teams.
tags:
- alternatives
- salesforce
- aladdin
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: deal-tracking
port: 8080
tools:
- name: update-deal-status
description: Update deal tracking across Salesforce, Aladdin, Confluence, and Teams.
inputParameters:
- name: deal_id
in: body
type: string
description: The Salesforce deal record ID.
- name: valuation
in: body
type: number
description: Updated deal valuation.
- name: status
in: body
type: string
description: Deal status (pipeline, due_diligence, committed, closed).
steps:
- name: get-deal
type: call
call: salesforce.get-deal
with:
deal_id: '{{deal_id}}'
- name: update-valuation
type: call
call: aladdin.update-private-asset
with:
asset_ref: '{{get-deal.Aladdin_Ref__c}}'
valuation: '{{valuation}}'
status: '{{status}}'
- name: log-milestone
type: call
call: confluence.create-page
with:
space_key: DEALS
title: 'Deal Update: {{get-deal.Name}} — {{status}}'
body: 'Valuation: ${{valuation}}. Status: {{status}}. Updated by: {{get-deal.Owner.Name}}.'
- name: notify-team
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-deal.Owner.Email}}'
text: 'Deal {{get-deal.Name}} updated to {{status}}. Valuation: ${{valuation}}. Confluence: {{log-milestone.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://blackrock.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: deals
path: /sobjects/Deal__c/{{deal_id}}
inputParameters:
- name: deal_id
in: path
operations:
- name: get-deal
method: GET
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: private-assets
path: /private-assets/{{asset_ref}}
inputParameters:
- name: asset_ref
in: path
operations:
- name: update-private-asset
method: PATCH
- type: http
namespace: confluence
baseUri: https://blackrock.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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Executes an FX trade via Tradeweb, books the trade in Aladdin, generates a SWIFT confirmation, and logs the settlement in ServiceNow.
naftiko: '0.5'
info:
label: FX Trade Execution and Settlement
description: Executes an FX trade via Tradeweb, books the trade in Aladdin, generates a SWIFT confirmation, and logs the settlement in ServiceNow.
tags:
- fx-trading
- tradeweb
- aladdin
- swift
- servicenow
capability:
exposes:
- type: mcp
namespace: fx-execution
port: 8080
tools:
- name: execute-fx-trade
description: Execute an FX trade and process through booking, confirmation, and settlement tracking.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair (e.g. EUR/USD).
- name: amount
in: body
type: number
description: Notional amount.
- name: direction
in: body
type: string
description: BUY or SELL.
- name: portfolio_id
in: body
type: string
description: Aladdin portfolio ID.
steps:
- name: execute-trade
type: call
call: tradeweb.submit-rfq
with:
currency_pair: '{{currency_pair}}'
amount: '{{amount}}'
direction: '{{direction}}'
- name: book-trade
type: call
call: aladdin.create-trade
with:
portfolio_id: '{{portfolio_id}}'
instrument: '{{currency_pair}}'
quantity: '{{amount}}'
price: '{{execute-trade.rate}}'
- name: send-confirmation
type: call
call: swift.send-mt300
with:
trade_ref: '{{book-trade.trade_id}}'
counterparty_bic: '{{execute-trade.counterparty_bic}}'
amount: '{{amount}}'
rate: '{{execute-trade.rate}}'
- name: track-settlement
type: call
call: servicenow.create-task
with:
short_description: 'FX settlement: {{currency_pair}} {{amount}} @ {{execute-trade.rate}}'
description: 'Trade: {{book-trade.trade_id}}. SWIFT: {{send-confirmation.reference}}. Settlement date: {{execute-trade.settlement_date}}.'
category: fx_settlement
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: rfqs
path: /fx/rfq
operations:
- name: submit-rfq
method: POST
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: trades
path: /portfolios/{{portfolio_id}}/trades
inputParameters:
- name: portfolio_id
in: path
operations:
- name: create-trade
method: POST
- type: http
namespace: swift
baseUri: https://swift.blackrock.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages/mt300
operations:
- name: send-mt300
method: POST
- type: http
namespace: servicenow
baseUri: https://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves the signing status of a DocuSign envelope used for IMA or subscription agreements, returning recipient status and completion timestamps.
naftiko: '0.5'
info:
label: DocuSign Envelope Status
description: Retrieves the signing status of a DocuSign envelope used for IMA or subscription agreements, returning recipient status and completion timestamps.
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign
port: 8080
tools:
- name: get-envelope-status
description: Look up the current status of a DocuSign envelope by envelope ID.
inputParameters:
- name: envelope_id
in: body
type: string
description: The DocuSign envelope identifier.
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
Fetches candidate applications from Workday Recruiting, scores them using an internal ML model on Databricks, and updates candidate status back in Workday.
naftiko: '0.5'
info:
label: Workday Recruiting Candidate Pipeline
description: Fetches candidate applications from Workday Recruiting, scores them using an internal ML model on Databricks, and updates candidate status back in Workday.
tags:
- hr
- recruiting
- workday-recruiting
- databricks
capability:
exposes:
- type: mcp
namespace: recruiting-pipeline
port: 8080
tools:
- name: score-candidates
description: Fetch candidates from Workday Recruiting, score via ML, and update statuses.
inputParameters:
- name: job_requisition_id
in: body
type: string
description: The Workday job requisition ID.
steps:
- name: get-candidates
type: call
call: workday-recruiting.get-applications
with:
requisition_id: '{{job_requisition_id}}'
- name: score-candidates
type: call
call: databricks.run-inference
with:
model_name: candidate-scoring
input_data: '{{get-candidates.applications}}'
- name: update-status
type: call
call: workday-recruiting.update-application
with:
requisition_id: '{{job_requisition_id}}'
scores: '{{score-candidates.predictions}}'
consumes:
- type: http
namespace: workday-recruiting
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/recruiting
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: applications
path: /requisitions/{{requisition_id}}/applications
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-applications
method: GET
- name: update
path: /requisitions/{{requisition_id}}/applications
inputParameters:
- name: requisition_id
in: path
operations:
- name: update-application
method: PATCH
- type: http
namespace: databricks
baseUri: https://blackrock.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: serving
path: /serving-endpoints/{{model_name}}/invocations
inputParameters:
- name: model_name
in: path
operations:
- name: run-inference
method: POST
Triggers a refresh of a Power BI dataset used for portfolio performance reporting.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh
description: Triggers a refresh of a Power BI dataset used for portfolio performance reporting.
tags:
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: bi-refresh
port: 8080
tools:
- name: refresh-pbi-dataset
description: Trigger a refresh for a Power BI dataset by group and dataset ID.
inputParameters:
- name: group_id
in: body
type: string
description: The Power BI workspace group ID.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.refresh-dataset
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Fetches current portfolio holdings from BlackRock's Aladdin platform for a given portfolio ID, returning positions, asset classes, and market values.
naftiko: '0.5'
info:
label: Aladdin Portfolio Holdings Retrieval
description: Fetches current portfolio holdings from BlackRock's Aladdin platform for a given portfolio ID, returning positions, asset classes, and market values.
tags:
- portfolio-management
- aladdin
capability:
exposes:
- type: mcp
namespace: aladdin-portfolio
port: 8080
tools:
- name: get-portfolio-holdings
description: Retrieve all current holdings for a specified Aladdin portfolio, including ticker, quantity, market value, and asset class.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Aladdin portfolio identifier.
call: aladdin.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2/portfolios
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
Extracts positions from Aladdin, generates regulatory report data in Snowflake, exports to Azure Blob Storage, and creates a Confluence page with the filing summary.
naftiko: '0.5'
info:
label: Regulatory Reporting Automation
description: Extracts positions from Aladdin, generates regulatory report data in Snowflake, exports to Azure Blob Storage, and creates a Confluence page with the filing summary.
tags:
- regulatory
- aladdin
- snowflake
- azure-blob-storage
- confluence
capability:
exposes:
- type: mcp
namespace: reg-reporting
port: 8080
tools:
- name: generate-regulatory-report
description: Generate and file a regulatory report with supporting documentation.
inputParameters:
- name: report_type
in: body
type: string
description: Regulatory report type (e.g. 13F, N-PORT, PF).
- name: reporting_period
in: body
type: string
description: Reporting period end date in YYYY-MM-DD.
steps:
- name: extract-positions
type: call
call: aladdin.get-all-positions
with:
as_of_date: '{{reporting_period}}'
- name: generate-report
type: call
call: snowflake.execute-statement
with:
statement: CALL REG.GENERATE_REPORT('{{report_type}}', '{{reporting_period}}')
- name: export-filing
type: call
call: azure-blob.upload
with:
container: regulatory-filings
blob_name: '{{report_type}}/{{reporting_period}}/filing.xml'
content: '{{generate-report.filing_xml}}'
- name: create-summary
type: call
call: confluence.create-page
with:
space_key: REG
title: '{{report_type}} Filing — {{reporting_period}}'
body: 'Filing complete. Report: {{export-filing.url}}. Total positions: {{extract-positions.count}}. Generated: {{generate-report.timestamp}}.'
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: positions
path: /positions
inputParameters:
- name: as_of_date
in: query
operations:
- name: get-all-positions
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: azure-blob
baseUri: https://blackrockdata.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: upload
method: PUT
- type: http
namespace: confluence
baseUri: https://blackrock.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 critical ServiceNow incident is created for Aladdin infrastructure, queries Datadog for related metrics, creates a Jira investigation ticket, and posts a summary to the operations Microsoft Teams channel.
naftiko: '0.5'
info:
label: Incident-Triggered Runbook Executor
description: When a critical ServiceNow incident is created for Aladdin infrastructure, queries Datadog for related metrics, creates a Jira investigation ticket, and posts a summary to the operations Microsoft Teams channel.
tags:
- operations
- incident-response
- servicenow
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-runbook
port: 8080
tools:
- name: execute-incident-runbook
description: Orchestrate incident investigation across ServiceNow, Datadog, Jira, and Teams.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number.
- name: ops_channel_id
in: body
type: string
description: The Teams channel ID for operations alerts.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
- name: query-metrics
type: call
call: datadog.query-metrics
with:
query: avg:system.cpu.user{service:{{get-incident.cmdb_ci}}}
from: '{{get-incident.opened_at}}'
- name: create-investigation
type: call
call: jira.create-issue
with:
project: OPS
summary: 'Investigate: {{get-incident.short_description}}'
description: 'ServiceNow {{incident_number}}. CPU metrics: {{query-metrics.series}}'
issue_type: Task
- name: post-summary
type: call
call: msteams.post-channel-message
with:
channel_id: '{{ops_channel_id}}'
text: 'Incident {{incident_number}}: {{get-incident.short_description}}. Jira: {{create-investigation.key}}. Datadog metrics attached.'
consumes:
- type: http
namespace: servicenow
baseUri: https://blackrock.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: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: query
path: /query
operations:
- name: query-metrics
method: GET
- type: http
namespace: jira
baseUri: https://blackrock.atlassian.net/rest/api/3
authentication:
type: 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: post-channel-message
method: POST
When an Aladdin compliance breach is detected, logs the violation in ServiceNow, notifies the portfolio manager via Teams, and creates a Jira ticket for the compliance team.
naftiko: '0.5'
info:
label: Compliance Breach Remediation Workflow
description: When an Aladdin compliance breach is detected, logs the violation in ServiceNow, notifies the portfolio manager via Teams, and creates a Jira ticket for the compliance team.
tags:
- compliance
- aladdin
- servicenow
- microsoft-teams
- jira
capability:
exposes:
- type: mcp
namespace: compliance-breach
port: 8080
tools:
- name: remediate-breach
description: Process a compliance breach by logging, notifying, and tracking remediation.
inputParameters:
- name: breach_id
in: body
type: string
description: The Aladdin compliance breach identifier.
- name: portfolio_manager_email
in: body
type: string
description: Email of the portfolio manager.
steps:
- name: get-breach
type: call
call: aladdin.get-breach
with:
breach_id: '{{breach_id}}'
- name: log-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Compliance breach {{breach_id}}: {{get-breach.rule_name}}'
description: 'Portfolio {{get-breach.portfolio_id}} breached rule {{get-breach.rule_name}}. Exposure: {{get-breach.current_value}} vs limit {{get-breach.limit_value}}.'
category: compliance
- name: notify-pm
type: call
call: msteams.send-message
with:
recipient_upn: '{{portfolio_manager_email}}'
text: 'Compliance breach on portfolio {{get-breach.portfolio_id}}: {{get-breach.rule_name}}. Incident: {{log-incident.number}}.'
- name: create-remediation-ticket
type: call
call: jira.create-issue
with:
project: COMP
summary: Remediate breach {{breach_id}} — {{get-breach.rule_name}}
description: 'Breach details: {{get-breach.rule_name}} on portfolio {{get-breach.portfolio_id}}. ServiceNow: {{log-incident.number}}.'
issue_type: Task
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: breaches
path: /compliance/breaches/{{breach_id}}
inputParameters:
- name: breach_id
in: path
operations:
- name: get-breach
method: GET
- type: http
namespace: servicenow
baseUri: https://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
- type: http
namespace: jira
baseUri: https://blackrock.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Creates a ServiceNow incident for BlackRock technology operations, assigning severity, category, and support group.
naftiko: '0.5'
info:
label: ServiceNow Incident Creation
description: Creates a ServiceNow incident for BlackRock technology operations, assigning severity, category, and support group.
tags:
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: create-incident
description: Open a new ServiceNow incident with a short description, category, and assigned group.
inputParameters:
- name: short_description
in: body
type: string
description: Brief summary of the incident.
- name: category
in: body
type: string
description: Incident category.
- name: assigned_group
in: body
type: string
description: Support group to assign.
call: servicenow.create-incident
with:
short_description: '{{short_description}}'
category: '{{category}}'
assigned_group: '{{assigned_group}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://blackrock.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Submits a Request for Quote on Tradeweb for a fixed income security, retrieves dealer responses, selects the best quote, and logs the trade to Snowflake.
naftiko: '0.5'
info:
label: Tradeweb Fixed Income RFQ
description: Submits a Request for Quote on Tradeweb for a fixed income security, retrieves dealer responses, selects the best quote, and logs the trade to Snowflake.
tags:
- trading
- fixed-income
- tradeweb
- snowflake
capability:
exposes:
- type: mcp
namespace: tradeweb-rfq
port: 8080
tools:
- name: submit-rfq
description: Submit an RFQ on Tradeweb and process dealer quotes.
inputParameters:
- name: security_id
in: body
type: string
description: Bond CUSIP or ISIN.
- name: side
in: body
type: string
description: BUY or SELL.
- name: quantity
in: body
type: number
description: Face value.
- name: dealers
in: body
type: string
description: Comma-separated dealer codes.
steps:
- name: create-rfq
type: call
call: tradeweb.create-rfq
with:
security_id: '{{security_id}}'
side: '{{side}}'
quantity: '{{quantity}}'
dealers: '{{dealers}}'
- name: get-quotes
type: call
call: tradeweb.get-quotes
with:
rfq_id: '{{create-rfq.rfq_id}}'
- name: log-trade
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO trading.rfq_log VALUES ('{{create-rfq.rfq_id}}', '{{security_id}}', '{{side}}', {{quantity}}, '{{get-quotes.best_dealer}}', {{get-quotes.best_price}}, CURRENT_TIMESTAMP())
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: rfqs
path: /rfqs
operations:
- name: create-rfq
method: POST
- name: quotes
path: /rfqs/{{rfq_id}}/quotes
inputParameters:
- name: rfq_id
in: path
operations:
- name: get-quotes
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Triggers an Apache Airflow DAG for overnight batch processing of portfolio valuations, monitors its status, and posts completion to Kafka for downstream consumers.
naftiko: '0.5'
info:
label: Apache Airflow DAG Trigger and Monitor
description: Triggers an Apache Airflow DAG for overnight batch processing of portfolio valuations, monitors its status, and posts completion to Kafka for downstream consumers.
tags:
- data-engineering
- batch-processing
- apache-airflow
- apache-kafka
capability:
exposes:
- type: mcp
namespace: airflow-orchestration
port: 8080
tools:
- name: trigger-valuation-dag
description: Trigger and monitor an Airflow DAG for portfolio valuation processing.
inputParameters:
- name: dag_id
in: body
type: string
description: The Airflow DAG identifier.
- name: portfolio_id
in: body
type: string
description: Portfolio to process.
steps:
- name: trigger-dag
type: call
call: airflow.trigger-dag
with:
dag_id: '{{dag_id}}'
conf: '{"portfolio_id": "{{portfolio_id}}"}'
- name: get-dag-status
type: call
call: airflow.get-dag-run
with:
dag_id: '{{dag_id}}'
run_id: '{{trigger-dag.dag_run_id}}'
- name: publish-completion
type: call
call: kafka.produce-message
with:
topic: batch.valuation.complete
key: '{{portfolio_id}}'
value: '{"dag_id": "{{dag_id}}", "status": "{{get-dag-status.state}}", "portfolio_id": "{{portfolio_id}}"}'
consumes:
- type: http
namespace: airflow
baseUri: https://airflow.blackrock.com/api/v1
authentication:
type: bearer
token: $secrets.airflow_token
resources:
- name: dag-runs
path: /dags/{{dag_id}}/dagRuns
inputParameters:
- name: dag_id
in: path
operations:
- name: trigger-dag
method: POST
- name: dag-run-status
path: /dags/{{dag_id}}/dagRuns/{{run_id}}
inputParameters:
- name: dag_id
in: path
- name: run_id
in: path
operations:
- name: get-dag-run
method: GET
- type: http
namespace: kafka
baseUri: https://kafka-rest.blackrock.com/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: records
path: /clusters/main/topics/{{topic}}/records
inputParameters:
- name: topic
in: path
operations:
- name: produce-message
method: POST
Reconciles ETF portfolio positions between Aladdin and SimCorp Dimension, identifies breaks, logs discrepancies in Snowflake, and alerts operations via Slack.
naftiko: '0.5'
info:
label: ETF Daily Reconciliation Pipeline
description: Reconciles ETF portfolio positions between Aladdin and SimCorp Dimension, identifies breaks, logs discrepancies in Snowflake, and alerts operations via Slack.
tags:
- etf-operations
- aladdin
- simcorp-dimension
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: etf-recon
port: 8080
tools:
- name: run-daily-reconciliation
description: Reconcile ETF positions between Aladdin and SimCorp, log breaks, and alert operations.
inputParameters:
- name: fund_id
in: body
type: string
description: The ETF fund identifier.
- name: recon_date
in: body
type: string
description: Reconciliation date in YYYY-MM-DD format.
steps:
- name: get-aladdin-positions
type: call
call: aladdin.get-holdings
with:
portfolio_id: '{{fund_id}}'
- name: get-simcorp-positions
type: call
call: simcorp.get-positions
with:
portfolio_code: '{{fund_id}}'
as_of_date: '{{recon_date}}'
- name: log-breaks
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO RECON.BREAKS SELECT * FROM TABLE(COMPARE_POSITIONS('{{fund_id}}', '{{recon_date}}'))
- name: alert-ops
type: call
call: slack.post-message
with:
channel: '#etf-operations'
text: Reconciliation complete for {{fund_id}} on {{recon_date}}. Review breaks in Snowflake RECON.BREAKS table.
consumes:
- type: http
namespace: aladdin
baseUri: https://aladdin.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.aladdin_token
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.blackrock.com/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: positions
path: /portfolios/{{portfolio_code}}/positions
inputParameters:
- name: portfolio_code
in: path
- name: as_of_date
in: query
operations:
- name: get-positions
method: GET
- type: http
namespace: snowflake
baseUri: https://blackrock.snowflakecomputing.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 MSCI index constituent data and weightings for benchmark tracking and portfolio construction.
naftiko: '0.5'
info:
label: MSCI Index Data Retrieval
description: Retrieves MSCI index constituent data and weightings for benchmark tracking and portfolio construction.
tags:
- index-data
- msci
capability:
exposes:
- type: mcp
namespace: msci
port: 8080
tools:
- name: get-index-data
description: Retrieve MSCI index constituent data.
inputParameters:
- name: index_code
in: body
type: string
description: The MSCI index code.
call: msci.get-constituents
with:
index_code: '{{index_code}}'
outputParameters:
- name: constituents
type: array
mapping: $.constituents
- name: total_weight
type: number
mapping: $.totalWeight
consumes:
- type: http
namespace: msci
baseUri: https://api.msci.com/v1
authentication:
type: bearer
token: $secrets.msci_token
resources:
- name: indices
path: /indices/{{index_code}}/constituents
inputParameters:
- name: index_code
in: path
operations:
- name: get-constituents
method: GET
Checks merchant website performance via Cloudflare analytics, tests checkout flow latency with Datadog synthetic, generates recommendations, and sends via HubSpot.
naftiko: '0.5'
info:
label: Merchant Website Performance Audit
description: Checks merchant website performance via Cloudflare analytics, tests checkout flow latency with Datadog synthetic, generates recommendations, and sends via HubSpot.
tags:
- performance
- cloudflare
- datadog
- hubspot
capability:
exposes:
- type: mcp
namespace: site-audit
port: 8080
tools:
- name: audit-performance
description: Audit merchant website and checkout performance with recommendations.
inputParameters:
- name: merchant_domain
in: body
type: string
description: Merchant website domain.
- name: merchant_email
in: body
type: string
description: Merchant email.
steps:
- name: get-analytics
type: call
call: cloudflare.get-zone-analytics
with:
zone_id: $secrets.cloudflare_zone_id
since: -7d
- name: check-latency
type: call
call: datadog.get-synthetics
with:
public_id: checkout-{{merchant_domain}}
- name: send-report
type: call
call: hubspot.send-email
with:
to: '{{merchant_email}}'
subject: Website Performance Report
body: 'Page load: {{get-analytics.avg_load_time}}ms. Checkout latency: {{check-latency.avg_duration}}ms. Total requests: {{get-analytics.total_requests}}.'
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
- name: since
in: query
operations:
- name: get-zone-analytics
method: GET
- 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: synthetics
path: /synthetics/tests/{{public_id}}/results
inputParameters:
- name: public_id
in: path
operations:
- name: get-synthetics
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 merchant applies, validates their identity through the Square Merchants API, cross-references with Mastercard sanctions screening, and logs the KYC decision in PostgreSQL.
naftiko: '0.5'
info:
label: Compliance KYC Verification Pipeline
description: When a new merchant applies, validates their identity through the Square Merchants API, cross-references with Mastercard sanctions screening, and logs the KYC decision in PostgreSQL.
tags:
- compliance
- kyc
- square
- mastercard
- postgresql
- fintech
capability:
exposes:
- type: mcp
namespace: kyc-verification
port: 8080
tools:
- name: verify-merchant-kyc
description: Run KYC checks on a merchant application using Square and Mastercard, then log the result.
inputParameters:
- name: merchant_id
in: body
type: string
description: The Square merchant ID.
- name: business_name
in: body
type: string
description: The registered business name.
- name: country
in: body
type: string
description: Country of incorporation.
steps:
- name: get-merchant
type: call
call: square.get-merchant
with:
merchant_id: '{{merchant_id}}'
- name: sanctions-check
type: call
call: mastercard.screen-entity
with:
entity_name: '{{business_name}}'
country: '{{country}}'
- name: log-kyc-result
type: call
call: postgresql.insert-row
with:
table: kyc_decisions
merchant_id: '{{merchant_id}}'
business_name: '{{business_name}}'
sanctions_status: '{{sanctions-check.status}}'
merchant_status: '{{get-merchant.merchant.status}}'
decision_date: '{{now}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: merchants
path: /merchants/{{merchant_id}}
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-merchant
method: GET
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/screening/v1
authentication:
type: oauth1
consumerKey: $secrets.mastercard_consumer_key
signingKey: $secrets.mastercard_signing_key
resources:
- name: entities
path: /entities/screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: postgresql
baseUri: https://block-data.internal/api/v1
authentication:
type: bearer
token: $secrets.internal_db_token
resources:
- name: rows
path: /tables/{{table}}/rows
inputParameters:
- name: table
in: path
operations:
- name: insert-row
method: POST
Queries Datadog for payment processing error rates across Square services, returning error counts, rates, and top error codes for a given time window.
naftiko: '0.5'
info:
label: Datadog Payment Error Rate
description: Queries Datadog for payment processing error rates across Square services, returning error counts, rates, and top error codes for a given time window.
tags:
- observability
- datadog
capability:
exposes:
- type: mcp
namespace: payment-errors
port: 8080
tools:
- name: get-error-rate
description: Retrieve payment error rate metrics from Datadog.
inputParameters:
- name: service
in: body
type: string
description: The payment service name.
- name: period
in: body
type: string
description: Time period to query (e.g. 1h, 6h, 24h).
call: datadog.query-metrics
with:
query: sum:payments.errors{service:{{service}}}.as_rate()
from: '{{period}}'
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
- name: from
in: query
operations:
- name: query-metrics
method: GET
Monitors CloudWatch metrics for payment service load, scales EC2 instances via CloudFormation, updates the load balancer in F5, and logs the scaling event in ServiceNow.
naftiko: '0.5'
info:
label: Infrastructure Scaling Automation
description: Monitors CloudWatch metrics for payment service load, scales EC2 instances via CloudFormation, updates the load balancer in F5, and logs the scaling event in ServiceNow.
tags:
- infrastructure
- cloudwatch
- cloudformation
- f5-networks
- servicenow
capability:
exposes:
- type: mcp
namespace: infra-scaling
port: 8080
tools:
- name: auto-scale-service
description: Monitor load and scale payment infrastructure with tracking.
inputParameters:
- name: service_name
in: body
type: string
description: Payment service name.
- name: target_capacity
in: body
type: integer
description: Target instance count.
steps:
- name: check-load
type: call
call: cloudwatch.get-metrics
with:
namespace: Payments
metric_name: RequestCount
dimensions: Service={{service_name}}
- name: scale-instances
type: call
call: cloudformation.update-stack
with:
stack_name: '{{service_name}}-stack'
parameter_overrides: DesiredCapacity={{target_capacity}}
- name: update-lb
type: call
call: f5.update-pool
with:
pool_name: '{{service_name}}-pool'
member_count: '{{target_capacity}}'
- name: log-event
type: call
call: servicenow.create-change-request
with:
short_description: 'Auto-scale: {{service_name}} to {{target_capacity}} instances'
description: 'Load: {{check-load.average}}. Scaled from current to {{target_capacity}} instances.'
category: auto_scaling
consumes:
- type: http
namespace: cloudwatch
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: metrics
path: /
operations:
- name: get-metrics
method: GET
- type: http
namespace: cloudformation
baseUri: https://cloudformation.us-east-1.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: stacks
path: /
operations:
- name: update-stack
method: POST
- type: http
namespace: f5
baseUri: https://f5.block.xyz/mgmt/tm/ltm
authentication:
type: basic
username: $secrets.f5_user
password: $secrets.f5_password
resources:
- name: pools
path: /pool/{{pool_name}}
inputParameters:
- name: pool_name
in: path
operations:
- name: update-pool
method: PATCH
- type: http
namespace: servicenow
baseUri: https://block.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-request
method: POST
Deploys a canary release via GitLab CI, monitors error rates in Datadog, promotes or rolls back based on metrics, and notifies the team via Slack.
naftiko: '0.5'
info:
label: Microservice Canary Deployment Pipeline
description: Deploys a canary release via GitLab CI, monitors error rates in Datadog, promotes or rolls back based on metrics, and notifies the team via Slack.
tags:
- devops
- gitlab
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: canary-deploy
port: 8080
tools:
- name: deploy-canary
description: Execute a canary deployment with automated monitoring and rollback.
inputParameters:
- name: project_id
in: body
type: string
description: GitLab project ID.
- name: ref
in: body
type: string
description: Git branch or tag to deploy.
- name: service_name
in: body
type: string
description: Service name for monitoring.
steps:
- name: trigger-pipeline
type: call
call: gitlab.create-pipeline
with:
project_id: '{{project_id}}'
ref: '{{ref}}'
variables: DEPLOY_TYPE=canary
- name: monitor-canary
type: call
call: datadog.query-metrics
with:
query: sum:http.errors{service:{{service_name}},version:canary}.as_rate()
period: 10m
- name: promote-canary
type: call
call: gitlab.create-pipeline
with:
project_id: '{{project_id}}'
ref: '{{ref}}'
variables: DEPLOY_TYPE=promote
- name: notify-team
type: call
call: slack.post-message
with:
channel: '#deployments'
text: 'Canary deployment for {{service_name}} ({{ref}}) promoted to production. Error rate: {{monitor-canary.value}}. Pipeline: {{trigger-pipeline.id}}.'
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.block.xyz/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: pipelines
path: /projects/{{project_id}}/pipeline
inputParameters:
- name: project_id
in: path
operations:
- name: create-pipeline
method: POST
- 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
- name: period
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates a Cloudflare WAF rule to protect Block's payment API endpoints from suspicious traffic patterns.
naftiko: '0.5'
info:
label: Cloudflare WAF Rule for Payment Endpoints
description: Creates a Cloudflare WAF rule to protect Block's payment API endpoints from suspicious traffic patterns.
tags:
- security
- cloudflare
- payments
- waf
capability:
exposes:
- type: mcp
namespace: waf-management
port: 8080
tools:
- name: create-payment-waf-rule
description: Create a Cloudflare WAF rule to protect payment endpoints.
inputParameters:
- name: zone_id
in: body
type: string
description: The Cloudflare zone ID.
- name: rule_expression
in: body
type: string
description: The WAF rule expression (Cloudflare filter syntax).
- name: action
in: body
type: string
description: The action to take (block, challenge, managed_challenge).
call: cloudflare.create-firewall-rule
with:
zone_id: '{{zone_id}}'
filter:
expression: '{{rule_expression}}'
action: '{{action}}'
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_api_token
resources:
- name: firewall-rules
path: /zones/{{zone_id}}/firewall/rules
inputParameters:
- name: zone_id
in: path
operations:
- name: create-firewall-rule
method: POST
When a BigCommerce order is placed, creates a corresponding Square order and payment, then updates the BigCommerce order with the Square payment reference.
naftiko: '0.5'
info:
label: BigCommerce Order to Square Sync
description: When a BigCommerce order is placed, creates a corresponding Square order and payment, then updates the BigCommerce order with the Square payment reference.
tags:
- ecommerce
- bigcommerce
- square
- order-sync
capability:
exposes:
- type: mcp
namespace: bigcommerce-square-sync
port: 8080
tools:
- name: sync-bigcommerce-order
description: Sync a BigCommerce order into Square and update the source order with payment details.
inputParameters:
- name: bigcommerce_order_id
in: body
type: string
description: The BigCommerce order ID.
- name: location_id
in: body
type: string
description: The Square location ID for the order.
steps:
- name: get-bc-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{bigcommerce_order_id}}'
- name: create-square-order
type: call
call: square.create-order
with:
order:
location_id: '{{location_id}}'
reference_id: bc-{{bigcommerce_order_id}}
line_items:
- name: '{{get-bc-order.items.0.name}}'
quantity: '{{get-bc-order.items.0.quantity}}'
base_price_money:
amount: '{{get-bc-order.total_inc_tax_cents}}'
currency: '{{get-bc-order.currency_code}}'
- name: update-bc-order
type: call
call: bigcommerce.update-order
with:
order_id: '{{bigcommerce_order_id}}'
staff_notes: 'Square order: {{create-square-order.order.id}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/$secrets.bigcommerce_store_hash/v2
authentication:
type: bearer
token: $secrets.bigcommerce_access_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: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
Creates a Square loyalty promotion, syncs eligible customers to MailChimp, launches an email campaign, and tracks results in Google Analytics.
naftiko: '0.5'
info:
label: Merchant Loyalty Campaign Launcher
description: Creates a Square loyalty promotion, syncs eligible customers to MailChimp, launches an email campaign, and tracks results in Google Analytics.
tags:
- loyalty
- square
- mailchimp
- google-analytics
capability:
exposes:
- type: mcp
namespace: loyalty-campaign
port: 8080
tools:
- name: launch-campaign
description: Create a loyalty promotion and launch a targeted email campaign.
inputParameters:
- name: program_id
in: body
type: string
description: Square loyalty program ID.
- name: promotion_name
in: body
type: string
description: Name of the promotion.
- name: points_multiplier
in: body
type: integer
description: Points multiplier for the promotion.
steps:
- name: create-promotion
type: call
call: square.create-loyalty-promotion
with:
program_id: '{{program_id}}'
name: '{{promotion_name}}'
incentive_points_multiplier: '{{points_multiplier}}'
- name: get-members
type: call
call: square.list-loyalty-accounts
with:
program_id: '{{program_id}}'
- name: send-campaign
type: call
call: mailchimp.create-campaign
with:
list_id: loyalty-members
subject: '{{promotion_name}} — Earn {{points_multiplier}}x Points!'
body: Start earning {{points_multiplier}}x loyalty points today! Promotion runs through {{create-promotion.end_date}}.
- name: track-launch
type: call
call: google-analytics.send-event
with:
event_name: loyalty_campaign_launched
program_id: '{{program_id}}'
promotion_id: '{{create-promotion.id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: loyalty-promotions
path: /loyalty/programs/{{program_id}}/promotions
inputParameters:
- name: program_id
in: path
operations:
- name: create-loyalty-promotion
method: POST
- name: loyalty-accounts
path: /loyalty/accounts/search
operations:
- name: list-loyalty-accounts
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: google-analytics
baseUri: https://www.google-analytics.com
authentication:
type: apiKey
name: measurement_id
in: query
value: $secrets.ga_measurement_id
resources:
- name: events
path: /mp/collect
operations:
- name: send-event
method: POST
Fetches merchant reviews from ZoomInfo, analyzes sentiment, updates the HubSpot contact record with NPS data, and posts a summary to the merchant success Slack channel.
naftiko: '0.5'
info:
label: Merchant Social Review Monitor
description: Fetches merchant reviews from ZoomInfo, analyzes sentiment, updates the HubSpot contact record with NPS data, and posts a summary to the merchant success Slack channel.
tags:
- merchant-success
- zoominfo
- hubspot
- slack
capability:
exposes:
- type: mcp
namespace: review-monitor
port: 8080
tools:
- name: monitor-reviews
description: Collect and analyze merchant reviews with CRM update and team notification.
inputParameters:
- name: merchant_domain
in: body
type: string
description: Merchant website domain.
- name: hubspot_contact_id
in: body
type: string
description: HubSpot contact ID.
steps:
- name: get-company-info
type: call
call: zoominfo.get-company
with:
domain: '{{merchant_domain}}'
- name: get-reviews
type: call
call: zoominfo.get-reviews
with:
company_id: '{{get-company-info.id}}'
- name: update-crm
type: call
call: hubspot.update-contact
with:
contact_id: '{{hubspot_contact_id}}'
properties:
review_count: '{{get-reviews.total_count}}'
avg_rating: '{{get-reviews.average_rating}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: '#merchant-success'
text: 'Review update for {{merchant_domain}}: {{get-reviews.total_count}} reviews, avg {{get-reviews.average_rating}}/5. CRM updated.'
consumes:
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: companies
path: /lookup/company
inputParameters:
- name: domain
in: query
operations:
- name: get-company
method: GET
- name: reviews
path: /companies/{{company_id}}/reviews
inputParameters:
- name: company_id
in: path
operations:
- name: get-reviews
method: GET
- 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: update-contact
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
Aggregates sales data across all Square locations, calculates KPIs, stores the report in S3, and distributes via MailChimp to the merchant's management team.
naftiko: '0.5'
info:
label: Merchant Multi-Location Reporting
description: Aggregates sales data across all Square locations, calculates KPIs, stores the report in S3, and distributes via MailChimp to the merchant's management team.
tags:
- reporting
- square
- amazon-s3
- mailchimp
capability:
exposes:
- type: mcp
namespace: multi-location-report
port: 8080
tools:
- name: generate-multi-location-report
description: Generate a consolidated multi-location sales report.
inputParameters:
- name: merchant_id
in: body
type: string
description: Square merchant ID.
- name: period
in: body
type: string
description: Reporting period (daily, weekly, monthly).
- name: distribution_list
in: body
type: string
description: Comma-separated email list.
steps:
- name: list-locations
type: call
call: square.list-locations
with:
merchant_id: '{{merchant_id}}'
- name: get-sales
type: call
call: square.list-payments
with:
merchant_id: '{{merchant_id}}'
period: '{{period}}'
- name: store-report
type: call
call: s3.put-object
with:
bucket: merchant-reports
key: '{{merchant_id}}/{{period}}/multi-location.json'
body: '{{get-sales.summary}}'
- name: distribute
type: call
call: mailchimp.send-transactional
with:
to: '{{distribution_list}}'
subject: Multi-Location Report — {{period}}
body: 'Locations: {{list-locations.count}}. Total revenue: ${{get-sales.total_amount}}. Top location: {{get-sales.top_location}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: locations
path: /locations
operations:
- name: list-locations
method: GET
- name: payments
path: /payments
inputParameters:
- name: merchant_id
in: query
- name: period
in: query
operations:
- name: list-payments
method: GET
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
name: key
in: body
value: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send
operations:
- name: send-transactional
method: POST
Pulls Square transaction analytics for a location, transforms the data, and sends it to Google Analytics for merchant business intelligence.
naftiko: '0.5'
info:
label: Merchant Analytics to Google Analytics
description: Pulls Square transaction analytics for a location, transforms the data, and sends it to Google Analytics for merchant business intelligence.
tags:
- analytics
- square
- google-analytics
- merchant-services
capability:
exposes:
- type: mcp
namespace: merchant-analytics
port: 8080
tools:
- name: sync-sales-to-ga
description: Push Square transaction data to Google Analytics for a merchant location.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location ID.
- name: ga_tracking_id
in: body
type: string
description: The Google Analytics tracking ID.
- name: date
in: body
type: string
description: Report date in YYYY-MM-DD format.
steps:
- name: list-payments
type: call
call: square.list-payments
with:
location_id: '{{location_id}}'
begin_time: '{{date}}T00:00:00Z'
end_time: '{{date}}T23:59:59Z'
- name: send-to-ga
type: call
call: google-analytics.send-event
with:
tracking_id: '{{ga_tracking_id}}'
event_category: sales
event_action: daily_summary
event_label: '{{location_id}}'
event_value: '{{list-payments.total_count}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
operations:
- name: list-payments
method: GET
- type: http
namespace: google-analytics
baseUri: https://www.google-analytics.com
authentication:
type: none
resources:
- name: collect
path: /collect
operations:
- name: send-event
method: POST
Enrolls a Cash App user in direct deposit by verifying identity, provisioning a routing number, updating the user profile, and sending confirmation via SendGrid.
naftiko: '0.5'
info:
label: Cash App Direct Deposit Enrollment
description: Enrolls a Cash App user in direct deposit by verifying identity, provisioning a routing number, updating the user profile, and sending confirmation via SendGrid.
tags:
- banking
- cash-app
- sendgrid
capability:
exposes:
- type: mcp
namespace: direct-deposit
port: 8080
tools:
- name: enroll-direct-deposit
description: Set up direct deposit for a Cash App user with identity verification and confirmation.
inputParameters:
- name: user_id
in: body
type: string
description: Cash App user identifier.
- name: user_email
in: body
type: string
description: User email for confirmation.
steps:
- name: verify-identity
type: call
call: cashapp.verify-identity
with:
user_id: '{{user_id}}'
- name: provision-routing
type: call
call: cashapp.create-direct-deposit
with:
user_id: '{{user_id}}'
- name: send-confirmation
type: call
call: sendgrid.send-email
with:
to: '{{user_email}}'
subject: Direct Deposit Activated
body: 'Your direct deposit is set up! Routing: {{provision-routing.routing_number}}. Account: {{provision-routing.account_number_last4}}.'
consumes:
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: identity
path: /users/{{user_id}}/verify
inputParameters:
- name: user_id
in: path
operations:
- name: verify-identity
method: POST
- name: direct-deposit
path: /users/{{user_id}}/direct-deposit
inputParameters:
- name: user_id
in: path
operations:
- name: create-direct-deposit
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
Pulls the daily payment summary for a Square location, formats a sales report, and posts it to the merchant's LinkedIn page and HubSpot CRM contact timeline.
naftiko: '0.5'
info:
label: Merchant Daily Sales Report
description: Pulls the daily payment summary for a Square location, formats a sales report, and posts it to the merchant's LinkedIn page and HubSpot CRM contact timeline.
tags:
- reporting
- square
- linkedin
- hubspot
- merchant-services
capability:
exposes:
- type: mcp
namespace: daily-sales
port: 8080
tools:
- name: generate-daily-sales-report
description: Aggregate daily sales from Square, post to LinkedIn, and update HubSpot.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location ID.
- name: report_date
in: body
type: string
description: The date for the report in YYYY-MM-DD format.
- name: hubspot_contact_id
in: body
type: string
description: The HubSpot contact ID for the merchant.
steps:
- name: list-payments
type: call
call: square.list-payments
with:
location_id: '{{location_id}}'
begin_time: '{{report_date}}T00:00:00Z'
end_time: '{{report_date}}T23:59:59Z'
- name: post-to-linkedin
type: call
call: linkedin.create-post
with:
text: 'Daily sales update for {{report_date}}: {{list-payments.total_count}} transactions processed. Powered by Square.'
- name: update-hubspot
type: call
call: hubspot.create-engagement
with:
contact_id: '{{hubspot_contact_id}}'
type: NOTE
body: 'Daily sales report ({{report_date}}): {{list-payments.total_count}} payments, total volume available in Square dashboard for location {{location_id}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
operations:
- name: list-payments
method: GET
- 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: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: engagements
path: /engagements/v1/engagements
operations:
- name: create-engagement
method: POST
Aggregates payment data from Square, enriches with Google Analytics session data, generates a report in Google Analytics, and sends the summary via MailChimp.
naftiko: '0.5'
info:
label: Merchant Revenue Report Pipeline
description: Aggregates payment data from Square, enriches with Google Analytics session data, generates a report in Google Analytics, and sends the summary via MailChimp.
tags:
- analytics
- square
- google-analytics
- mailchimp
capability:
exposes:
- type: mcp
namespace: revenue-report
port: 8080
tools:
- name: generate-revenue-report
description: Generate and distribute a merchant revenue report with web analytics.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location identifier.
- name: period
in: body
type: string
description: Reporting period (daily, weekly, monthly).
- name: merchant_email
in: body
type: string
description: Merchant email for report delivery.
steps:
- name: get-payments
type: call
call: square.list-payments
with:
location_id: '{{location_id}}'
period: '{{period}}'
- name: get-analytics
type: call
call: google-analytics.get-report
with:
property_id: '{{location_id}}'
period: '{{period}}'
- name: track-event
type: call
call: google-analytics.send-event
with:
event_name: revenue_report_generated
location_id: '{{location_id}}'
- name: send-report
type: call
call: mailchimp.send-transactional
with:
to: '{{merchant_email}}'
subject: Revenue Report — {{period}}
body: 'Total revenue: ${{get-payments.total_amount}}. Transactions: {{get-payments.count}}. Sessions: {{get-analytics.sessions}}. Conversion: {{get-analytics.conversion_rate}}%.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
inputParameters:
- name: location_id
in: query
- name: period
in: query
operations:
- name: list-payments
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: get-report
method: POST
- name: events
path: /properties/{{property_id}}/events
inputParameters:
- name: property_id
in: path
operations:
- name: send-event
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
name: key
in: body
value: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send
operations:
- name: send-transactional
method: POST
Creates a HubSpot contact when a new merchant lead signs up for Square, enriches with ZoomInfo data, and sends a welcome email via MailChimp.
naftiko: '0.5'
info:
label: HubSpot Merchant Lead Capture
description: Creates a HubSpot contact when a new merchant lead signs up for Square, enriches with ZoomInfo data, and sends a welcome email via MailChimp.
tags:
- sales
- hubspot
- zoominfo
- mailchimp
- merchant-services
capability:
exposes:
- type: mcp
namespace: lead-capture
port: 8080
tools:
- name: capture-merchant-lead
description: Create a CRM contact, enrich with firmographics, and send a welcome campaign.
inputParameters:
- name: email
in: body
type: string
description: The merchant lead's email address.
- name: business_name
in: body
type: string
description: The business name.
- name: first_name
in: body
type: string
description: Contact first name.
- name: last_name
in: body
type: string
description: Contact last name.
steps:
- name: create-contact
type: call
call: hubspot.create-contact
with:
properties:
email: '{{email}}'
firstname: '{{first_name}}'
lastname: '{{last_name}}'
company: '{{business_name}}'
- name: enrich
type: call
call: zoominfo.search-company
with:
companyName: '{{business_name}}'
- name: send-welcome
type: call
call: mailchimp.send-transactional
with:
to: '{{email}}'
subject: Welcome to Square, {{first_name}}!
body: Thank you for your interest in Square. We see {{business_name}} is in the {{enrich.data.0.industry}} industry with approximately {{enrich.data.0.employeeCount}} employees. Let us tailor a solution for you.
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
operations:
- name: create-contact
method: POST
- 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: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
name: key
in: body
value: $secrets.mandrill_api_key
resources:
- name: messages
path: /messages/send
operations:
- name: send-transactional
method: POST
When a payment dispute is filed, retrieves dispute details from Square, collects evidence from S3, submits the response, and updates the merchant via HubSpot.
naftiko: '0.5'
info:
label: Merchant Dispute Resolution Orchestrator
description: When a payment dispute is filed, retrieves dispute details from Square, collects evidence from S3, submits the response, and updates the merchant via HubSpot.
tags:
- disputes
- square
- amazon-s3
- hubspot
capability:
exposes:
- type: mcp
namespace: dispute-resolution
port: 8080
tools:
- name: resolve-dispute
description: Gather evidence and submit a dispute response for a Square payment dispute.
inputParameters:
- name: dispute_id
in: body
type: string
description: The Square dispute identifier.
- name: merchant_email
in: body
type: string
description: Merchant contact email.
steps:
- name: get-dispute
type: call
call: square.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: fetch-evidence
type: call
call: s3.get-object
with:
bucket: dispute-evidence
key: '{{get-dispute.payment_id}}/evidence.pdf'
- name: submit-response
type: call
call: square.submit-evidence
with:
dispute_id: '{{dispute_id}}'
evidence_type: GENERIC_EVIDENCE
content: '{{fetch-evidence.body}}'
- name: notify-merchant
type: call
call: hubspot.send-email
with:
to: '{{merchant_email}}'
subject: Dispute {{dispute_id}} — Evidence Submitted
body: 'We have submitted evidence for dispute {{dispute_id}} (${{get-dispute.amount}}). Current status: {{get-dispute.state}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: disputes
path: /disputes/{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- name: evidence
path: /disputes/{{dispute_id}}/evidence
inputParameters:
- name: dispute_id
in: path
operations:
- name: submit-evidence
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: objects
path: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: get-object
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
Creates a Square invoice for a customer, attaches line items, and publishes it for email delivery.
naftiko: '0.5'
info:
label: Square Invoice Creator
description: Creates a Square invoice for a customer, attaches line items, and publishes it for email delivery.
tags:
- invoices
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-invoices
port: 8080
tools:
- name: create-and-publish-invoice
description: Create a Square invoice with line items and publish it immediately for delivery to the customer.
inputParameters:
- name: customer_id
in: body
type: string
description: The Square customer ID to invoice.
- name: location_id
in: body
type: string
description: The Square location ID for the invoice.
- name: line_item_name
in: body
type: string
description: Name of the line item.
- name: amount_cents
in: body
type: integer
description: The line item amount in cents.
steps:
- name: create-invoice
type: call
call: square.create-invoice
with:
invoice:
location_id: '{{location_id}}'
primary_recipient:
customer_id: '{{customer_id}}'
payment_requests:
- request_type: BALANCE
due_date: '{{due_date}}'
- name: publish-invoice
type: call
call: square.publish-invoice
with:
invoice_id: '{{create-invoice.invoice.id}}'
version: '{{create-invoice.invoice.version}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: invoices
path: /invoices
operations:
- name: create-invoice
method: POST
- name: invoice-publish
path: /invoices/{{invoice_id}}/publish
inputParameters:
- name: invoice_id
in: path
operations:
- name: publish-invoice
method: POST
When a chargeback threshold is breached, queries Elasticsearch for recent dispute patterns, opens a Datadog alert, and creates a ServiceNow escalation ticket for risk review.
naftiko: '0.5'
info:
label: Merchant Chargeback Alert Pipeline
description: When a chargeback threshold is breached, queries Elasticsearch for recent dispute patterns, opens a Datadog alert, and creates a ServiceNow escalation ticket for risk review.
tags:
- chargebacks
- risk
- elasticsearch
- datadog
- servicenow
- merchant-services
capability:
exposes:
- type: mcp
namespace: chargeback-alerts
port: 8080
tools:
- name: escalate-chargeback-risk
description: Analyze chargeback patterns and escalate to risk operations when threshold is breached.
inputParameters:
- name: merchant_id
in: body
type: string
description: The Square merchant ID.
- name: dispute_count
in: body
type: integer
description: Number of disputes in the current period.
- name: threshold
in: body
type: integer
description: The chargeback count threshold that was breached.
steps:
- name: search-disputes
type: call
call: elasticsearch.search
with:
index: square-disputes-*
query:
bool:
filter:
- term:
merchant_id: '{{merchant_id}}'
- range:
created_at:
gte: now-30d
- name: create-alert
type: call
call: datadog.create-event
with:
title: 'Chargeback threshold breached: merchant {{merchant_id}}'
text: '{{dispute_count}} disputes in 30 days (threshold: {{threshold}}). Top dispute reasons from search: {{search-disputes.hits.total.value}} hits.'
alert_type: warning
- name: open-escalation
type: call
call: servicenow.create-incident
with:
short_description: 'Chargeback risk escalation: merchant {{merchant_id}}'
description: 'Merchant {{merchant_id}} breached chargeback threshold ({{dispute_count}}/{{threshold}}). Pattern analysis available in Elasticsearch. Datadog event: {{create-alert.event.url}}.'
category: risk_escalation
assigned_group: Risk_Operations
urgency: '2'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://block-es.internal:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
- 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: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Fetches the current Bitcoin-to-USD exchange rate from the Block Bitcoin API for use in Cash App pricing and merchant settlement calculations.
naftiko: '0.5'
info:
label: Bitcoin Price Ticker
description: Fetches the current Bitcoin-to-USD exchange rate from the Block Bitcoin API for use in Cash App pricing and merchant settlement calculations.
tags:
- bitcoin
- crypto
- fintech
- cash-app
capability:
exposes:
- type: mcp
namespace: bitcoin-pricing
port: 8080
tools:
- name: get-btc-usd-price
description: Retrieve the current BTC/USD exchange rate.
inputParameters: []
call: bitcoin.get-price
with:
currency_pair: BTC-USD
consumes:
- type: http
namespace: bitcoin
baseUri: https://api.blockchain.info/v2
authentication:
type: bearer
token: $secrets.blockchain_api_token
resources:
- name: ticker
path: /ticker
operations:
- name: get-price
method: GET
Manages API key rotation by generating a new key in Square, updating the secret in AWS Secrets Manager, notifying the developer via SendGrid, and logging in ServiceNow.
naftiko: '0.5'
info:
label: Developer API Key Lifecycle Pipeline
description: Manages API key rotation by generating a new key in Square, updating the secret in AWS Secrets Manager, notifying the developer via SendGrid, and logging in ServiceNow.
tags:
- developer-platform
- square
- amazon-web-services
- sendgrid
- servicenow
capability:
exposes:
- type: mcp
namespace: api-key-lifecycle
port: 8080
tools:
- name: rotate-api-key
description: Rotate a developer API key with secret storage update and notification.
inputParameters:
- name: application_id
in: body
type: string
description: The Square application identifier.
- name: developer_email
in: body
type: string
description: Developer contact email.
steps:
- name: generate-key
type: call
call: square.rotate-access-token
with:
application_id: '{{application_id}}'
- name: store-secret
type: call
call: aws-secrets.update-secret
with:
secret_id: square/{{application_id}}/access-token
secret_value: '{{generate-key.access_token}}'
- name: notify-developer
type: call
call: sendgrid.send-email
with:
to: '{{developer_email}}'
subject: API Key Rotated — {{application_id}}
body: 'Your Square API key has been rotated. Please update your integration. New key prefix: {{generate-key.token_prefix}}.'
- name: log-rotation
type: call
call: servicenow.create-change-request
with:
short_description: 'API key rotation: {{application_id}}'
description: 'API key rotated for application {{application_id}}. Developer: {{developer_email}}.'
category: security
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: oauth
path: /oauth2/token/revoke
operations:
- name: rotate-access-token
method: POST
- type: http
namespace: aws-secrets
baseUri: https://secretsmanager.us-east-1.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: secrets
path: /
operations:
- name: update-secret
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: servicenow
baseUri: https://block.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-request
method: POST
Provisions a new Square Terminal device, configures it for the merchant location, registers in ServiceNow asset management, and sends setup instructions via SendGrid.
naftiko: '0.5'
info:
label: Square POS Deployment Pipeline
description: Provisions a new Square Terminal device, configures it for the merchant location, registers in ServiceNow asset management, and sends setup instructions via SendGrid.
tags:
- hardware
- square
- servicenow
- sendgrid
capability:
exposes:
- type: mcp
namespace: pos-deployment
port: 8080
tools:
- name: deploy-terminal
description: Provision and configure a Square Terminal for a merchant location.
inputParameters:
- name: location_id
in: body
type: string
description: Square location ID.
- name: device_code
in: body
type: string
description: Terminal device code.
- name: merchant_email
in: body
type: string
description: Merchant email.
steps:
- name: create-device-code
type: call
call: square.create-device-code
with:
location_id: '{{location_id}}'
product_type: TERMINAL_API
- name: register-asset
type: call
call: servicenow.create-asset
with:
name: Square Terminal — {{location_id}}
asset_tag: '{{device_code}}'
category: POS Hardware
- name: send-instructions
type: call
call: sendgrid.send-email
with:
to: '{{merchant_email}}'
subject: 'Square Terminal Setup — Device Code: {{create-device-code.code}}'
body: 'Your Square Terminal is ready. Enter code {{create-device-code.code}} on your terminal to activate. Asset ID: {{register-asset.asset_id}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: devices
path: /devices/codes
operations:
- name: create-device-code
method: POST
- type: http
namespace: servicenow
baseUri: https://block.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: create-asset
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 payout details from the Square Payouts API including destination bank account, amount, and arrival date.
naftiko: '0.5'
info:
label: Square Payout Details Retrieval
description: Fetches payout details from the Square Payouts API including destination bank account, amount, and arrival date.
tags:
- payouts
- square
- settlement
- fintech
capability:
exposes:
- type: mcp
namespace: square-payouts
port: 8080
tools:
- name: get-payout
description: Retrieve a Square payout by ID.
inputParameters:
- name: payout_id
in: body
type: string
description: The Square payout ID.
call: square.get-payout
with:
payout_id: '{{payout_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payouts
path: /payouts/{{payout_id}}
inputParameters:
- name: payout_id
in: path
operations:
- name: get-payout
method: GET
Reconciles Square payment settlements against bank deposits, identifies discrepancies, logs in S3, and alerts the finance team via Slack.
naftiko: '0.5'
info:
label: Merchant Settlement Reconciliation Pipeline
description: Reconciles Square payment settlements against bank deposits, identifies discrepancies, logs in S3, and alerts the finance team via Slack.
tags:
- finance
- square
- amazon-s3
- slack
capability:
exposes:
- type: mcp
namespace: settlement-recon
port: 8080
tools:
- name: reconcile-settlements
description: Reconcile Square settlements against bank records with discrepancy tracking.
inputParameters:
- name: location_id
in: body
type: string
description: Square location ID.
- name: settlement_date
in: body
type: string
description: Settlement date YYYY-MM-DD.
steps:
- name: get-payouts
type: call
call: square.list-payouts
with:
location_id: '{{location_id}}'
begin_time: '{{settlement_date}}'
- name: get-payments
type: call
call: square.list-payments
with:
location_id: '{{location_id}}'
begin_time: '{{settlement_date}}'
- name: store-recon
type: call
call: s3.put-object
with:
bucket: settlement-reconciliation
key: '{{location_id}}/{{settlement_date}}/recon.json'
body: '{{get-payouts.summary}}'
- name: alert-finance
type: call
call: slack.post-message
with:
channel: '#finance-ops'
text: 'Settlement reconciliation for {{location_id}} on {{settlement_date}}: Total settled: ${{get-payouts.total_amount}}. Payments: ${{get-payments.total_amount}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payouts
path: /payouts
inputParameters:
- name: location_id
in: query
- name: begin_time
in: query
operations:
- name: list-payouts
method: GET
- name: payments
path: /payments
inputParameters:
- name: location_id
in: query
- name: begin_time
in: query
operations:
- name: list-payments
method: GET
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: 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 payment dispute is opened, fetches the dispute details from Square, retrieves related order evidence, and submits the evidence package back to the Disputes API.
naftiko: '0.5'
info:
label: Square Dispute Evidence Submission
description: When a payment dispute is opened, fetches the dispute details from Square, retrieves related order evidence, and submits the evidence package back to the Disputes API.
tags:
- disputes
- square
- risk
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-disputes
port: 8080
tools:
- name: submit-dispute-evidence
description: Gather order evidence for a Square dispute and submit it to the Disputes API.
inputParameters:
- name: dispute_id
in: body
type: string
description: The Square dispute ID.
steps:
- name: get-dispute
type: call
call: square.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: get-order-evidence
type: call
call: square.get-order
with:
order_id: '{{get-dispute.dispute.order_id}}'
- name: submit-evidence
type: call
call: square.create-dispute-evidence-text
with:
dispute_id: '{{dispute_id}}'
evidence_type: GENERIC_EVIDENCE
evidence_text: 'Order {{get-order-evidence.order.id}} fulfilled on {{get-order-evidence.order.fulfillments.0.updated_at}}. Total: {{get-order-evidence.order.total_money.amount}} {{get-order-evidence.order.total_money.currency}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: disputes
path: /disputes/{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- name: dispute-evidence
path: /disputes/{{dispute_id}}/evidence-text
inputParameters:
- name: dispute_id
in: path
operations:
- name: create-dispute-evidence-text
method: POST
Retrieves the balance and status of a Square gift card by its GAN (gift card account number).
naftiko: '0.5'
info:
label: Square Gift Card Balance
description: Retrieves the balance and status of a Square gift card by its GAN (gift card account number).
tags:
- gift-cards
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-gift-cards
port: 8080
tools:
- name: get-gift-card-balance
description: Look up a Square gift card balance by GAN.
inputParameters:
- name: gan
in: body
type: string
description: The gift card account number.
call: square.retrieve-gift-card-from-gan
with:
gan: '{{gan}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: gift-cards
path: /gift-cards/from-gan
operations:
- name: retrieve-gift-card-from-gan
method: POST
Creates a Square Online Checkout payment link for a given amount, item name, and merchant location.
naftiko: '0.5'
info:
label: Square Checkout Link Generator
description: Creates a Square Online Checkout payment link for a given amount, item name, and merchant location.
tags:
- checkout
- square
- ecommerce
- payments
capability:
exposes:
- type: mcp
namespace: square-checkout
port: 8080
tools:
- name: create-checkout-link
description: Generate a Square payment link for online checkout.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location ID.
- name: item_name
in: body
type: string
description: The item name for the checkout.
- name: amount_cents
in: body
type: integer
description: The amount in cents.
- name: currency
in: body
type: string
description: ISO 4217 currency code.
call: square.create-payment-link
with:
quick_pay:
name: '{{item_name}}'
price_money:
amount: '{{amount_cents}}'
currency: '{{currency}}'
location_id: '{{location_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payment-links
path: /online-checkout/payment-links
operations:
- name: create-payment-link
method: POST
Retrieves a team member profile from Square by team member ID, returning name, role, assigned locations, and wage settings.
naftiko: '0.5'
info:
label: Square Team Member Lookup
description: Retrieves a team member profile from Square by team member ID, returning name, role, assigned locations, and wage settings.
tags:
- workforce
- square
capability:
exposes:
- type: mcp
namespace: square-team
port: 8080
tools:
- name: get-team-member
description: Look up a Square team member by ID.
inputParameters:
- name: team_member_id
in: body
type: string
description: The Square team member identifier.
call: square.get-team-member
with:
team_member_id: '{{team_member_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: team-members
path: /team-members/{{team_member_id}}
inputParameters:
- name: team_member_id
in: path
operations:
- name: get-team-member
method: GET
Monitors Lightning Network channel capacity, rebalances channels when liquidity is low, logs actions in CloudWatch, and notifies the infrastructure team via Slack.
naftiko: '0.5'
info:
label: Bitcoin Lightning Channel Management
description: Monitors Lightning Network channel capacity, rebalances channels when liquidity is low, logs actions in CloudWatch, and notifies the infrastructure team via Slack.
tags:
- bitcoin
- lightning-network
- cloudwatch
- slack
capability:
exposes:
- type: mcp
namespace: lightning-channels
port: 8080
tools:
- name: manage-channels
description: Monitor and rebalance Lightning Network channels with logging and alerting.
inputParameters:
- name: node_id
in: body
type: string
description: Lightning node public key.
- name: min_capacity_sats
in: body
type: integer
description: Minimum channel capacity in satoshis.
steps:
- name: get-channels
type: call
call: lightning.list-channels
with:
node_id: '{{node_id}}'
- name: rebalance
type: call
call: lightning.rebalance-channel
with:
node_id: '{{node_id}}'
min_capacity: '{{min_capacity_sats}}'
- name: log-metrics
type: call
call: cloudwatch.put-metric
with:
namespace: Lightning/Channels
metric_name: ChannelCapacity
value: '{{rebalance.total_capacity}}'
- name: notify-team
type: call
call: slack.post-message
with:
channel: '#lightning-ops'
text: 'Lightning channel rebalance complete. Node: {{node_id}}. Channels rebalanced: {{rebalance.count}}. Total capacity: {{rebalance.total_capacity}} sats.'
consumes:
- type: http
namespace: lightning
baseUri: https://lightning.block.xyz/api/v1
authentication:
type: bearer
token: $secrets.lightning_api_token
resources:
- name: channels
path: /nodes/{{node_id}}/channels
inputParameters:
- name: node_id
in: path
operations:
- name: list-channels
method: GET
- name: rebalance
path: /nodes/{{node_id}}/rebalance
inputParameters:
- name: node_id
in: path
operations:
- name: rebalance-channel
method: POST
- type: http
namespace: cloudwatch
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: metrics
path: /
operations:
- name: put-metric
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 the status of an Afterpay buy-now-pay-later order by token, returning payment schedule, installment amounts, and current payment status.
naftiko: '0.5'
info:
label: Afterpay Payment Status
description: Checks the status of an Afterpay buy-now-pay-later order by token, returning payment schedule, installment amounts, and current payment status.
tags:
- payments
- afterpay
capability:
exposes:
- type: mcp
namespace: afterpay
port: 8080
tools:
- name: get-payment-status
description: Retrieve Afterpay order status by order token.
inputParameters:
- name: token
in: body
type: string
description: The Afterpay order token.
call: afterpay.get-order
with:
token: '{{token}}'
consumes:
- type: http
namespace: afterpay
baseUri: https://global-api.afterpay.com/v2
authentication:
type: basic
username: $secrets.afterpay_merchant_id
password: $secrets.afterpay_secret_key
resources:
- name: orders
path: /payments/{{token}}
inputParameters:
- name: token
in: path
operations:
- name: get-order
method: GET
Retrieves the latest commit status and branch protection details for a Block GitHub repository, returning CI check results and merge requirements.
naftiko: '0.5'
info:
label: GitHub Repository Status
description: Retrieves the latest commit status and branch protection details for a Block GitHub repository, returning CI check results and merge requirements.
tags:
- devops
- github
capability:
exposes:
- type: mcp
namespace: github-repo
port: 8080
tools:
- name: get-repo-status
description: Get the latest commit status for a repository branch.
inputParameters:
- name: repo
in: body
type: string
description: Repository name in owner/repo format.
- name: branch
in: body
type: string
description: Branch name.
call: github.get-status
with:
repo: '{{repo}}'
branch: '{{branch}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: statuses
path: /repos/{{repo}}/commits/{{branch}}/status
inputParameters:
- name: repo
in: path
- name: branch
in: path
operations:
- name: get-status
method: GET
Accepts a payment in a foreign currency, converts the amount using real-time exchange rates, processes the payment in Square, and logs the conversion in PostgreSQL.
naftiko: '0.5'
info:
label: Multi-Currency Payment Conversion
description: Accepts a payment in a foreign currency, converts the amount using real-time exchange rates, processes the payment in Square, and logs the conversion in PostgreSQL.
tags:
- multi-currency
- payments
- square
- postgresql
- fintech
capability:
exposes:
- type: mcp
namespace: currency-payments
port: 8080
tools:
- name: process-multicurrency-payment
description: Convert and process a foreign currency payment through Square.
inputParameters:
- name: source_id
in: body
type: string
description: The Square payment source token.
- name: amount
in: body
type: integer
description: The amount in the source currency's smallest denomination.
- name: source_currency
in: body
type: string
description: The source ISO 4217 currency code.
- name: target_currency
in: body
type: string
description: The target ISO 4217 currency code (typically USD).
steps:
- name: get-exchange-rate
type: call
call: exchangerate.get-rate
with:
base: '{{source_currency}}'
target: '{{target_currency}}'
- name: process-payment
type: call
call: square.create-payment
with:
source_id: '{{source_id}}'
amount_money:
amount: '{{amount}}'
currency: '{{source_currency}}'
- name: log-conversion
type: call
call: postgresql.insert-row
with:
table: currency_conversions
payment_id: '{{process-payment.payment.id}}'
source_amount: '{{amount}}'
source_currency: '{{source_currency}}'
exchange_rate: '{{get-exchange-rate.rate}}'
target_currency: '{{target_currency}}'
consumes:
- type: http
namespace: exchangerate
baseUri: https://api.exchangerate.host
authentication:
type: apiKey
name: access_key
in: query
value: $secrets.exchangerate_key
resources:
- name: rates
path: /convert
operations:
- name: get-rate
method: GET
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
operations:
- name: create-payment
method: POST
- type: http
namespace: postgresql
baseUri: https://block-data.internal/api/v1
authentication:
type: bearer
token: $secrets.internal_db_token
resources:
- name: rows
path: /tables/{{table}}/rows
inputParameters:
- name: table
in: path
operations:
- name: insert-row
method: POST
Creates discount codes in Square, builds a customer segment in MailChimp, launches an email campaign, and tracks redemptions in Google Analytics.
naftiko: '0.5'
info:
label: Merchant Coupon Distribution Workflow
description: Creates discount codes in Square, builds a customer segment in MailChimp, launches an email campaign, and tracks redemptions in Google Analytics.
tags:
- promotions
- square
- mailchimp
- google-analytics
capability:
exposes:
- type: mcp
namespace: coupon-distribution
port: 8080
tools:
- name: distribute-coupons
description: Create discount codes and distribute via targeted email campaign.
inputParameters:
- name: discount_name
in: body
type: string
description: Name of the discount.
- name: percentage_off
in: body
type: integer
description: Discount percentage.
- name: location_id
in: body
type: string
description: Square location ID.
steps:
- name: create-discount
type: call
call: square.create-catalog-discount
with:
name: '{{discount_name}}'
percentage: '{{percentage_off}}'
- name: get-customers
type: call
call: square.search-customers
with:
location_ids: '{{location_id}}'
- name: send-campaign
type: call
call: mailchimp.create-campaign
with:
list_id: active-customers
subject: '{{discount_name}} — {{percentage_off}}% Off!'
body: Use code {{create-discount.code}} for {{percentage_off}}% off your next purchase!
- name: track-launch
type: call
call: google-analytics.send-event
with:
event_name: coupon_campaign_launched
discount: '{{discount_name}}'
recipients: '{{get-customers.count}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: catalog
path: /catalog/object
operations:
- name: create-catalog-discount
method: POST
- name: customers
path: /customers/search
operations:
- name: search-customers
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: google-analytics
baseUri: https://www.google-analytics.com
authentication:
type: apiKey
name: measurement_id
in: query
value: $secrets.ga_measurement_id
resources:
- name: events
path: /mp/collect
operations:
- name: send-event
method: POST
Enriches a Square merchant profile with firmographic data from ZoomInfo including employee count, revenue, and industry classification.
naftiko: '0.5'
info:
label: ZoomInfo Merchant Enrichment
description: Enriches a Square merchant profile with firmographic data from ZoomInfo including employee count, revenue, and industry classification.
tags:
- enrichment
- zoominfo
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: merchant-enrichment
port: 8080
tools:
- name: enrich-merchant
description: Enrich a Square merchant with ZoomInfo firmographic data.
inputParameters:
- name: merchant_id
in: body
type: string
description: The Square merchant ID.
- name: business_name
in: body
type: string
description: The merchant's business name for ZoomInfo lookup.
steps:
- name: get-merchant
type: call
call: square.get-merchant
with:
merchant_id: '{{merchant_id}}'
- name: enrich-company
type: call
call: zoominfo.search-company
with:
companyName: '{{business_name}}'
- name: update-merchant-note
type: call
call: square.update-merchant-note
with:
merchant_id: '{{merchant_id}}'
note: 'ZoomInfo: {{enrich-company.data.0.employeeCount}} employees, {{enrich-company.data.0.revenue}} revenue, Industry: {{enrich-company.data.0.industry}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: merchants
path: /merchants/{{merchant_id}}
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-merchant
method: GET
- name: update-merchant-note
method: PUT
- 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
Uploads a compliance document to the Block SharePoint compliance library and creates a metadata record for audit tracking.
naftiko: '0.5'
info:
label: SharePoint Compliance Document Upload
description: Uploads a compliance document to the Block SharePoint compliance library and creates a metadata record for audit tracking.
tags:
- compliance
- sharepoint
- documents
capability:
exposes:
- type: mcp
namespace: compliance-docs
port: 8080
tools:
- name: upload-compliance-doc
description: Upload a compliance document to SharePoint.
inputParameters:
- name: document_name
in: body
type: string
description: The document file name.
- name: folder_path
in: body
type: string
description: The SharePoint folder path.
- name: content_base64
in: body
type: string
description: The document content in base64 encoding.
call: sharepoint.upload-file
with:
site_id: block_compliance
folder_path: '{{folder_path}}'
file_name: '{{document_name}}'
content: '{{content_base64}}'
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
When a payment processing outage is detected via Datadog, creates a ServiceNow P1 incident, posts a status update to the Square developer status page, and alerts the on-call team in CloudWatch.
naftiko: '0.5'
info:
label: Incident Response for Payment Outage
description: When a payment processing outage is detected via Datadog, creates a ServiceNow P1 incident, posts a status update to the Square developer status page, and alerts the on-call team in CloudWatch.
tags:
- incident-response
- datadog
- servicenow
- cloudwatch
- payments
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: trigger-payment-outage-response
description: Orchestrate the incident response flow for a payment processing outage.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog alert ID.
- name: severity
in: body
type: string
description: Incident severity (P1, P2, P3).
- name: affected_service
in: body
type: string
description: The affected service name.
steps:
- name: get-alert
type: call
call: datadog.get-event
with:
event_id: '{{alert_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: '{{severity}} Payment outage: {{affected_service}}'
description: 'Datadog alert {{alert_id}} triggered. Service: {{affected_service}}. Alert details: {{get-alert.event.text}}.'
urgency: '1'
category: payment_outage
assigned_group: Payments_Oncall
- name: log-incident
type: call
call: cloudwatch.put-log-event
with:
logGroupName: /block/incidents
logStreamName: payment-outages
message: '{{severity}} incident {{create-incident.number}} created for {{affected_service}}. Datadog alert: {{alert_id}}.'
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: events
path: /events/{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: cloudwatch
baseUri: https://logs.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: logs
resources:
- name: log-events
path: /
operations:
- name: put-log-event
method: POST
Retrieves team member hours from Square, calculates payroll, processes payments via Cash App for Business, and archives records in S3.
naftiko: '0.5'
info:
label: Square Payroll Processing Pipeline
description: Retrieves team member hours from Square, calculates payroll, processes payments via Cash App for Business, and archives records in S3.
tags:
- payroll
- square
- cash-app
- amazon-s3
capability:
exposes:
- type: mcp
namespace: payroll-processing
port: 8080
tools:
- name: process-payroll
description: Calculate and process payroll for Square team members.
inputParameters:
- name: location_id
in: body
type: string
description: Square location ID.
- name: pay_period_end
in: body
type: string
description: Pay period end date YYYY-MM-DD.
steps:
- name: get-timecards
type: call
call: square.search-shifts
with:
location_ids: '{{location_id}}'
end_at: '{{pay_period_end}}'
- name: calculate-payroll
type: call
call: square.calculate-pay
with:
shifts: '{{get-timecards.shifts}}'
- name: process-payments
type: call
call: cashapp.batch-pay
with:
payments: '{{calculate-payroll.payment_list}}'
- name: archive-records
type: call
call: s3.put-object
with:
bucket: payroll-records
key: '{{location_id}}/{{pay_period_end}}/payroll.json'
body: '{{calculate-payroll.summary}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: shifts
path: /labor/shifts/search
operations:
- name: search-shifts
method: POST
- name: payroll
path: /labor/payroll/calculate
operations:
- name: calculate-pay
method: POST
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: payments
path: /payments/batch
operations:
- name: batch-pay
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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
Searches the TIDAL music catalog by query string, returning matching tracks with artist, album, and streaming URL information.
naftiko: '0.5'
info:
label: TIDAL Track Search
description: Searches the TIDAL music catalog by query string, returning matching tracks with artist, album, and streaming URL information.
tags:
- music
- tidal
capability:
exposes:
- type: mcp
namespace: tidal
port: 8080
tools:
- name: search-tracks
description: Search TIDAL music catalog for tracks matching a query.
inputParameters:
- name: query
in: body
type: string
description: Search query string.
call: tidal.search
with:
query: '{{query}}'
type: tracks
consumes:
- type: http
namespace: tidal
baseUri: https://openapi.tidal.com/v2
authentication:
type: bearer
token: $secrets.tidal_api_token
resources:
- name: search
path: /searchresults/{{query}}
inputParameters:
- name: query
in: path
- name: type
in: query
operations:
- name: search
method: GET
Issues a refund against a completed Square payment, logs the refund in PostgreSQL for audit, and notifies the merchant via ServiceNow.
naftiko: '0.5'
info:
label: Square Refund Processor
description: Issues a refund against a completed Square payment, logs the refund in PostgreSQL for audit, and notifies the merchant via ServiceNow.
tags:
- refunds
- square
- postgresql
- servicenow
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-refunds
port: 8080
tools:
- name: process-refund
description: Refund a completed payment, persist the refund record, and notify merchant support.
inputParameters:
- name: payment_id
in: body
type: string
description: The Square payment ID to refund.
- name: amount_cents
in: body
type: integer
description: The refund amount in cents.
- name: currency
in: body
type: string
description: ISO 4217 currency code.
- name: reason
in: body
type: string
description: Reason for the refund.
steps:
- name: issue-refund
type: call
call: square.create-refund
with:
payment_id: '{{payment_id}}'
amount_money:
amount: '{{amount_cents}}'
currency: '{{currency}}'
reason: '{{reason}}'
- name: log-refund
type: call
call: postgresql.insert-refund
with:
table: refund_audit_log
payment_id: '{{payment_id}}'
refund_id: '{{issue-refund.refund.id}}'
amount: '{{amount_cents}}'
reason: '{{reason}}'
- name: notify-support
type: call
call: servicenow.create-incident
with:
short_description: 'Refund processed: {{issue-refund.refund.id}}'
description: 'Refund of {{amount_cents}} {{currency}} issued against payment {{payment_id}}. Reason: {{reason}}.'
category: refund_processing
assigned_group: Merchant_Support
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: postgresql
baseUri: https://block-data.internal/api/v1
authentication:
type: bearer
token: $secrets.internal_db_token
resources:
- name: refund-records
path: /tables/{{table}}/rows
inputParameters:
- name: table
in: path
operations:
- name: insert-refund
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Rotates a Square developer application OAuth token, stores the new credentials in AWS Secrets Manager, and logs the rotation event in CloudWatch.
naftiko: '0.5'
info:
label: Developer Application Key Rotation
description: Rotates a Square developer application OAuth token, stores the new credentials in AWS Secrets Manager, and logs the rotation event in CloudWatch.
tags:
- developer-platform
- security
- square
- amazon-web-services
- cloudwatch
capability:
exposes:
- type: mcp
namespace: key-rotation
port: 8080
tools:
- name: rotate-oauth-token
description: Rotate a Square OAuth token, update secrets storage, and log the rotation.
inputParameters:
- name: application_id
in: body
type: string
description: The Square application ID.
- name: current_refresh_token
in: body
type: string
description: The current OAuth refresh token.
steps:
- name: refresh-token
type: call
call: square.obtain-token
with:
client_id: '{{application_id}}'
grant_type: refresh_token
refresh_token: '{{current_refresh_token}}'
- name: store-secret
type: call
call: aws.update-secret
with:
SecretId: square/oauth/{{application_id}}
SecretString: '{"access_token":"{{refresh-token.access_token}}","refresh_token":"{{refresh-token.refresh_token}}"}'
- name: log-rotation
type: call
call: cloudwatch.put-log-event
with:
logGroupName: /block/key-rotation
logStreamName: square-oauth
message: Token rotated for application {{application_id}} at {{refresh-token.expires_at}}.
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/oauth2
authentication:
type: bearer
token: $secrets.square_client_secret
resources:
- name: token
path: /token
operations:
- name: obtain-token
method: POST
- type: http
namespace: aws
baseUri: https://secretsmanager.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: secretsmanager
resources:
- name: secrets
path: /
operations:
- name: update-secret
method: POST
- type: http
namespace: cloudwatch
baseUri: https://logs.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: logs
resources:
- name: log-events
path: /
operations:
- name: put-log-event
method: POST
Scores a transaction through Mastercard's fraud detection API and, if the risk score exceeds a threshold, blocks the payment in Square and logs the event in Elasticsearch.
naftiko: '0.5'
info:
label: Mastercard Transaction Risk Scoring
description: Scores a transaction through Mastercard's fraud detection API and, if the risk score exceeds a threshold, blocks the payment in Square and logs the event in Elasticsearch.
tags:
- fraud
- risk
- mastercard
- square
- elasticsearch
capability:
exposes:
- type: mcp
namespace: fraud-scoring
port: 8080
tools:
- name: score-and-block-transaction
description: Score a transaction for fraud via Mastercard and block it in Square if risk is high.
inputParameters:
- name: payment_id
in: body
type: string
description: The Square payment ID.
- name: card_number_hash
in: body
type: string
description: SHA-256 hash of the card number.
- name: amount_cents
in: body
type: integer
description: Transaction amount in cents.
- name: merchant_category_code
in: body
type: string
description: The MCC for the merchant.
steps:
- name: score-transaction
type: call
call: mastercard.score-transaction
with:
cardNumberHash: '{{card_number_hash}}'
amount: '{{amount_cents}}'
mcc: '{{merchant_category_code}}'
- name: cancel-payment
type: call
call: square.cancel-payment
with:
payment_id: '{{payment_id}}'
- name: log-fraud-event
type: call
call: elasticsearch.index-document
with:
index: fraud-events
document:
payment_id: '{{payment_id}}'
risk_score: '{{score-transaction.riskScore}}'
action: blocked
mcc: '{{merchant_category_code}}'
consumes:
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/fraud/merchant/v3
authentication:
type: oauth1
consumerKey: $secrets.mastercard_consumer_key
signingKey: $secrets.mastercard_signing_key
resources:
- name: scoring
path: /score
operations:
- name: score-transaction
method: POST
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments/{{payment_id}}/cancel
inputParameters:
- name: payment_id
in: path
operations:
- name: cancel-payment
method: POST
- type: http
namespace: elasticsearch
baseUri: https://block-es.internal:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
Retrieves an appointment booking from Square Bookings API by booking ID, returning service details, staff assignment, and appointment time.
naftiko: '0.5'
info:
label: Square Booking Retrieval
description: Retrieves an appointment booking from Square Bookings API by booking ID, returning service details, staff assignment, and appointment time.
tags:
- appointments
- square
capability:
exposes:
- type: mcp
namespace: square-bookings
port: 8080
tools:
- name: get-booking
description: Look up a Square appointment booking by booking ID.
inputParameters:
- name: booking_id
in: body
type: string
description: The Square booking identifier.
call: square.get-booking
with:
booking_id: '{{booking_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: bookings
path: /bookings/{{booking_id}}
inputParameters:
- name: booking_id
in: path
operations:
- name: get-booking
method: GET
Syncs product catalog between Square and BigCommerce, updates inventory counts, and notifies the merchant via MailChimp when sync completes.
naftiko: '0.5'
info:
label: Square Catalog Sync Pipeline
description: Syncs product catalog between Square and BigCommerce, updates inventory counts, and notifies the merchant via MailChimp when sync completes.
tags:
- catalog
- square
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: catalog-sync
port: 8080
tools:
- name: sync-catalog
description: Synchronize product catalog between Square and BigCommerce with merchant notification.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location identifier.
- name: merchant_email
in: body
type: string
description: Merchant email for notification.
steps:
- name: get-catalog
type: call
call: square.list-catalog
with:
types: ITEM
- name: sync-to-bigcommerce
type: call
call: bigcommerce.batch-update-products
with:
products: '{{get-catalog.objects}}'
- name: sync-inventory
type: call
call: square.get-inventory-counts
with:
location_ids: '{{location_id}}'
- name: notify-merchant
type: call
call: mailchimp.send-transactional
with:
to: '{{merchant_email}}'
subject: Catalog Sync Complete
body: Synced {{get-catalog.total_count}} items to BigCommerce. Inventory updated for location {{location_id}}.
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: catalog
path: /catalog/list
inputParameters:
- name: types
in: query
operations:
- name: list-catalog
method: GET
- name: inventory
path: /inventory/counts/batch-retrieve
operations:
- name: get-inventory-counts
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/$secrets.bigcommerce_store_hash/v3
authentication:
type: apiKey
name: X-Auth-Token
in: header
value: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: batch-update-products
method: PUT
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
name: key
in: body
value: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send
operations:
- name: send-transactional
method: POST
Screens a Cash App user against sanctions lists, logs results in S3, creates a compliance case in ServiceNow, and alerts the compliance team via Slack.
naftiko: '0.5'
info:
label: Compliance AML Screening Pipeline
description: Screens a Cash App user against sanctions lists, logs results in S3, creates a compliance case in ServiceNow, and alerts the compliance team via Slack.
tags:
- compliance
- cash-app
- amazon-s3
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: aml-screening
port: 8080
tools:
- name: screen-user
description: Run AML screening for a Cash App user with case creation and alerting.
inputParameters:
- name: user_id
in: body
type: string
description: Cash App user identifier.
- name: full_name
in: body
type: string
description: User full legal name.
steps:
- name: run-screening
type: call
call: cashapp.screen-user
with:
user_id: '{{user_id}}'
name: '{{full_name}}'
- name: store-results
type: call
call: s3.put-object
with:
bucket: compliance-screening
key: aml/{{user_id}}/{{run-screening.screening_id}}.json
body: '{{run-screening.results}}'
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'AML screening: {{full_name}} ({{user_id}})'
description: 'Screening ID: {{run-screening.screening_id}}. Matches: {{run-screening.match_count}}. Results stored in S3.'
category: compliance
- name: alert-compliance
type: call
call: slack.post-message
with:
channel: '#compliance-alerts'
text: 'AML screening complete: {{full_name}}. Matches: {{run-screening.match_count}}. Case: {{create-case.number}}.'
consumes:
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: screening
path: /compliance/screen
operations:
- name: screen-user
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: 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
Monitors Square inventory levels, identifies low-stock items, creates purchase orders in BigCommerce, and alerts the merchant via MailChimp.
naftiko: '0.5'
info:
label: Merchant Inventory Alert Pipeline
description: Monitors Square inventory levels, identifies low-stock items, creates purchase orders in BigCommerce, and alerts the merchant via MailChimp.
tags:
- inventory
- square
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: inventory-alerts
port: 8080
tools:
- name: check-inventory-alerts
description: Check inventory levels and create purchase orders for low-stock items.
inputParameters:
- name: location_id
in: body
type: string
description: Square location ID.
- name: threshold
in: body
type: integer
description: Minimum stock threshold.
- name: merchant_email
in: body
type: string
description: Merchant email for alerts.
steps:
- name: get-counts
type: call
call: square.get-inventory-counts
with:
location_ids: '{{location_id}}'
- name: get-catalog
type: call
call: square.list-catalog
with:
types: ITEM
- name: create-po
type: call
call: bigcommerce.create-order
with:
items: '{{get-counts.low_stock_items}}'
threshold: '{{threshold}}'
- name: alert-merchant
type: call
call: mailchimp.send-transactional
with:
to: '{{merchant_email}}'
subject: Low Inventory Alert — {{get-counts.low_stock_count}} items
body: '{{get-counts.low_stock_count}} items below threshold of {{threshold}} units. Purchase order created: {{create-po.order_id}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: inventory
path: /inventory/counts/batch-retrieve
operations:
- name: get-inventory-counts
method: POST
- name: catalog
path: /catalog/list
inputParameters:
- name: types
in: query
operations:
- name: list-catalog
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/$secrets.bigcommerce_store_hash/v2
authentication:
type: apiKey
name: X-Auth-Token
in: header
value: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
name: key
in: body
value: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send
operations:
- name: send-transactional
method: POST
Processes a Bitcoin purchase through Cash App by verifying the user, fetching the current price from Bloomberg, executing the buy, and sending a receipt via SendGrid.
naftiko: '0.5'
info:
label: Cash App Bitcoin Purchase Flow
description: Processes a Bitcoin purchase through Cash App by verifying the user, fetching the current price from Bloomberg, executing the buy, and sending a receipt via SendGrid.
tags:
- bitcoin
- cash-app
- bloomberg
- sendgrid
capability:
exposes:
- type: mcp
namespace: btc-purchase
port: 8080
tools:
- name: purchase-bitcoin
description: Execute a Bitcoin purchase with price verification and receipt delivery.
inputParameters:
- name: user_id
in: body
type: string
description: Cash App user ID.
- name: amount_usd
in: body
type: number
description: Amount in USD to spend.
- name: user_email
in: body
type: string
description: User email for receipt.
steps:
- name: verify-user
type: call
call: cashapp.verify-identity
with:
user_id: '{{user_id}}'
- name: get-price
type: call
call: bloomberg.get-quote
with:
ticker: XBTUSD
- name: execute-buy
type: call
call: cashapp.buy-bitcoin
with:
user_id: '{{user_id}}'
amount_usd: '{{amount_usd}}'
price: '{{get-price.last_price}}'
- name: send-receipt
type: call
call: sendgrid.send-email
with:
to: '{{user_email}}'
subject: Bitcoin Purchase Confirmation
body: 'You purchased {{execute-buy.btc_amount}} BTC at ${{get-price.last_price}} for ${{amount_usd}}. Transaction: {{execute-buy.transaction_id}}.'
consumes:
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: identity
path: /users/{{user_id}}/verify
inputParameters:
- name: user_id
in: path
operations:
- name: verify-identity
method: POST
- name: bitcoin
path: /bitcoin/buy
operations:
- name: buy-bitcoin
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: quotes
path: /snapshots/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: sendgrid
baseUri: https://api.sendgrid.com/v3
authentication:
type: bearer
token: $secrets.sendgrid_api_key
resources:
- name: mail
path: /mail/send
operations:
- name: send-email
method: POST
When a merchant submits a support request, classifies the issue via Elasticsearch similarity search, routes to the correct ServiceNow queue, and sends a confirmation via Square Messages.
naftiko: '0.5'
info:
label: Merchant Support Ticket Triage
description: When a merchant submits a support request, classifies the issue via Elasticsearch similarity search, routes to the correct ServiceNow queue, and sends a confirmation via Square Messages.
tags:
- support
- servicenow
- elasticsearch
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: support-triage
port: 8080
tools:
- name: triage-support-request
description: Classify a merchant support request and route to the appropriate team.
inputParameters:
- name: merchant_id
in: body
type: string
description: The Square merchant ID.
- name: subject
in: body
type: string
description: Support request subject line.
- name: description
in: body
type: string
description: Detailed description of the issue.
steps:
- name: classify-issue
type: call
call: elasticsearch.search
with:
index: support-templates
query:
more_like_this:
fields:
- subject
- description
like: '{{subject}} {{description}}'
min_term_freq: 1
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: '{{subject}}'
description: 'Merchant: {{merchant_id}}. {{description}}. Classified as: {{classify-issue.hits.hits.0._source.category}}.'
category: '{{classify-issue.hits.hits.0._source.category}}'
assigned_group: '{{classify-issue.hits.hits.0._source.assigned_group}}'
- name: confirm-to-merchant
type: call
call: square.send-message
with:
merchant_id: '{{merchant_id}}'
text: 'We''ve received your support request: {{subject}}. Your ticket number is {{create-ticket.number}}. Our team will respond shortly.'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://block-es.internal:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: messages
path: /merchants/{{merchant_id}}/messages
inputParameters:
- name: merchant_id
in: path
operations:
- name: send-message
method: POST
Retrieves the current Bitcoin wallet balance for a Cash App business account, converts to USD, and logs the balance snapshot in PostgreSQL.
naftiko: '0.5'
info:
label: Bitcoin Wallet Balance Check
description: Retrieves the current Bitcoin wallet balance for a Cash App business account, converts to USD, and logs the balance snapshot in PostgreSQL.
tags:
- bitcoin
- crypto
- cash-app
- postgresql
- fintech
capability:
exposes:
- type: mcp
namespace: btc-wallet
port: 8080
tools:
- name: check-btc-balance
description: Fetch BTC wallet balance, convert to USD, and log the snapshot.
inputParameters:
- name: wallet_address
in: body
type: string
description: The Bitcoin wallet address.
steps:
- name: get-balance
type: call
call: bitcoin.get-wallet-balance
with:
address: '{{wallet_address}}'
- name: get-rate
type: call
call: bitcoin.get-price
with:
currency_pair: BTC-USD
- name: log-snapshot
type: call
call: postgresql.insert-row
with:
table: btc_balance_snapshots
wallet_address: '{{wallet_address}}'
btc_balance: '{{get-balance.balance}}'
usd_rate: '{{get-rate.USD.last}}'
snapshot_time: '{{now}}'
consumes:
- type: http
namespace: bitcoin
baseUri: https://api.blockchain.info/v2
authentication:
type: bearer
token: $secrets.blockchain_api_token
resources:
- name: wallet
path: /address/{{address}}/balance
inputParameters:
- name: address
in: path
operations:
- name: get-wallet-balance
method: GET
- name: ticker
path: /ticker
operations:
- name: get-price
method: GET
- type: http
namespace: postgresql
baseUri: https://block-data.internal/api/v1
authentication:
type: bearer
token: $secrets.internal_db_token
resources:
- name: rows
path: /tables/{{table}}/rows
inputParameters:
- name: table
in: path
operations:
- name: insert-row
method: POST
Fetches order details from Square Orders API by order ID, returning line items, totals, fulfillment status, and payment references.
naftiko: '0.5'
info:
label: Square Order Retrieval
description: Fetches order details from Square Orders API by order ID, returning line items, totals, fulfillment status, and payment references.
tags:
- orders
- square
capability:
exposes:
- type: mcp
namespace: square-orders
port: 8080
tools:
- name: get-order
description: Retrieve a Square order by order ID.
inputParameters:
- name: order_id
in: body
type: string
description: The Square order identifier.
call: square.get-order
with:
order_id: '{{order_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Onboards a new Afterpay merchant by creating the account, configuring webhooks, setting up a Datadog monitor, and notifying the partnerships team via HubSpot.
naftiko: '0.5'
info:
label: Afterpay Merchant Integration Orchestrator
description: Onboards a new Afterpay merchant by creating the account, configuring webhooks, setting up a Datadog monitor, and notifying the partnerships team via HubSpot.
tags:
- onboarding
- afterpay
- datadog
- hubspot
capability:
exposes:
- type: mcp
namespace: afterpay-onboarding
port: 8080
tools:
- name: onboard-afterpay-merchant
description: Provision a new Afterpay merchant with monitoring and CRM updates.
inputParameters:
- name: merchant_name
in: body
type: string
description: Merchant business name.
- name: webhook_url
in: body
type: string
description: Merchant webhook endpoint URL.
- name: partner_email
in: body
type: string
description: Partnership manager email.
steps:
- name: create-merchant
type: call
call: afterpay.create-merchant
with:
name: '{{merchant_name}}'
webhook_url: '{{webhook_url}}'
- name: create-monitor
type: call
call: datadog.create-monitor
with:
name: Afterpay — {{merchant_name}} Error Rate
query: sum(last_5m):sum:afterpay.errors{merchant:{{create-merchant.merchant_id}}}.as_rate() > 0.05
type: metric alert
- name: update-crm
type: call
call: hubspot.create-deal
with:
dealname: 'Afterpay Integration: {{merchant_name}}'
pipeline: afterpay-partnerships
dealstage: live
- name: notify-partner
type: call
call: hubspot.send-email
with:
to: '{{partner_email}}'
subject: 'Afterpay Integration Live: {{merchant_name}}'
body: 'Merchant {{merchant_name}} is live on Afterpay. ID: {{create-merchant.merchant_id}}. Monitor: {{create-monitor.id}}.'
consumes:
- type: http
namespace: afterpay
baseUri: https://global-api.afterpay.com/v2
authentication:
type: basic
username: $secrets.afterpay_merchant_id
password: $secrets.afterpay_secret_key
resources:
- name: merchants
path: /merchants
operations:
- name: create-merchant
method: POST
- 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: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: deals
path: /crm/v3/objects/deals
operations:
- name: create-deal
method: POST
- name: emails
path: /marketing/v3/transactional/single-email/send
operations:
- name: send-email
method: POST
Retrieves the current inventory count for a catalog item variation at a specific Square location.
naftiko: '0.5'
info:
label: Square Inventory Count
description: Retrieves the current inventory count for a catalog item variation at a specific Square location.
tags:
- inventory
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-inventory
port: 8080
tools:
- name: get-inventory-count
description: Retrieve the inventory count for a catalog item variation at a location.
inputParameters:
- name: catalog_object_id
in: body
type: string
description: The catalog object ID of the item variation.
- name: location_id
in: body
type: string
description: The Square location ID.
call: square.get-inventory-count
with:
catalog_object_id: '{{catalog_object_id}}'
location_ids:
- '{{location_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: inventory
path: /inventory/counts/batch-retrieve
operations:
- name: get-inventory-count
method: POST
Retrieves vendor details from Square by vendor ID, returning company name, contact information, and account status for supply chain management.
naftiko: '0.5'
info:
label: Square Vendor Lookup
description: Retrieves vendor details from Square by vendor ID, returning company name, contact information, and account status for supply chain management.
tags:
- supply-chain
- square
capability:
exposes:
- type: mcp
namespace: square-vendors
port: 8080
tools:
- name: get-vendor
description: Look up a Square vendor by vendor ID.
inputParameters:
- name: vendor_id
in: body
type: string
description: The Square vendor identifier.
call: square.get-vendor
with:
vendor_id: '{{vendor_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: vendors
path: /vendors/{{vendor_id}}
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
Retrieves merchant segment data from Square, creates a MailChimp campaign targeting those merchants, and logs the campaign in HubSpot.
naftiko: '0.5'
info:
label: Merchant Email Campaign via MailChimp
description: Retrieves merchant segment data from Square, creates a MailChimp campaign targeting those merchants, and logs the campaign in HubSpot.
tags:
- marketing
- mailchimp
- square
- hubspot
- merchant-services
capability:
exposes:
- type: mcp
namespace: merchant-campaigns
port: 8080
tools:
- name: launch-merchant-campaign
description: Build and send a MailChimp campaign for a Square merchant segment and log in HubSpot.
inputParameters:
- name: segment_id
in: body
type: string
description: The Square customer segment ID.
- name: campaign_subject
in: body
type: string
description: Email subject line for the campaign.
- name: mailchimp_list_id
in: body
type: string
description: The MailChimp audience list ID.
steps:
- name: get-segment
type: call
call: square.get-customer-segment
with:
segment_id: '{{segment_id}}'
- name: create-campaign
type: call
call: mailchimp.create-campaign
with:
type: regular
recipients:
list_id: '{{mailchimp_list_id}}'
settings:
subject_line: '{{campaign_subject}}'
from_name: Block Merchant Services
- name: log-in-hubspot
type: call
call: hubspot.create-engagement
with:
type: NOTE
body: 'MailChimp campaign {{create-campaign.id}} launched for segment {{segment_id}} ({{get-segment.segment.name}}). Subject: {{campaign_subject}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: customer-segments
path: /customers/segments/{{segment_id}}
inputParameters:
- name: segment_id
in: path
operations:
- name: get-customer-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: create-campaign
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: engagements
path: /engagements/v1/engagements
operations:
- name: create-engagement
method: POST
Queries Spring Boot Actuator health endpoints across Block's payment microservices and aggregates the results into Datadog for centralized monitoring.
naftiko: '0.5'
info:
label: Spring Boot Microservice Health Aggregator
description: Queries Spring Boot Actuator health endpoints across Block's payment microservices and aggregates the results into Datadog for centralized monitoring.
tags:
- health-checks
- spring-boot
- datadog
- infrastructure
capability:
exposes:
- type: mcp
namespace: service-health
port: 8080
tools:
- name: check-and-report-health
description: Query a Spring Boot service health endpoint and report to Datadog.
inputParameters:
- name: service_name
in: body
type: string
description: The internal service name.
- name: service_url
in: body
type: string
description: The base URL of the Spring Boot service.
steps:
- name: get-health
type: call
call: springboot.get-health
with:
service_url: '{{service_url}}'
- name: report-to-datadog
type: call
call: datadog.submit-metric
with:
series:
- metric: block.service.health
points:
- - '{{now_epoch}}'
- 1
tags:
- service:{{service_name}}
- status:{{get-health.status}}
consumes:
- type: http
namespace: springboot
baseUri: '{{service_url}}'
authentication:
type: bearer
token: $secrets.internal_service_token
resources:
- name: actuator
path: /actuator/health
operations:
- name: get-health
method: GET
- 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: /series
operations:
- name: submit-metric
method: POST
After a Kotlin SDK build passes quality gates in GitLab, tags the release in GitLab, uploads the artifact to Amazon S3, and creates a YouTube developer tutorial notification.
naftiko: '0.5'
info:
label: Kotlin SDK Release Publisher
description: After a Kotlin SDK build passes quality gates in GitLab, tags the release in GitLab, uploads the artifact to Amazon S3, and creates a YouTube developer tutorial notification.
tags:
- developer-platform
- kotlin
- gitlab
- amazon-s3
- youtube
- sdk
capability:
exposes:
- type: mcp
namespace: sdk-release
port: 8080
tools:
- name: publish-kotlin-sdk
description: Tag, archive, and announce a new Kotlin SDK release.
inputParameters:
- name: project_id
in: body
type: string
description: The GitLab project ID.
- name: version
in: body
type: string
description: The semantic version for the release.
- name: release_notes
in: body
type: string
description: Release notes for the changelog.
steps:
- name: create-release
type: call
call: gitlab.create-release
with:
project_id: '{{project_id}}'
tag_name: v{{version}}
description: '{{release_notes}}'
- name: upload-artifact
type: call
call: s3.put-object
with:
Bucket: block-sdk-releases
Key: kotlin/square-sdk-{{version}}.jar
ContentType: application/java-archive
- name: post-announcement
type: call
call: youtube.insert-community-post
with:
text: Square Kotlin SDK v{{version}} is now available! Check the changelog and migration guide in our developer docs.
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.block.internal/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: releases
path: /projects/{{project_id}}/releases
inputParameters:
- name: project_id
in: path
operations:
- name: create-release
method: POST
- type: http
namespace: s3
baseUri: https://s3.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: s3
resources:
- name: objects
path: /{{Bucket}}/{{Key}}
inputParameters:
- name: Bucket
in: path
- name: Key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: community-posts
path: /activities
operations:
- name: insert-community-post
method: POST
Runs an Elasticsearch aggregation query over recent transactions to detect velocity anomalies, then enriches suspicious transactions with Mastercard data and alerts the risk team via ServiceNow.
naftiko: '0.5'
info:
label: Transaction Fraud Pattern Detection
description: Runs an Elasticsearch aggregation query over recent transactions to detect velocity anomalies, then enriches suspicious transactions with Mastercard data and alerts the risk team via ServiceNow.
tags:
- fraud-detection
- elasticsearch
- mastercard
- servicenow
- risk
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: detect-velocity-anomalies
description: Detect transaction velocity anomalies and escalate suspicious patterns.
inputParameters:
- name: merchant_id
in: body
type: string
description: The Square merchant ID to analyze.
- name: time_window
in: body
type: string
description: The time window for analysis (e.g. 1h, 6h, 24h).
steps:
- name: aggregate-transactions
type: call
call: elasticsearch.search
with:
index: square-transactions-*
query:
bool:
filter:
- term:
merchant_id: '{{merchant_id}}'
- range:
created_at:
gte: now-{{time_window}}
aggs:
velocity:
date_histogram:
field: created_at
fixed_interval: 5m
- name: check-mastercard
type: call
call: mastercard.get-merchant-risk
with:
merchant_id: '{{merchant_id}}'
- name: alert-risk-team
type: call
call: servicenow.create-incident
with:
short_description: 'Velocity anomaly detected: merchant {{merchant_id}}'
description: 'Transaction velocity analysis for past {{time_window}}: {{aggregate-transactions.aggregations.velocity.buckets.length}} intervals analyzed. Mastercard risk score: {{check-mastercard.riskScore}}.'
category: fraud_detection
assigned_group: Risk_Operations
urgency: '2'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://block-es.internal:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/fraud/merchant/v3
authentication:
type: oauth1
consumerKey: $secrets.mastercard_consumer_key
signingKey: $secrets.mastercard_signing_key
resources:
- name: merchant-risk
path: /merchant-risk
operations:
- name: get-merchant-risk
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/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 CloudWatch metrics for Block's Bitcoin node infrastructure, returning block height sync status, peer connections, and mempool size.
naftiko: '0.5'
info:
label: CloudWatch Bitcoin Node Monitor
description: Queries CloudWatch metrics for Block's Bitcoin node infrastructure, returning block height sync status, peer connections, and mempool size.
tags:
- bitcoin
- cloudwatch
capability:
exposes:
- type: mcp
namespace: btc-node-monitor
port: 8080
tools:
- name: get-node-metrics
description: Retrieve CloudWatch metrics for Bitcoin node health.
inputParameters:
- name: node_id
in: body
type: string
description: The Bitcoin node instance identifier.
call: cloudwatch.get-metrics
with:
namespace: Bitcoin/Nodes
dimensions: NodeId={{node_id}}
consumes:
- type: http
namespace: cloudwatch
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: metrics
path: /
inputParameters:
- name: namespace
in: query
- name: dimensions
in: query
operations:
- name: get-metrics
method: GET
Aggregates merchant payment data from Square, generates 1099-K reports, stores in S3, and notifies merchants via SendGrid when reports are ready.
naftiko: '0.5'
info:
label: Merchant Tax Reporting Pipeline
description: Aggregates merchant payment data from Square, generates 1099-K reports, stores in S3, and notifies merchants via SendGrid when reports are ready.
tags:
- tax
- square
- amazon-s3
- sendgrid
capability:
exposes:
- type: mcp
namespace: tax-reporting
port: 8080
tools:
- name: generate-tax-report
description: Generate and distribute merchant tax reports.
inputParameters:
- name: merchant_id
in: body
type: string
description: Square merchant identifier.
- name: tax_year
in: body
type: string
description: Tax year (e.g. 2025).
- name: merchant_email
in: body
type: string
description: Merchant email.
steps:
- name: get-payments
type: call
call: square.list-payments
with:
merchant_id: '{{merchant_id}}'
year: '{{tax_year}}'
- name: generate-1099k
type: call
call: square.generate-tax-form
with:
merchant_id: '{{merchant_id}}'
year: '{{tax_year}}'
total_gross: '{{get-payments.total_gross}}'
- name: store-report
type: call
call: s3.put-object
with:
bucket: tax-reports
key: '{{tax_year}}/{{merchant_id}}/1099-K.pdf'
body: '{{generate-1099k.document}}'
- name: notify-merchant
type: call
call: sendgrid.send-email
with:
to: '{{merchant_email}}'
subject: Your {{tax_year}} 1099-K is Ready
body: 'Your 1099-K tax form for {{tax_year}} is now available. Total gross payments: ${{get-payments.total_gross}}. Download from your Square Dashboard.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
inputParameters:
- name: merchant_id
in: query
- name: year
in: query
operations:
- name: list-payments
method: GET
- name: tax
path: /tax/forms/generate
operations:
- name: generate-tax-form
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: 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
Checks the status of an AWS CloudFormation stack deployment used for Block's infrastructure provisioning.
naftiko: '0.5'
info:
label: CloudFormation Stack Deployment Status
description: Checks the status of an AWS CloudFormation stack deployment used for Block's infrastructure provisioning.
tags:
- infrastructure
- cloudformation
- amazon-web-services
capability:
exposes:
- type: mcp
namespace: infra-stacks
port: 8080
tools:
- name: get-stack-status
description: Retrieve the status of a CloudFormation stack.
inputParameters:
- name: stack_name
in: body
type: string
description: The CloudFormation stack name.
call: cloudformation.describe-stack
with:
StackName: '{{stack_name}}'
consumes:
- type: http
namespace: cloudformation
baseUri: https://cloudformation.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: cloudformation
resources:
- name: stacks
path: /
operations:
- name: describe-stack
method: GET
Retrieves subscription details from Square Subscriptions API by subscription ID, returning plan, billing cycle, and next charge date.
naftiko: '0.5'
info:
label: Square Subscription Lookup
description: Retrieves subscription details from Square Subscriptions API by subscription ID, returning plan, billing cycle, and next charge date.
tags:
- subscriptions
- square
capability:
exposes:
- type: mcp
namespace: square-subscriptions
port: 8080
tools:
- name: get-subscription
description: Look up a Square subscription by subscription ID.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Square subscription identifier.
call: square.get-subscription
with:
subscription_id: '{{subscription_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: subscriptions
path: /subscriptions/{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
Investigates a flagged Cash App transaction by retrieving details, running risk scoring via Mastercard, logging findings in ServiceNow, and alerting the fraud team via Slack.
naftiko: '0.5'
info:
label: Cash App Fraud Investigation Pipeline
description: Investigates a flagged Cash App transaction by retrieving details, running risk scoring via Mastercard, logging findings in ServiceNow, and alerting the fraud team via Slack.
tags:
- fraud
- cash-app
- mastercard
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: fraud-investigation
port: 8080
tools:
- name: investigate-transaction
description: Investigate a flagged transaction across Cash App, Mastercard risk, and ServiceNow.
inputParameters:
- name: transaction_id
in: body
type: string
description: The Cash App transaction identifier.
steps:
- name: get-transaction
type: call
call: cashapp.get-transaction
with:
transaction_id: '{{transaction_id}}'
- name: score-risk
type: call
call: mastercard.score-transaction
with:
amount: '{{get-transaction.amount}}'
merchant_category: '{{get-transaction.merchant_category}}'
country: '{{get-transaction.country}}'
- name: log-case
type: call
call: servicenow.create-incident
with:
short_description: 'Fraud investigation: txn {{transaction_id}}'
description: 'Amount: ${{get-transaction.amount}}. Risk score: {{score-risk.score}}. Category: {{get-transaction.merchant_category}}.'
category: fraud
urgency: '1'
- name: alert-team
type: call
call: slack.post-message
with:
channel: '#fraud-ops'
text: 'Fraud case opened: {{transaction_id}}. Amount: ${{get-transaction.amount}}. Risk: {{score-risk.score}}. ServiceNow: {{log-case.number}}.'
consumes:
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: transactions
path: /transactions/{{transaction_id}}
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/fraud/v1
authentication:
type: oauth1
consumer_key: $secrets.mastercard_consumer_key
signing_key: $secrets.mastercard_signing_key
resources:
- name: scoring
path: /transaction-risk
operations:
- name: score-transaction
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: 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
Creates a payment through the Square Payments API given a source token, amount, and currency. Returns the payment ID, status, and receipt URL for merchant reconciliation.
naftiko: '0.5'
info:
label: Square Payment Processing
description: Creates a payment through the Square Payments API given a source token, amount, and currency. Returns the payment ID, status, and receipt URL for merchant reconciliation.
tags:
- payments
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-payments
port: 8080
tools:
- name: create-payment
description: Process a payment through Square given a source token, amount in cents, and currency code.
inputParameters:
- name: source_id
in: body
type: string
description: The payment source token from the Square Web Payments SDK.
- name: amount_cents
in: body
type: integer
description: The payment amount in the smallest currency denomination.
- name: currency
in: body
type: string
description: ISO 4217 currency code (e.g. USD).
call: square.create-payment
with:
source_id: '{{source_id}}'
amount_money:
amount: '{{amount_cents}}'
currency: '{{currency}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
operations:
- name: create-payment
method: POST
Retrieves a customer's Square Loyalty points balance by account ID.
naftiko: '0.5'
info:
label: Square Loyalty Points Balance
description: Retrieves a customer's Square Loyalty points balance by account ID.
tags:
- loyalty
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-loyalty
port: 8080
tools:
- name: get-loyalty-balance
description: Look up the points balance for a Square Loyalty account.
inputParameters:
- name: account_id
in: body
type: string
description: The Square Loyalty account ID.
call: square.get-loyalty-account
with:
account_id: '{{account_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: loyalty-accounts
path: /loyalty/accounts/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-loyalty-account
method: GET
Calculates artist streaming royalties from TIDAL play data, processes payments via Cash App for Business, stores reports in S3, and sends statements via SendGrid.
naftiko: '0.5'
info:
label: TIDAL Artist Royalty Pipeline
description: Calculates artist streaming royalties from TIDAL play data, processes payments via Cash App for Business, stores reports in S3, and sends statements via SendGrid.
tags:
- music
- tidal
- cash-app
- amazon-s3
- sendgrid
capability:
exposes:
- type: mcp
namespace: artist-royalties
port: 8080
tools:
- name: process-royalties
description: Calculate and distribute artist royalties with reporting.
inputParameters:
- name: artist_id
in: body
type: string
description: TIDAL artist identifier.
- name: period
in: body
type: string
description: Royalty period YYYY-MM.
- name: artist_email
in: body
type: string
description: Artist email.
steps:
- name: get-streams
type: call
call: tidal.get-artist-streams
with:
artist_id: '{{artist_id}}'
period: '{{period}}'
- name: process-payment
type: call
call: cashapp.send-payment
with:
recipient_id: '{{artist_id}}'
amount: '{{get-streams.royalty_amount}}'
- name: store-statement
type: call
call: s3.put-object
with:
bucket: royalty-statements
key: '{{artist_id}}/{{period}}/statement.json'
body: '{{get-streams.statement}}'
- name: send-statement
type: call
call: sendgrid.send-email
with:
to: '{{artist_email}}'
subject: Royalty Statement — {{period}}
body: 'Your TIDAL royalty statement for {{period}} is ready. Total streams: {{get-streams.total_streams}}. Royalties: ${{get-streams.royalty_amount}}.'
consumes:
- type: http
namespace: tidal
baseUri: https://openapi.tidal.com/v2
authentication:
type: bearer
token: $secrets.tidal_api_token
resources:
- name: streams
path: /artists/{{artist_id}}/streams
inputParameters:
- name: artist_id
in: path
- name: period
in: query
operations:
- name: get-artist-streams
method: GET
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: payments
path: /payments
operations:
- name: send-payment
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: 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 the status of the latest GitLab CI pipeline for a Block payment service repository.
naftiko: '0.5'
info:
label: GitLab CI Pipeline Status
description: Retrieves the status of the latest GitLab CI pipeline for a Block payment service repository.
tags:
- ci-cd
- gitlab
- developer-platform
capability:
exposes:
- type: mcp
namespace: gitlab-ci
port: 8080
tools:
- name: get-pipeline-status
description: Fetch the latest GitLab CI pipeline status for a project.
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.block.internal/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
Retrieves bank account details linked to a Square merchant account, returning account type, status, and routing information for settlement configuration.
naftiko: '0.5'
info:
label: Square Bank Account Lookup
description: Retrieves bank account details linked to a Square merchant account, returning account type, status, and routing information for settlement configuration.
tags:
- banking
- square
capability:
exposes:
- type: mcp
namespace: square-banking
port: 8080
tools:
- name: get-bank-account
description: Look up a linked bank account by bank account ID.
inputParameters:
- name: bank_account_id
in: body
type: string
description: The Square bank account identifier.
call: square.get-bank-account
with:
bank_account_id: '{{bank_account_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: bank-accounts
path: /bank-accounts/{{bank_account_id}}
inputParameters:
- name: bank_account_id
in: path
operations:
- name: get-bank-account
method: GET
Creates a customer appointment in Square Bookings, sends confirmation via SendGrid, adds a calendar event via Google Calendar, and updates the CRM in HubSpot.
naftiko: '0.5'
info:
label: Square Appointment Booking Flow
description: Creates a customer appointment in Square Bookings, sends confirmation via SendGrid, adds a calendar event via Google Calendar, and updates the CRM in HubSpot.
tags:
- appointments
- square
- sendgrid
- hubspot
capability:
exposes:
- type: mcp
namespace: appointment-flow
port: 8080
tools:
- name: book-appointment
description: Create an appointment with confirmation email, calendar sync, and CRM update.
inputParameters:
- name: customer_id
in: body
type: string
description: Square customer ID.
- name: service_variation_id
in: body
type: string
description: Square service variation ID.
- name: start_at
in: body
type: string
description: Appointment start time ISO 8601.
- name: customer_email
in: body
type: string
description: Customer email.
steps:
- name: create-booking
type: call
call: square.create-booking
with:
customer_id: '{{customer_id}}'
service_variation_id: '{{service_variation_id}}'
start_at: '{{start_at}}'
- name: send-confirmation
type: call
call: sendgrid.send-email
with:
to: '{{customer_email}}'
subject: Appointment Confirmed — {{create-booking.start_at}}
body: 'Your appointment is confirmed for {{create-booking.start_at}}. Booking ID: {{create-booking.id}}.'
- name: update-crm
type: call
call: hubspot.create-engagement
with:
type: MEETING
contact_email: '{{customer_email}}'
title: 'Appointment: {{create-booking.service_name}}'
start_time: '{{start_at}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: bookings
path: /bookings
operations:
- name: create-booking
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: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: engagements
path: /crm/v3/objects/meetings
operations:
- name: create-engagement
method: POST
Monitors Square inventory counts, and when stock falls below a threshold, sends a reorder notification via MailChimp to the supplier and creates a ServiceNow procurement request.
naftiko: '0.5'
info:
label: Low Inventory Reorder Alert
description: Monitors Square inventory counts, and when stock falls below a threshold, sends a reorder notification via MailChimp to the supplier and creates a ServiceNow procurement request.
tags:
- inventory
- square
- mailchimp
- servicenow
- merchant-services
capability:
exposes:
- type: mcp
namespace: inventory-alerts
port: 8080
tools:
- name: trigger-reorder-alert
description: Check inventory and trigger reorder notifications when stock is low.
inputParameters:
- name: catalog_object_id
in: body
type: string
description: The Square catalog item variation ID.
- name: location_id
in: body
type: string
description: The Square location ID.
- name: supplier_email
in: body
type: string
description: The supplier's email address.
- name: item_name
in: body
type: string
description: The product name for the reorder.
steps:
- name: get-count
type: call
call: square.get-inventory-count
with:
catalog_object_id: '{{catalog_object_id}}'
location_ids:
- '{{location_id}}'
- name: send-supplier-email
type: call
call: mailchimp.send-transactional
with:
to: '{{supplier_email}}'
subject: 'Reorder Request: {{item_name}}'
body: Current stock for {{item_name}} at location {{location_id}} is {{get-count.counts.0.quantity}}. Please prepare a reorder shipment.
- name: create-procurement-request
type: call
call: servicenow.create-incident
with:
short_description: 'Reorder needed: {{item_name}}'
description: 'Inventory for {{item_name}} ({{catalog_object_id}}) at location {{location_id}} is {{get-count.counts.0.quantity}} units. Supplier notified: {{supplier_email}}.'
category: procurement
assigned_group: Supply_Chain
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: inventory
path: /inventory/counts/batch-retrieve
operations:
- name: get-inventory-count
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
name: key
in: body
value: $secrets.mandrill_api_key
resources:
- name: messages
path: /messages/send
operations:
- name: send-transactional
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/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 customer profile from the Square Customer Directory by customer ID, returning contact details, preferences, and transaction history summary.
naftiko: '0.5'
info:
label: Square Customer Lookup
description: Retrieves a customer profile from the Square Customer Directory by customer ID, returning contact details, preferences, and transaction history summary.
tags:
- customers
- square
capability:
exposes:
- type: mcp
namespace: square-customers
port: 8080
tools:
- name: get-customer
description: Look up a Square customer by customer ID.
inputParameters:
- name: customer_id
in: body
type: string
description: The Square customer identifier.
call: square.get-customer
with:
customer_id: '{{customer_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: customers
path: /customers/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
Processes a refund through Square Payments API, updates the order status, logs the refund in S3, and notifies the customer via SendGrid.
naftiko: '0.5'
info:
label: Merchant Refund Workflow
description: Processes a refund through Square Payments API, updates the order status, logs the refund in S3, and notifies the customer via SendGrid.
tags:
- refunds
- square
- amazon-s3
- sendgrid
capability:
exposes:
- type: mcp
namespace: refund-workflow
port: 8080
tools:
- name: process-refund
description: Process a payment refund with order update, audit logging, and customer notification.
inputParameters:
- name: payment_id
in: body
type: string
description: Square payment ID.
- name: amount_cents
in: body
type: integer
description: Refund amount in cents.
- name: reason
in: body
type: string
description: Refund reason.
- name: customer_email
in: body
type: string
description: Customer email.
steps:
- name: create-refund
type: call
call: square.create-refund
with:
payment_id: '{{payment_id}}'
amount_money:
amount: '{{amount_cents}}'
currency: USD
reason: '{{reason}}'
- name: get-payment
type: call
call: square.get-payment
with:
payment_id: '{{payment_id}}'
- name: log-refund
type: call
call: s3.put-object
with:
bucket: refund-records
key: '{{payment_id}}/{{create-refund.refund_id}}.json'
body: '{{create-refund.summary}}'
- name: notify-customer
type: call
call: sendgrid.send-email
with:
to: '{{customer_email}}'
subject: Refund Processed — ${{amount_cents}}
body: 'Your refund of ${{amount_cents}} has been processed. Refund ID: {{create-refund.refund_id}}. Please allow 5-10 business days.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- name: payments
path: /payments/{{payment_id}}
inputParameters:
- name: payment_id
in: path
operations:
- name: get-payment
method: GET
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: 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 details for a Square merchant location by location ID, returning address, business hours, capabilities, and currency.
naftiko: '0.5'
info:
label: Square Location Details
description: Retrieves details for a Square merchant location by location ID, returning address, business hours, capabilities, and currency.
tags:
- merchant-services
- square
capability:
exposes:
- type: mcp
namespace: square-locations
port: 8080
tools:
- name: get-location
description: Look up a Square location by location ID.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location identifier.
call: square.get-location
with:
location_id: '{{location_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: locations
path: /locations/{{location_id}}
inputParameters:
- name: location_id
in: path
operations:
- name: get-location
method: GET
Provisions a Square Online store for a merchant, syncs the catalog, configures Cloudflare DNS, and sends launch instructions via HubSpot.
naftiko: '0.5'
info:
label: Square Online Store Provisioning
description: Provisions a Square Online store for a merchant, syncs the catalog, configures Cloudflare DNS, and sends launch instructions via HubSpot.
tags:
- ecommerce
- square
- cloudflare
- hubspot
capability:
exposes:
- type: mcp
namespace: online-store
port: 8080
tools:
- name: provision-online-store
description: Set up a Square Online store with DNS and catalog sync.
inputParameters:
- name: location_id
in: body
type: string
description: Square location ID.
- name: custom_domain
in: body
type: string
description: Custom domain name.
- name: merchant_email
in: body
type: string
description: Merchant email.
steps:
- name: create-site
type: call
call: square.create-online-site
with:
location_id: '{{location_id}}'
- name: sync-catalog
type: call
call: square.sync-catalog-to-online
with:
site_id: '{{create-site.site_id}}'
location_id: '{{location_id}}'
- name: configure-dns
type: call
call: cloudflare.create-dns-record
with:
zone_id: $secrets.cloudflare_zone_id
type: CNAME
name: '{{custom_domain}}'
content: '{{create-site.cname_target}}'
- name: send-launch-info
type: call
call: hubspot.send-email
with:
to: '{{merchant_email}}'
subject: Your Square Online Store is Live!
body: 'Your online store is live at {{custom_domain}}. {{sync-catalog.item_count}} items synced. Site ID: {{create-site.site_id}}.'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: sites
path: /online/sites
operations:
- name: create-online-site
method: POST
- name: catalog-sync
path: /online/sites/{{site_id}}/catalog/sync
inputParameters:
- name: site_id
in: path
operations:
- name: sync-catalog-to-online
method: POST
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: dns
path: /zones/{{zone_id}}/dns_records
inputParameters:
- name: zone_id
in: path
operations:
- name: create-dns-record
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
Creates a terminal checkout action on a Square Terminal device and monitors the result. Returns the checkout status and payment receipt.
naftiko: '0.5'
info:
label: Square Terminal Checkout
description: Creates a terminal checkout action on a Square Terminal device and monitors the result. Returns the checkout status and payment receipt.
tags:
- terminal
- square
- point-of-sale
capability:
exposes:
- type: mcp
namespace: square-terminal
port: 8080
tools:
- name: create-terminal-checkout
description: Initiate a checkout on a Square Terminal device.
inputParameters:
- name: device_id
in: body
type: string
description: The Square Terminal device ID.
- name: amount_cents
in: body
type: integer
description: The checkout amount in cents.
- name: currency
in: body
type: string
description: ISO 4217 currency code.
steps:
- name: create-checkout
type: call
call: square.create-terminal-checkout
with:
checkout:
amount_money:
amount: '{{amount_cents}}'
currency: '{{currency}}'
device_options:
device_id: '{{device_id}}'
- name: get-checkout-status
type: call
call: square.get-terminal-checkout
with:
checkout_id: '{{create-checkout.checkout.id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: terminal-checkouts
path: /terminals/checkouts
operations:
- name: create-terminal-checkout
method: POST
- name: terminal-checkout
path: /terminals/checkouts/{{checkout_id}}
inputParameters:
- name: checkout_id
in: path
operations:
- name: get-terminal-checkout
method: GET
Fetches Bloomberg Intelligence market data for treasury management decisions related to Block's cash reserves and Bitcoin holdings.
naftiko: '0.5'
info:
label: Bloomberg Market Data for Treasury
description: Fetches Bloomberg Intelligence market data for treasury management decisions related to Block's cash reserves and Bitcoin holdings.
tags:
- treasury
- bloomberg-intelligence
- fintech
capability:
exposes:
- type: mcp
namespace: treasury-data
port: 8080
tools:
- name: get-market-data
description: Retrieve Bloomberg market data for a given security ticker.
inputParameters:
- name: ticker
in: body
type: string
description: The Bloomberg security ticker (e.g. SQ US Equity, XBTUSD).
call: bloomberg.get-security-data
with:
securities:
- '{{ticker}}'
fields:
- PX_LAST
- PX_VOLUME
- VOLATILITY_30D
consumes:
- type: http
namespace: bloomberg
baseUri: https://bql.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: security-data
path: /data
operations:
- name: get-security-data
method: POST
Retrieves a support ticket from ServiceNow, looks up the Cash App user profile, generates a response draft via OpenAI, and notifies the support lead via Slack.
naftiko: '0.5'
info:
label: Cash App Customer Support Escalation
description: Retrieves a support ticket from ServiceNow, looks up the Cash App user profile, generates a response draft via OpenAI, and notifies the support lead via Slack.
tags:
- support
- servicenow
- cash-app
- openai
- slack
capability:
exposes:
- type: mcp
namespace: support-escalation
port: 8080
tools:
- name: escalate-ticket
description: Escalate a support ticket with AI-assisted response drafting.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number.
- name: user_id
in: body
type: string
description: Cash App user ID.
steps:
- name: get-ticket
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: get-user
type: call
call: cashapp.get-user-profile
with:
user_id: '{{user_id}}'
- name: draft-response
type: call
call: openai.create-completion
with:
model: gpt-4
prompt: 'Draft a support response for: {{get-ticket.description}}. User: {{get-user.display_name}}. Account status: {{get-user.status}}.'
- name: notify-lead
type: call
call: slack.post-message
with:
channel: '#support-escalations'
text: 'Escalation: {{incident_number}}. User: {{get-user.display_name}}. Issue: {{get-ticket.short_description}}. Draft response ready for review.'
consumes:
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: users
path: /users/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: get-user-profile
method: GET
- type: http
namespace: openai
baseUri: https://api.openai.com/v1
authentication:
type: bearer
token: $secrets.openai_api_key
resources:
- name: completions
path: /chat/completions
operations:
- name: create-completion
method: POST
- 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 CloudWatch metrics for Square payment API p99 latency and triggers a Datadog alert when the threshold is exceeded.
naftiko: '0.5'
info:
label: CloudWatch Payment Latency Monitor
description: Queries CloudWatch metrics for Square payment API p99 latency and triggers a Datadog alert when the threshold is exceeded.
tags:
- monitoring
- cloudwatch
- datadog
- payments
- observability
capability:
exposes:
- type: mcp
namespace: latency-monitor
port: 8080
tools:
- name: check-payment-latency
description: Query CloudWatch for payment API latency and alert via Datadog if above threshold.
inputParameters:
- name: metric_name
in: body
type: string
description: The CloudWatch metric name.
- name: threshold_ms
in: body
type: integer
description: The latency threshold in milliseconds.
steps:
- name: get-metric
type: call
call: cloudwatch.get-metric-statistics
with:
Namespace: Block/Payments
MetricName: '{{metric_name}}'
Period: 300
Statistics:
- p99
- name: create-alert
type: call
call: datadog.create-event
with:
title: 'Payment latency alert: {{metric_name}} p99 exceeded {{threshold_ms}}ms'
text: 'CloudWatch metric {{metric_name}} p99 value: {{get-metric.Datapoints.0.p99}}ms (threshold: {{threshold_ms}}ms).'
alert_type: warning
tags:
- service:payments
- metric:{{metric_name}}
consumes:
- type: http
namespace: cloudwatch
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: monitoring
resources:
- name: metrics
path: /
operations:
- name: get-metric-statistics
method: GET
- 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: events
path: /events
operations:
- name: create-event
method: POST
Receives a Square webhook event type and ID, retrieves the event payload, and indexes it into Elasticsearch for observability.
naftiko: '0.5'
info:
label: Square Webhook Event Log
description: Receives a Square webhook event type and ID, retrieves the event payload, and indexes it into Elasticsearch for observability.
tags:
- webhooks
- square
- elasticsearch
- observability
capability:
exposes:
- type: mcp
namespace: square-webhooks
port: 8080
tools:
- name: log-webhook-event
description: Retrieve a Square webhook event and index it in Elasticsearch.
inputParameters:
- name: event_id
in: body
type: string
description: The Square webhook event ID.
- name: event_type
in: body
type: string
description: The webhook event type (e.g. payment.completed).
steps:
- name: get-event
type: call
call: square.get-webhook-event
with:
event_id: '{{event_id}}'
- name: index-event
type: call
call: elasticsearch.index-document
with:
index: square-webhook-events
document:
event_id: '{{event_id}}'
event_type: '{{event_type}}'
payload: '{{get-event.event}}'
indexed_at: '{{now}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: webhook-events
path: /webhooks/event-types/{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-webhook-event
method: GET
- type: http
namespace: elasticsearch
baseUri: https://block-es.internal:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
Retrieves a Datadog APM trace by trace ID for debugging Square API latency issues.
naftiko: '0.5'
info:
label: Datadog APM Trace Lookup
description: Retrieves a Datadog APM trace by trace ID for debugging Square API latency issues.
tags:
- observability
- datadog
- debugging
capability:
exposes:
- type: mcp
namespace: apm-traces
port: 8080
tools:
- name: get-trace
description: Retrieve a Datadog APM trace by its ID.
inputParameters:
- name: trace_id
in: body
type: string
description: The Datadog trace ID.
call: datadog.get-trace
with:
trace_id: '{{trace_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: traces
path: /traces/{{trace_id}}
inputParameters:
- name: trace_id
in: path
operations:
- name: get-trace
method: GET
After a payment completes, calculates loyalty points and adds them to the customer's Square Loyalty account.
naftiko: '0.5'
info:
label: Square Loyalty Points Accumulation
description: After a payment completes, calculates loyalty points and adds them to the customer's Square Loyalty account.
tags:
- loyalty
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: loyalty-earn
port: 8080
tools:
- name: accrue-loyalty-points
description: Calculate and add loyalty points to a customer account after payment.
inputParameters:
- name: account_id
in: body
type: string
description: The Square Loyalty account ID.
- name: order_id
in: body
type: string
description: The Square order ID that earned the points.
- name: location_id
in: body
type: string
description: The Square location ID.
steps:
- name: calculate-points
type: call
call: square.calculate-loyalty-points
with:
order_id: '{{order_id}}'
loyalty_account_id: '{{account_id}}'
- name: accumulate-points
type: call
call: square.accumulate-loyalty-points
with:
account_id: '{{account_id}}'
accumulate_points:
order_id: '{{order_id}}'
points: '{{calculate-points.points}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: loyalty-calculate
path: /loyalty/programs/{{program_id}}/calculate
operations:
- name: calculate-loyalty-points
method: POST
- name: loyalty-accumulate
path: /loyalty/accounts/{{account_id}}/accumulate
inputParameters:
- name: account_id
in: path
operations:
- name: accumulate-loyalty-points
method: POST
When a new hire is added, provisions laptop and equipment in ServiceNow, creates shipping labels, and sends onboarding instructions via SendGrid.
naftiko: '0.5'
info:
label: Employee Equipment Provisioning Workflow
description: When a new hire is added, provisions laptop and equipment in ServiceNow, creates shipping labels, and sends onboarding instructions via SendGrid.
tags:
- hr
- servicenow
- sendgrid
capability:
exposes:
- type: mcp
namespace: equipment-provisioning
port: 8080
tools:
- name: provision-equipment
description: Provision and ship equipment for a new Block employee.
inputParameters:
- name: employee_name
in: body
type: string
description: New hire full name.
- name: employee_email
in: body
type: string
description: New hire email.
- name: shipping_address
in: body
type: string
description: Shipping address for equipment delivery.
steps:
- name: create-request
type: call
call: servicenow.create-request
with:
short_description: Equipment for {{employee_name}}
description: 'Laptop, monitor, and peripherals for new hire {{employee_name}}. Ship to: {{shipping_address}}.'
category: hardware
- name: create-asset
type: call
call: servicenow.create-asset
with:
name: Laptop — {{employee_name}}
assigned_to: '{{employee_email}}'
category: Laptop
- name: send-instructions
type: call
call: sendgrid.send-email
with:
to: '{{employee_email}}'
subject: Welcome to Block — Equipment Shipping
body: 'Welcome {{employee_name}}! Your equipment is being prepared. Request: {{create-request.number}}. Shipping to: {{shipping_address}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://block.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
- name: assets
path: /table/alm_hardware
operations:
- name: create-asset
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
When a new merchant signs up, creates the Square location, provisions a Datadog dashboard for transaction monitoring, and opens a ServiceNow onboarding ticket.
naftiko: '0.5'
info:
label: Merchant Onboarding Orchestrator
description: When a new merchant signs up, creates the Square location, provisions a Datadog dashboard for transaction monitoring, and opens a ServiceNow onboarding ticket.
tags:
- onboarding
- square
- datadog
- servicenow
- merchant-services
capability:
exposes:
- type: mcp
namespace: merchant-onboarding
port: 8080
tools:
- name: onboard-merchant
description: Provision a new merchant with a Square location, monitoring dashboard, and support ticket.
inputParameters:
- name: business_name
in: body
type: string
description: The merchant's business name.
- name: address_line
in: body
type: string
description: Street address for the new location.
- name: city
in: body
type: string
description: City for the new location.
- name: state
in: body
type: string
description: State or province.
- name: country
in: body
type: string
description: ISO 3166-1 alpha-2 country code.
steps:
- name: create-location
type: call
call: square.create-location
with:
location:
name: '{{business_name}}'
address:
address_line_1: '{{address_line}}'
locality: '{{city}}'
administrative_district_level_1: '{{state}}'
country: '{{country}}'
- name: create-dashboard
type: call
call: datadog.create-dashboard
with:
title: Merchant Monitoring — {{business_name}}
description: Transaction and error rate monitoring for location {{create-location.location.id}}.
layout_type: ordered
- name: open-onboarding-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New merchant onboarding: {{business_name}}'
description: 'Location {{create-location.location.id}} provisioned. Dashboard: {{create-dashboard.url}}. Address: {{address_line}}, {{city}}, {{state}}.'
category: merchant_onboarding
assigned_group: Merchant_Success
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: locations
path: /locations
operations:
- name: create-location
method: POST
- 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: dashboards
path: /dashboard
operations:
- name: create-dashboard
method: POST
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Given a Square payment ID, fetches the payment, retrieves the corresponding payout from the Payouts API, and logs the reconciliation record in PostgreSQL.
naftiko: '0.5'
info:
label: Payment-to-Settlement Reconciliation
description: Given a Square payment ID, fetches the payment, retrieves the corresponding payout from the Payouts API, and logs the reconciliation record in PostgreSQL.
tags:
- settlement
- reconciliation
- square
- postgresql
- fintech
capability:
exposes:
- type: mcp
namespace: settlement-recon
port: 8080
tools:
- name: reconcile-payment-payout
description: Match a Square payment to its payout and log the reconciliation.
inputParameters:
- name: payment_id
in: body
type: string
description: The Square payment ID to reconcile.
steps:
- name: get-payment
type: call
call: square.get-payment
with:
payment_id: '{{payment_id}}'
- name: list-payouts
type: call
call: square.list-payout-entries
with:
payout_id: '{{get-payment.payment.payout_id}}'
- name: log-reconciliation
type: call
call: postgresql.insert-row
with:
table: payment_reconciliation
payment_id: '{{payment_id}}'
payout_id: '{{get-payment.payment.payout_id}}'
amount: '{{get-payment.payment.total_money.amount}}'
settled_at: '{{list-payouts.payout_entries.0.effective_at}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments/{{payment_id}}
inputParameters:
- name: payment_id
in: path
operations:
- name: get-payment
method: GET
- name: payout-entries
path: /payouts/{{payout_id}}/payout-entries
inputParameters:
- name: payout_id
in: path
operations:
- name: list-payout-entries
method: GET
- type: http
namespace: postgresql
baseUri: https://block-data.internal/api/v1
authentication:
type: bearer
token: $secrets.internal_db_token
resources:
- name: rows
path: /tables/{{table}}/rows
inputParameters:
- name: table
in: path
operations:
- name: insert-row
method: POST
Checks Bitcoin price via Bloomberg, evaluates treasury allocation, executes a rebalance trade, and logs the transaction in Snowflake for audit.
naftiko: '0.5'
info:
label: Bitcoin Treasury Rebalance Workflow
description: Checks Bitcoin price via Bloomberg, evaluates treasury allocation, executes a rebalance trade, and logs the transaction in Snowflake for audit.
tags:
- treasury
- bitcoin
- bloomberg
- snowflake
capability:
exposes:
- type: mcp
namespace: btc-treasury
port: 8080
tools:
- name: rebalance-treasury
description: Evaluate and execute a Bitcoin treasury rebalance with audit logging.
inputParameters:
- name: target_allocation_pct
in: body
type: number
description: Target Bitcoin allocation percentage.
- name: treasury_account
in: body
type: string
description: Treasury account identifier.
steps:
- name: get-btc-price
type: call
call: bloomberg.get-quote
with:
ticker: XBTUSD
- name: get-holdings
type: call
call: treasury.get-balance
with:
account: '{{treasury_account}}'
- name: execute-trade
type: call
call: treasury.execute-trade
with:
asset: BTC
target_pct: '{{target_allocation_pct}}'
current_price: '{{get-btc-price.last_price}}'
- name: log-audit
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO TREASURY.REBALANCE_LOG (account, asset, price, amount, timestamp) VALUES ('{{treasury_account}}', 'BTC', {{get-btc-price.last_price}}, {{execute-trade.amount}}, CURRENT_TIMESTAMP())
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: quotes
path: /snapshots/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: treasury
baseUri: https://treasury.block.xyz/api/v1
authentication:
type: bearer
token: $secrets.treasury_api_token
resources:
- name: balances
path: /accounts/{{account}}/balance
inputParameters:
- name: account
in: path
operations:
- name: get-balance
method: GET
- name: trades
path: /trades
operations:
- name: execute-trade
method: POST
- type: http
namespace: snowflake
baseUri: https://block.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Creates a batch of Square gift cards, links them to a loyalty promotion, distributes activation codes via MailChimp, and tracks redemption in Google Analytics.
naftiko: '0.5'
info:
label: Square Gift Card Campaign Orchestrator
description: Creates a batch of Square gift cards, links them to a loyalty promotion, distributes activation codes via MailChimp, and tracks redemption in Google Analytics.
tags:
- gift-cards
- square
- mailchimp
- google-analytics
capability:
exposes:
- type: mcp
namespace: gift-card-campaign
port: 8080
tools:
- name: launch-gift-card-campaign
description: Create gift cards and launch a distribution campaign.
inputParameters:
- name: amount_cents
in: body
type: integer
description: Gift card value in cents.
- name: quantity
in: body
type: integer
description: Number of gift cards to create.
- name: campaign_name
in: body
type: string
description: Marketing campaign name.
steps:
- name: create-cards
type: call
call: square.create-gift-card-batch
with:
amount: '{{amount_cents}}'
quantity: '{{quantity}}'
- name: create-campaign
type: call
call: mailchimp.create-campaign
with:
list_id: gift-card-recipients
subject: '{{campaign_name}} — Complimentary Gift Card!'
body: 'You have received a ${{amount_cents}} gift card! Redeem with code: {{create-cards.activation_codes}}.'
- name: track-campaign
type: call
call: google-analytics.send-event
with:
event_name: gift_card_campaign_launched
campaign: '{{campaign_name}}'
value: '{{quantity}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: gift-cards
path: /gift-cards
operations:
- name: create-gift-card-batch
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: google-analytics
baseUri: https://www.google-analytics.com
authentication:
type: apiKey
name: measurement_id
in: query
value: $secrets.ga_measurement_id
resources:
- name: events
path: /mp/collect
operations:
- name: send-event
method: POST
Monitors payment gateway health via Datadog, triggers failover to backup gateway via F5 load balancer, opens a ServiceNow incident, and alerts the payments team via Slack.
naftiko: '0.5'
info:
label: Payment Gateway Failover Pipeline
description: Monitors payment gateway health via Datadog, triggers failover to backup gateway via F5 load balancer, opens a ServiceNow incident, and alerts the payments team via Slack.
tags:
- reliability
- datadog
- f5-networks
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: gateway-failover
port: 8080
tools:
- name: trigger-failover
description: Execute payment gateway failover with incident tracking and notification.
inputParameters:
- name: gateway_name
in: body
type: string
description: The payment gateway service name.
steps:
- name: check-health
type: call
call: datadog.get-monitors
with:
tags: service:{{gateway_name}}
- name: switch-pool
type: call
call: f5.update-pool
with:
pool_name: '{{gateway_name}}-pool'
action: failover
- name: open-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Payment gateway failover: {{gateway_name}}'
description: Gateway {{gateway_name}} failing health checks. Failover initiated to backup pool.
urgency: '1'
impact: '1'
- name: alert-team
type: call
call: slack.post-message
with:
channel: '#payments-oncall'
text: 'FAILOVER: {{gateway_name}} switched to backup. Incident: {{open-incident.number}}. Monitor status: {{check-health.overall_state}}.'
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: monitors
path: /monitor
inputParameters:
- name: tags
in: query
operations:
- name: get-monitors
method: GET
- type: http
namespace: f5
baseUri: https://f5.block.xyz/mgmt/tm/ltm
authentication:
type: basic
username: $secrets.f5_user
password: $secrets.f5_password
resources:
- name: pools
path: /pool/{{pool_name}}
inputParameters:
- name: pool_name
in: path
operations:
- name: update-pool
method: PATCH
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: 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
Fetches a catalog item from the Square Catalog API by object ID, returning the item name, variations, pricing, and inventory state.
naftiko: '0.5'
info:
label: Square Catalog Item Retrieval
description: Fetches a catalog item from the Square Catalog API by object ID, returning the item name, variations, pricing, and inventory state.
tags:
- catalog
- square
- merchant-services
capability:
exposes:
- type: mcp
namespace: square-catalog
port: 8080
tools:
- name: get-catalog-item
description: Retrieve a Square catalog object by its ID.
inputParameters:
- name: object_id
in: body
type: string
description: The Square catalog object ID.
call: square.get-catalog-object
with:
object_id: '{{object_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: catalog
path: /catalog/object/{{object_id}}
inputParameters:
- name: object_id
in: path
operations:
- name: get-catalog-object
method: GET
After a new React Native SDK build completes in GitLab, runs SonarQube analysis and posts the build artifact details to the Square developer documentation portal.
naftiko: '0.5'
info:
label: React Native SDK Build Verification
description: After a new React Native SDK build completes in GitLab, runs SonarQube analysis and posts the build artifact details to the Square developer documentation portal.
tags:
- developer-platform
- react-native
- gitlab
- sonarqube
- sdk
capability:
exposes:
- type: mcp
namespace: sdk-build
port: 8080
tools:
- name: verify-sdk-build
description: Run quality analysis on a React Native SDK build and publish verification to the dev portal.
inputParameters:
- name: project_id
in: body
type: string
description: The GitLab project ID for the SDK.
- name: pipeline_id
in: body
type: string
description: The GitLab pipeline ID.
- name: sonar_project_key
in: body
type: string
description: The SonarQube project key.
steps:
- name: get-pipeline
type: call
call: gitlab.get-pipeline
with:
project_id: '{{project_id}}'
pipeline_id: '{{pipeline_id}}'
- name: get-quality
type: call
call: sonarqube.get-quality-gate
with:
projectKey: '{{sonar_project_key}}'
- name: get-artifacts
type: call
call: gitlab.list-pipeline-artifacts
with:
project_id: '{{project_id}}'
pipeline_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.block.internal/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: pipelines
path: /projects/{{project_id}}/pipelines/{{pipeline_id}}
inputParameters:
- name: project_id
in: path
- name: pipeline_id
in: path
operations:
- name: get-pipeline
method: GET
- name: artifacts
path: /projects/{{project_id}}/pipelines/{{pipeline_id}}/artifacts
inputParameters:
- name: project_id
in: path
- name: pipeline_id
in: path
operations:
- name: list-pipeline-artifacts
method: GET
- type: http
namespace: sonarqube
baseUri: https://sonar.block.internal/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: quality-gates
path: /qualitygates/project_status
operations:
- name: get-quality-gate
method: GET
Runs PCI compliance checks on merchant payment endpoints via Cloudflare, scans infrastructure with SonarQube, logs findings in SharePoint, and notifies via ServiceNow.
naftiko: '0.5'
info:
label: Merchant PCI Compliance Audit
description: Runs PCI compliance checks on merchant payment endpoints via Cloudflare, scans infrastructure with SonarQube, logs findings in SharePoint, and notifies via ServiceNow.
tags:
- compliance
- cloudflare
- sonarqube
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: pci-audit
port: 8080
tools:
- name: audit-pci-compliance
description: Run PCI compliance audit with security scanning and findings documentation.
inputParameters:
- name: merchant_id
in: body
type: string
description: Square merchant identifier.
- name: domain
in: body
type: string
description: Merchant payment domain.
steps:
- name: check-tls
type: call
call: cloudflare.get-ssl-verification
with:
zone_id: $secrets.cloudflare_zone_id
hostname: '{{domain}}'
- name: scan-code
type: call
call: sonarqube.get-vulnerabilities
with:
project_key: merchant-{{merchant_id}}
- name: store-report
type: call
call: sharepoint.create-file
with:
site_id: compliance
folder_path: PCI/{{merchant_id}}
file_name: audit-report.json
content: 'TLS: {{check-tls.status}}. Vulnerabilities: {{scan-code.total}}.'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'PCI audit: merchant {{merchant_id}}'
description: 'TLS status: {{check-tls.status}}. Code vulnerabilities: {{scan-code.total}}. Report: {{store-report.url}}.'
category: compliance
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: ssl
path: /zones/{{zone_id}}/ssl/verification
inputParameters:
- name: zone_id
in: path
operations:
- name: get-ssl-verification
method: GET
- type: http
namespace: sonarqube
baseUri: https://sonar.block.xyz/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: issues
path: /issues/search
inputParameters:
- name: project_key
in: query
operations:
- name: get-vulnerabilities
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: create-file
method: PUT
- type: http
namespace: servicenow
baseUri: https://block.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Triggers a database backup via AWS RDS, verifies backup integrity, stores verification logs in S3, and notifies the DBA team via Slack.
naftiko: '0.5'
info:
label: Database Backup Verification Pipeline
description: Triggers a database backup via AWS RDS, verifies backup integrity, stores verification logs in S3, and notifies the DBA team via Slack.
tags:
- database
- amazon-web-services
- amazon-s3
- slack
capability:
exposes:
- type: mcp
namespace: db-backup
port: 8080
tools:
- name: verify-backup
description: Trigger and verify a database backup with logging and notification.
inputParameters:
- name: db_instance_id
in: body
type: string
description: RDS database instance identifier.
steps:
- name: create-snapshot
type: call
call: rds.create-snapshot
with:
db_instance_id: '{{db_instance_id}}'
snapshot_id: '{{db_instance_id}}-backup'
- name: verify-snapshot
type: call
call: rds.describe-snapshot
with:
snapshot_id: '{{create-snapshot.snapshot_id}}'
- name: log-result
type: call
call: s3.put-object
with:
bucket: backup-verification
key: '{{db_instance_id}}/{{create-snapshot.snapshot_id}}.json'
body: '{{verify-snapshot.status}}'
- name: notify-dba
type: call
call: slack.post-message
with:
channel: '#dba-ops'
text: 'Backup verified: {{db_instance_id}}. Snapshot: {{create-snapshot.snapshot_id}}. Status: {{verify-snapshot.status}}. Size: {{verify-snapshot.allocated_storage}}GB.'
consumes:
- type: http
namespace: rds
baseUri: https://rds.us-east-1.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: snapshots
path: /
operations:
- name: create-snapshot
method: POST
- name: describe-snapshot
method: GET
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
region: us-east-1
access_key: $secrets.aws_access_key
secret_key: $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: 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
Exports a batch of Square transactions for a date range and archives them as a JSON file in Amazon S3 for long-term storage and compliance.
naftiko: '0.5'
info:
label: S3 Transaction Archive
description: Exports a batch of Square transactions for a date range and archives them as a JSON file in Amazon S3 for long-term storage and compliance.
tags:
- archival
- square
- amazon-s3
- compliance
capability:
exposes:
- type: mcp
namespace: transaction-archive
port: 8080
tools:
- name: archive-transactions
description: Export Square transactions and store in S3 for archival.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location 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.
steps:
- name: list-payments
type: call
call: square.list-payments
with:
location_id: '{{location_id}}'
begin_time: '{{start_date}}T00:00:00Z'
end_time: '{{end_date}}T23:59:59Z'
- name: upload-to-s3
type: call
call: s3.put-object
with:
Bucket: block-transaction-archives
Key: '{{location_id}}/{{start_date}}_{{end_date}}.json'
Body: '{{list-payments}}'
ContentType: application/json
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments
operations:
- name: list-payments
method: GET
- type: http
namespace: s3
baseUri: https://s3.us-east-1.amazonaws.com
authentication:
type: awsSigV4
accessKeyId: $secrets.aws_access_key_id
secretAccessKey: $secrets.aws_secret_access_key
region: us-east-1
service: s3
resources:
- name: objects
path: /{{Bucket}}/{{Key}}
inputParameters:
- name: Bucket
in: path
- name: Key
in: path
operations:
- name: put-object
method: PUT
Retrieves the health status of F5 load balancer pool members for Block's payment API gateway.
naftiko: '0.5'
info:
label: F5 Load Balancer Pool Status
description: Retrieves the health status of F5 load balancer pool members for Block's payment API gateway.
tags:
- load-balancing
- f5-networks
- infrastructure
- payments
capability:
exposes:
- type: mcp
namespace: f5-health
port: 8080
tools:
- name: get-pool-status
description: Retrieve F5 load balancer pool member health.
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://f5-bigip.block.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
When a Square merchant updates their business profile, syncs the updated business name, description, and hours to their Instagram, Twitter, and Meta business pages.
naftiko: '0.5'
info:
label: Merchant Social Media Sync
description: When a Square merchant updates their business profile, syncs the updated business name, description, and hours to their Instagram, Twitter, and Meta business pages.
tags:
- social-media
- square
- instagram
- twitter
- meta
- merchant-services
capability:
exposes:
- type: mcp
namespace: social-sync
port: 8080
tools:
- name: sync-merchant-profile
description: Sync a Square merchant profile update to social media platforms.
inputParameters:
- name: location_id
in: body
type: string
description: The Square location ID.
- name: instagram_account_id
in: body
type: string
description: The Instagram business account ID.
- name: twitter_user_id
in: body
type: string
description: The Twitter/X user ID.
steps:
- name: get-location
type: call
call: square.get-location
with:
location_id: '{{location_id}}'
- name: update-instagram
type: call
call: meta.update-business-profile
with:
account_id: '{{instagram_account_id}}'
bio: '{{get-location.location.description}}'
name: '{{get-location.location.name}}'
- name: post-twitter-update
type: call
call: twitter.create-tweet
with:
text: We've updated our profile! Visit us at {{get-location.location.name}}, {{get-location.location.address.address_line_1}}, {{get-location.location.address.locality}}.
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: locations
path: /locations/{{location_id}}
inputParameters:
- name: location_id
in: path
operations:
- name: get-location
method: GET
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_page_token
resources:
- name: accounts
path: /{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-business-profile
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
Polls Spring Boot actuator endpoints across payment microservices, aggregates health data in Datadog, creates alerts for unhealthy services, and posts status to Slack.
naftiko: '0.5'
info:
label: Spring Boot Service Health Aggregator Pipeline
description: Polls Spring Boot actuator endpoints across payment microservices, aggregates health data in Datadog, creates alerts for unhealthy services, and posts status to Slack.
tags:
- observability
- spring-boot
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: health-aggregator
port: 8080
tools:
- name: aggregate-health
description: Aggregate health status across Spring Boot microservices with alerting.
inputParameters:
- name: service_group
in: body
type: string
description: Service group name (e.g. payments, identity).
steps:
- name: get-services
type: call
call: datadog.search-services
with:
query: group:{{service_group}}
- name: check-health
type: call
call: datadog.query-metrics
with:
query: avg:spring.health{group:{{service_group}}} by {service}
period: 5m
- name: create-alert
type: call
call: datadog.create-monitor
with:
name: 'Health degradation: {{service_group}}'
query: avg(last_5m):avg:spring.health{group:{{service_group}}} < 1
type: metric alert
- name: post-status
type: call
call: slack.post-message
with:
channel: '#platform-health'
text: 'Health check for {{service_group}}: {{check-health.healthy_count}}/{{check-health.total_count}} services healthy.'
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: services
path: /service_dependencies
operations:
- name: search-services
method: GET
- name: metrics
path: /query
inputParameters:
- name: query
in: query
- name: period
in: query
operations:
- name: query-metrics
method: GET
- name: monitors
path: /monitor
operations:
- name: create-monitor
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 SonarQube quality gate status for a Square developer SDK project and posts the result to the Bitbucket pull request.
naftiko: '0.5'
info:
label: SonarQube Code Quality Gate Check
description: Retrieves the SonarQube quality gate status for a Square developer SDK project and posts the result to the Bitbucket pull request.
tags:
- code-quality
- sonarqube
- bitbucket
- developer-platform
capability:
exposes:
- type: mcp
namespace: code-quality
port: 8080
tools:
- name: check-quality-gate
description: Fetch SonarQube quality gate status and update the Bitbucket PR.
inputParameters:
- name: project_key
in: body
type: string
description: The SonarQube project key.
- name: pr_id
in: body
type: string
description: The Bitbucket pull request ID.
- name: repo_slug
in: body
type: string
description: The Bitbucket repository slug.
steps:
- name: get-quality-gate
type: call
call: sonarqube.get-quality-gate
with:
projectKey: '{{project_key}}'
- name: post-pr-comment
type: call
call: bitbucket.create-pr-comment
with:
repo_slug: '{{repo_slug}}'
pull_request_id: '{{pr_id}}'
content: 'SonarQube Quality Gate: {{get-quality-gate.projectStatus.status}}. Details: {{get-quality-gate.projectStatus.conditions}}'
consumes:
- type: http
namespace: sonarqube
baseUri: https://sonar.block.internal/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: quality-gates
path: /qualitygates/project_status
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: bitbucket
baseUri: https://api.bitbucket.org/2.0/repositories/block
authentication:
type: bearer
token: $secrets.bitbucket_token
resources:
- name: pr-comments
path: /{{repo_slug}}/pullrequests/{{pull_request_id}}/comments
inputParameters:
- name: repo_slug
in: path
- name: pull_request_id
in: path
operations:
- name: create-pr-comment
method: POST
Checks the status of a Cash App Pay transaction by payment ID, returning approval state, sender, and settlement timestamp.
naftiko: '0.5'
info:
label: Cash App Pay Status Check
description: Checks the status of a Cash App Pay transaction by payment ID, returning approval state, sender, and settlement timestamp.
tags:
- payments
- cash-app
- fintech
capability:
exposes:
- type: mcp
namespace: cashapp-payments
port: 8080
tools:
- name: get-cashapp-payment
description: Retrieve the status and details of a Cash App Pay payment.
inputParameters:
- name: payment_id
in: body
type: string
description: The Cash App payment identifier.
call: square.get-payment
with:
payment_id: '{{payment_id}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: payments
path: /payments/{{payment_id}}
inputParameters:
- name: payment_id
in: path
operations:
- name: get-payment
method: GET
Cancels a Square subscription, processes the final prorated refund, updates the customer record, and logs the churn event in Elasticsearch.
naftiko: '0.5'
info:
label: Merchant Subscription Cancellation Flow
description: Cancels a Square subscription, processes the final prorated refund, updates the customer record, and logs the churn event in Elasticsearch.
tags:
- subscriptions
- churn
- square
- elasticsearch
- merchant-services
capability:
exposes:
- type: mcp
namespace: subscription-cancel
port: 8080
tools:
- name: cancel-subscription-flow
description: Cancel a subscription, issue final refund, update customer, and log the churn.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Square subscription ID.
- name: customer_id
in: body
type: string
description: The Square customer ID.
- name: reason
in: body
type: string
description: Reason for cancellation.
steps:
- name: cancel-subscription
type: call
call: square.cancel-subscription
with:
subscription_id: '{{subscription_id}}'
- name: update-customer
type: call
call: square.update-customer
with:
customer_id: '{{customer_id}}'
note: 'Subscription {{subscription_id}} cancelled. Reason: {{reason}}.'
- name: log-churn
type: call
call: elasticsearch.index-document
with:
index: subscription-churn
document:
subscription_id: '{{subscription_id}}'
customer_id: '{{customer_id}}'
reason: '{{reason}}'
cancelled_date: '{{cancel-subscription.subscription.canceled_date}}'
consumes:
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_access_token
resources:
- name: subscriptions
path: /subscriptions/{{subscription_id}}/cancel
inputParameters:
- name: subscription_id
in: path
operations:
- name: cancel-subscription
method: POST
- name: customers
path: /customers/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: update-customer
method: PUT
- type: http
namespace: elasticsearch
baseUri: https://block-es.internal:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
Queries Palo Alto Networks Panorama for active firewall rules protecting Block's payment processing network perimeter.
naftiko: '0.5'
info:
label: Palo Alto Networks Firewall Rule Check
description: Queries Palo Alto Networks Panorama for active firewall rules protecting Block's payment processing network perimeter.
tags:
- security
- palo-alto-networks
- infrastructure
- payments
capability:
exposes:
- type: mcp
namespace: pan-firewall
port: 8080
tools:
- name: get-firewall-rules
description: Retrieve active firewall rules from Palo Alto Panorama.
inputParameters:
- name: device_group
in: body
type: string
description: The Panorama device group name.
call: paloalto.get-security-rules
with:
device_group: '{{device_group}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.block.internal/restapi/v10.2
authentication:
type: apiKey
name: X-PAN-KEY
in: header
value: $secrets.panorama_api_key
resources:
- name: security-rules
path: /Policies/SecurityRules
operations:
- name: get-security-rules
method: GET
Verifies a Cash App account by cashtag, returning account status, verification level, and basic profile information for compliance checks.
naftiko: '0.5'
info:
label: Cash App Account Verification
description: Verifies a Cash App account by cashtag, returning account status, verification level, and basic profile information for compliance checks.
tags:
- verification
- cash-app
capability:
exposes:
- type: mcp
namespace: cash-app-verify
port: 8080
tools:
- name: verify-account
description: Verify a Cash App account by cashtag.
inputParameters:
- name: cashtag
in: body
type: string
description: The Cash App cashtag (e.g. $username).
call: cashapp.verify-account
with:
cashtag: '{{cashtag}}'
consumes:
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: accounts
path: /accounts/verify
inputParameters:
- name: cashtag
in: query
operations:
- name: verify-account
method: GET
Queries recent Cash App P2P transfers for a given cashtag, enriches with Bitcoin conversion rates, and stores the summary in PostgreSQL for compliance reporting.
naftiko: '0.5'
info:
label: Cash App Peer-to-Peer Transfer Tracker
description: Queries recent Cash App P2P transfers for a given cashtag, enriches with Bitcoin conversion rates, and stores the summary in PostgreSQL for compliance reporting.
tags:
- cash-app
- bitcoin
- postgresql
- compliance
- fintech
capability:
exposes:
- type: mcp
namespace: cashapp-p2p
port: 8080
tools:
- name: track-p2p-transfers
description: Query recent P2P transfers, enrich with BTC rates, and store for compliance.
inputParameters:
- name: cashtag
in: body
type: string
description: The Cash App cashtag to query.
- 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-transfers
type: call
call: cashapp.list-transfers
with:
cashtag: '{{cashtag}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: get-btc-rate
type: call
call: bitcoin.get-price
with:
currency_pair: BTC-USD
- name: store-summary
type: call
call: postgresql.insert-row
with:
table: p2p_transfer_audit
cashtag: '{{cashtag}}'
period_start: '{{start_date}}'
period_end: '{{end_date}}'
transfer_count: '{{get-transfers.total_count}}'
total_usd: '{{get-transfers.total_amount}}'
btc_rate_at_query: '{{get-btc-rate.USD.last}}'
consumes:
- type: http
namespace: cashapp
baseUri: https://api.cash.app/v1
authentication:
type: bearer
token: $secrets.cashapp_api_token
resources:
- name: transfers
path: /transfers
operations:
- name: list-transfers
method: GET
- type: http
namespace: bitcoin
baseUri: https://api.blockchain.info/v2
authentication:
type: bearer
token: $secrets.blockchain_api_token
resources:
- name: ticker
path: /ticker
operations:
- name: get-price
method: GET
- type: http
namespace: postgresql
baseUri: https://block-data.internal/api/v1
authentication:
type: bearer
token: $secrets.internal_db_token
resources:
- name: rows
path: /tables/{{table}}/rows
inputParameters:
- name: table
in: path
operations:
- name: insert-row
method: POST
Validates a new SDK release by running SonarQube quality checks, verifying GitLab CI tests pass, publishing the artifact, and notifying developers via Slack.
naftiko: '0.5'
info:
label: SDK Release Validation Pipeline
description: Validates a new SDK release by running SonarQube quality checks, verifying GitLab CI tests pass, publishing the artifact, and notifying developers via Slack.
tags:
- developer-platform
- sonarqube
- gitlab
- slack
capability:
exposes:
- type: mcp
namespace: sdk-release
port: 8080
tools:
- name: validate-and-release
description: Validate code quality, run tests, and publish an SDK release.
inputParameters:
- name: project_id
in: body
type: string
description: GitLab project ID.
- name: version
in: body
type: string
description: SDK version to release.
steps:
- name: quality-check
type: call
call: sonarqube.get-quality-gate
with:
project_key: '{{project_id}}'
- name: run-tests
type: call
call: gitlab.create-pipeline
with:
project_id: '{{project_id}}'
ref: v{{version}}
variables: RELEASE=true
- name: publish-artifact
type: call
call: gitlab.create-release
with:
project_id: '{{project_id}}'
tag_name: v{{version}}
description: 'SDK Release v{{version}}. Quality gate: {{quality-check.status}}.'
- name: announce-release
type: call
call: slack.post-message
with:
channel: '#developer-platform'
text: 'SDK v{{version}} released! Quality: {{quality-check.status}}. Pipeline: {{run-tests.id}}. Download: {{publish-artifact.assets_url}}.'
consumes:
- type: http
namespace: sonarqube
baseUri: https://sonar.block.xyz/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: quality-gates
path: /qualitygates/project_status
inputParameters:
- name: project_key
in: query
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: gitlab
baseUri: https://gitlab.block.xyz/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: pipelines
path: /projects/{{project_id}}/pipeline
inputParameters:
- name: project_id
in: path
operations:
- name: create-pipeline
method: POST
- name: releases
path: /projects/{{project_id}}/releases
inputParameters:
- name: project_id
in: path
operations:
- name: create-release
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 new Terraform Cloud workspace for a given project, links the GitHub repository, and notifies the infrastructure team via Slack.
naftiko: '0.5'
info:
label: Terraform Cloud Workspace Provisioner
description: Creates a new Terraform Cloud workspace for a given project, links the GitHub repository, and notifies the infrastructure team via Slack.
tags:
- cloud
- infrastructure
- terraform
- github
- slack
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: provision-terraform-workspace
description: Given a workspace name, GitHub repository, and Terraform organization, create a new Terraform Cloud workspace linked to the repository and notify the infrastructure team in Slack. Use when a new project or service requires cloud infrastructure.
inputParameters:
- name: workspace_name
in: body
type: string
description: The desired Terraform Cloud workspace name, e.g. 'bloomberg-trading-api-prod'.
- name: github_repo
in: body
type: string
description: The GitHub repository to link, e.g. 'bloomberg/trading-api'.
- name: tf_org
in: body
type: string
description: The Terraform Cloud organization name.
steps:
- name: create-workspace
type: call
call: terraform.create-workspace
with:
name: '{{workspace_name}}'
organization: '{{tf_org}}'
- name: link-vcs
type: call
call: terraform-vcs.link-vcs-repo
with:
workspace_id: '{{create-workspace.id}}'
repo: '{{github_repo}}'
- name: notify-infra
type: call
call: slack.post-message
with:
channel: infrastructure
text: Terraform workspace {{workspace_name}} created and linked to {{github_repo}}.
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: workspaces
path: /organizations/{{organization}}/workspaces
inputParameters:
- name: organization
in: path
operations:
- name: create-workspace
method: POST
- type: http
namespace: terraform-vcs
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: workspace-vcs
path: /workspaces/{{workspace_id}}/relationships/vars
inputParameters:
- name: workspace_id
in: path
operations:
- name: link-vcs-repo
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 role change is detected in Workday, updates Okta group memberships, adjusts GitHub team assignments, and notifies the employee and manager on Slack.
naftiko: '0.5'
info:
label: Employee Role Change Access Update
description: When a role change is detected in Workday, updates Okta group memberships, adjusts GitHub team assignments, and notifies the employee and manager on Slack.
tags:
- hr
- workday
- okta
- github
- slack
capability:
exposes:
- type: mcp
namespace: role-change-ops
port: 8080
tools:
- name: update-access-on-role-change
description: Given a Workday role change event, update Okta groups, GitHub teams, and notify via Slack.
inputParameters:
- name: employee_email
in: body
type: string
description: The employee's email.
- name: new_role
in: body
type: string
description: The new role title.
- name: new_department
in: body
type: string
description: The new department.
steps:
- name: update-okta
type: call
call: okta-role.update-user-groups
with:
email: '{{employee_email}}'
department: '{{new_department}}'
- name: update-github
type: call
call: gh-role.update-team-membership
with:
username: '{{employee_email}}'
team: '{{new_department}}'
- name: notify-change
type: call
call: slack-role.post-message
with:
channel: it-provisioning
text: 'Role change processed: {{employee_email}} moved to {{new_role}} in {{new_department}}. Okta and GitHub access updated.'
consumes:
- type: http
namespace: okta-role
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: groups
path: /users/{{email}}/groups
inputParameters:
- name: email
in: path
operations:
- name: update-user-groups
method: PUT
- type: http
namespace: gh-role
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: teams
path: /orgs/bloomberg/teams/{{team}}/memberships/{{username}}
inputParameters:
- name: team
in: path
- name: username
in: path
operations:
- name: update-team-membership
method: PUT
- type: http
namespace: slack-role
baseUri: 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 p99 and p50 latency metrics for Bloomberg API endpoints from Datadog for performance monitoring.
naftiko: '0.5'
info:
label: Datadog API Latency Check
description: Retrieves p99 and p50 latency metrics for Bloomberg API endpoints from Datadog for performance monitoring.
tags:
- observability
- datadog
- api-performance
- latency
capability:
exposes:
- type: mcp
namespace: api-perf
port: 8080
tools:
- name: get-api-latency
description: Given a Bloomberg API service name, return p50 and p99 latency metrics from Datadog. Use for SLA compliance checks.
inputParameters:
- name: service_name
in: body
type: string
description: The Bloomberg API service name in Datadog.
call: dd-latency.get-metrics
with:
service: '{{service_name}}'
outputParameters:
- name: p50_ms
type: number
mapping: $.series[0].pointlist[-1][1]
- name: p99_ms
type: number
mapping: $.series[1].pointlist[-1][1]
consumes:
- type: http
namespace: dd-latency
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
operations:
- name: get-metrics
method: GET
Launches a quarterly Okta access review campaign, generates a user access report, sends review requests to managers via Slack, and tracks completion in Jira.
naftiko: '0.5'
info:
label: Okta Access Certification Campaign
description: Launches a quarterly Okta access review campaign, generates a user access report, sends review requests to managers via Slack, and tracks completion in Jira.
tags:
- identity
- okta
- slack
- jira
- access-management
capability:
exposes:
- type: mcp
namespace: access-cert
port: 8080
tools:
- name: launch-access-certification
description: Launch a quarterly access certification campaign across Okta, send review requests, and track in Jira.
inputParameters:
- name: quarter
in: body
type: string
description: The quarter for the review, e.g. 'Q1-2026'.
- name: app_name
in: body
type: string
description: The Okta application to review.
steps:
- name: get-app-users
type: call
call: okta-cert.get-app-users
with:
app_name: '{{app_name}}'
- name: create-tracking-epic
type: call
call: jira-cert.create-issue
with:
project: SEC
summary: 'Access certification: {{app_name}} {{quarter}}'
description: 'Quarterly access review for {{app_name}}. Users: {{get-app-users.count}}'
issue_type: Epic
- name: notify-managers
type: call
call: slack-cert.post-message
with:
channel: access-reviews
text: 'Quarterly access certification launched: {{app_name}} ({{quarter}}). {{get-app-users.count}} users to review. Epic: {{create-tracking-epic.key}}'
consumes:
- type: http
namespace: okta-cert
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: app-users
path: /apps/{{app_name}}/users
inputParameters:
- name: app_name
in: path
operations:
- name: get-app-users
method: GET
- type: http
namespace: jira-cert
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-cert
baseUri: 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 Snowflake data pipeline misses its SLA, creates a PagerDuty incident, opens a Jira ticket, and posts an alert to the data engineering Slack channel.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline SLA Breach Handler
description: When a Snowflake data pipeline misses its SLA, creates a PagerDuty incident, opens a Jira ticket, and posts an alert to the data engineering Slack channel.
tags:
- data-engineering
- snowflake
- pagerduty
- jira
- slack
capability:
exposes:
- type: mcp
namespace: pipeline-sla
port: 8080
tools:
- name: handle-pipeline-sla-breach
description: Given a Snowflake pipeline SLA breach, create a PagerDuty incident, Jira ticket, and Slack alert.
inputParameters:
- name: pipeline_name
in: body
type: string
description: The name of the pipeline that missed SLA.
- name: expected_completion
in: body
type: string
description: The expected completion time.
- name: actual_status
in: body
type: string
description: The current pipeline status.
steps:
- name: page-oncall
type: call
call: pd-pipeline.create-incident
with:
title: 'Pipeline SLA breach: {{pipeline_name}}'
service_id: $secrets.pagerduty_data_service
urgency: high
- name: create-ticket
type: call
call: jira-pipeline.create-issue
with:
project: DATA
summary: 'SLA breach: {{pipeline_name}}'
description: 'Expected: {{expected_completion}}. Status: {{actual_status}}. PagerDuty: {{page-oncall.incident_url}}'
priority: Critical
- name: alert-team
type: call
call: slack-pipeline.post-message
with:
channel: data-engineering-alerts
text: 'PIPELINE SLA BREACH: {{pipeline_name}}. Expected by {{expected_completion}}, status: {{actual_status}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: pd-pipeline
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: jira-pipeline
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-pipeline
baseUri: 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 SAP detects a budget overrun for a cost center, creates a Jira ticket for finance review, notifies the cost center manager on Slack, and logs the event in ServiceNow.
naftiko: '0.5'
info:
label: SAP Budget Overrun Escalation
description: When SAP detects a budget overrun for a cost center, creates a Jira ticket for finance review, notifies the cost center manager on Slack, and logs the event in ServiceNow.
tags:
- finance
- sap
- jira
- slack
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: escalate-budget-overrun
description: Given a cost center and overrun amount, create a Jira finance ticket, notify the manager via Slack, and log in ServiceNow.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center ID.
- name: overrun_amount
in: body
type: string
description: The budget overrun amount.
- name: manager_email
in: body
type: string
description: Email of the cost center manager.
steps:
- name: create-finance-ticket
type: call
call: jira-fin.create-issue
with:
project: FIN
summary: 'Budget overrun: Cost center {{cost_center}} exceeded by {{overrun_amount}}'
description: 'Manager: {{manager_email}}. Review and approve variance or identify reallocation.'
priority: High
- name: notify-manager
type: call
call: slack-fin.post-message
with:
channel: finance-alerts
text: 'Budget overrun detected: Cost center {{cost_center}} exceeded by {{overrun_amount}}. Jira: {{create-finance-ticket.key}}. Please review.'
- name: log-event
type: call
call: snow-fin.create-incident
with:
short_description: 'Budget overrun: {{cost_center}}'
description: 'Overrun: {{overrun_amount}}. Jira: {{create-finance-ticket.key}}'
category: finance
consumes:
- type: http
namespace: jira-fin
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-fin
baseUri: 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: snow-fin
baseUri: https://bloomberg.service-now.com/api/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 SAP Concur flags an expense report anomaly, creates a Jira audit ticket, notifies the employee's manager on Slack, and opens a ServiceNow compliance case.
naftiko: '0.5'
info:
label: SAP Concur Expense Anomaly Handler
description: When SAP Concur flags an expense report anomaly, creates a Jira audit ticket, notifies the employee's manager on Slack, and opens a ServiceNow compliance case.
tags:
- finance
- sap-concur
- jira
- slack
- servicenow
capability:
exposes:
- type: mcp
namespace: expense-ops
port: 8080
tools:
- name: handle-expense-anomaly
description: Given an expense report anomaly from SAP Concur, create a Jira audit ticket, notify the manager, and log a compliance case.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: employee_name
in: body
type: string
description: The employee who submitted the report.
- name: anomaly_type
in: body
type: string
description: The type of anomaly detected.
steps:
- name: create-audit-ticket
type: call
call: jira-audit.create-issue
with:
project: AUDIT
summary: 'Expense anomaly: {{anomaly_type}} - {{employee_name}}'
description: 'Report: {{report_id}}. Employee: {{employee_name}}. Anomaly: {{anomaly_type}}'
priority: High
- name: notify-manager
type: call
call: slack-audit.post-message
with:
channel: expense-compliance
text: 'Expense anomaly detected: {{employee_name}} report {{report_id}}. Type: {{anomaly_type}}. Jira: {{create-audit-ticket.key}}'
- name: log-compliance-case
type: call
call: snow-audit.create-incident
with:
short_description: 'Expense anomaly: {{anomaly_type}} - {{employee_name}}'
description: 'Report: {{report_id}}. Jira: {{create-audit-ticket.key}}'
category: compliance
consumes:
- type: http
namespace: jira-audit
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-audit
baseUri: 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: snow-audit
baseUri: https://bloomberg.service-now.com/api/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 Bloomberg index rebalance is detected, retrieves updated constituents, generates an impact analysis via Anthropic, and distributes to portfolio managers via Slack.
naftiko: '0.5'
info:
label: Bloomberg Index Rebalance Notification
description: When a Bloomberg index rebalance is detected, retrieves updated constituents, generates an impact analysis via Anthropic, and distributes to portfolio managers via Slack.
tags:
- financial-data
- bloomberg-indices
- anthropic
- slack
- portfolio
capability:
exposes:
- type: mcp
namespace: index-rebalance
port: 8080
tools:
- name: notify-index-rebalance
description: Given a Bloomberg index ticker with a pending rebalance, retrieve new constituents, analyze impact, and notify portfolio managers.
inputParameters:
- name: index_ticker
in: body
type: string
description: The Bloomberg index ticker.
- name: rebalance_date
in: body
type: string
description: The effective rebalance date.
steps:
- name: get-changes
type: call
call: bbg-idx-rebal.get-rebalance-changes
with:
ticker: '{{index_ticker}}'
date: '{{rebalance_date}}'
- name: analyze-impact
type: call
call: anthropic-idx.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a portfolio analyst. Summarize index rebalance changes and their impact on tracking portfolios.
content: 'Analyze these rebalance changes for {{index_ticker}} effective {{rebalance_date}}: {{get-changes.data}}'
- name: notify-pm
type: call
call: slack-pm.post-message
with:
channel: portfolio-management
text: 'Index Rebalance: {{index_ticker}} effective {{rebalance_date}}. Impact: {{analyze-impact.content}}'
consumes:
- type: http
namespace: bbg-idx-rebal
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/data
authentication:
type: bearer
token: $secrets.bloomberg_data_token
resources:
- name: rebalance
path: /indices/{{ticker}}/rebalance
inputParameters:
- name: ticker
in: path
operations:
- name: get-rebalance-changes
method: GET
- type: http
namespace: anthropic-idx
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: slack-pm
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves the list of Okta groups a user belongs to for access review and compliance checks.
naftiko: '0.5'
info:
label: Okta User Group Membership Lookup
description: Retrieves the list of Okta groups a user belongs to for access review and compliance checks.
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: get-user-groups
description: Given an Okta user email, return the list of groups they belong to. Use for quarterly access reviews.
inputParameters:
- name: user_email
in: body
type: string
description: The user's email address in Okta.
call: okta-groups.get-user-groups
with:
email: '{{user_email}}'
outputParameters:
- name: groups
type: array
mapping: $.groups[*].profile.name
consumes:
- type: http
namespace: okta-groups
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-groups
path: /users/{{email}}/groups
inputParameters:
- name: email
in: path
operations:
- name: get-user-groups
method: GET
Gathers KPI data from Snowflake, generates an executive summary via Anthropic Claude, and distributes the digest via Slack and Microsoft Teams to leadership.
naftiko: '0.5'
info:
label: Weekly Executive KPI Dashboard Digest
description: Gathers KPI data from Snowflake, generates an executive summary via Anthropic Claude, and distributes the digest via Slack and Microsoft Teams to leadership.
tags:
- reporting
- snowflake
- anthropic
- slack
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: exec-reporting
port: 8080
tools:
- name: generate-kpi-digest
description: Query Snowflake for KPIs, generate an executive summary via Anthropic, and distribute via Slack and Teams.
inputParameters:
- name: week_ending
in: body
type: string
description: The week ending date in YYYY-MM-DD format.
steps:
- name: query-kpis
type: call
call: snowflake-kpi.execute-query
with:
query: SELECT metric_name, current_value, target_value, pct_change FROM analytics.executive_kpis WHERE week_ending = '{{week_ending}}'
- name: generate-summary
type: call
call: anthropic-kpi.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are an executive briefing writer. Create a concise, action-oriented KPI summary for senior leadership.
content: 'Create an executive KPI digest for week ending {{week_ending}}: {{query-kpis.data}}'
- name: post-to-slack
type: call
call: slack-exec.post-message
with:
channel: executive-briefings
text: 'Weekly KPI Digest ({{week_ending}}): {{generate-summary.content}}'
consumes:
- type: http
namespace: snowflake-kpi
baseUri: https://bloomberg.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: anthropic-kpi
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: slack-exec
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When Bloomberg Valuation Service detects a pricing discrepancy, creates a Jira investigation ticket, notifies the valuation team on Slack, and logs the event in Snowflake for audit.
naftiko: '0.5'
info:
label: Bloomberg Valuation Discrepancy Alert
description: When Bloomberg Valuation Service detects a pricing discrepancy, creates a Jira investigation ticket, notifies the valuation team on Slack, and logs the event in Snowflake for audit.
tags:
- financial-data
- bloomberg-valuation-service-bval
- jira
- slack
- snowflake
capability:
exposes:
- type: mcp
namespace: valuation-ops
port: 8080
tools:
- name: handle-valuation-discrepancy
description: Given a BVAL pricing discrepancy, create a Jira ticket, alert the valuation team, and log to Snowflake.
inputParameters:
- name: security_id
in: body
type: string
description: The security identifier with the discrepancy.
- name: expected_price
in: body
type: string
description: The expected price.
- name: actual_price
in: body
type: string
description: The actual Bloomberg BVAL price.
steps:
- name: create-ticket
type: call
call: jira-val.create-issue
with:
project: VAL
summary: 'BVAL discrepancy: {{security_id}} (expected: {{expected_price}}, actual: {{actual_price}})'
description: 'Security: {{security_id}}. Expected: {{expected_price}}. BVAL: {{actual_price}}.'
priority: High
- name: notify-team
type: call
call: slack-val.post-message
with:
channel: valuation-team
text: 'BVAL discrepancy: {{security_id}}. Expected: {{expected_price}}, Actual: {{actual_price}}. Jira: {{create-ticket.key}}'
- name: log-audit
type: call
call: snowflake-val.insert-rows
with:
table: BLOOMBERG.AUDIT.VALUATION_DISCREPANCIES
data: '{"security": "{{security_id}}", "expected": "{{expected_price}}", "actual": "{{actual_price}}", "jira": "{{create-ticket.key}}"}'
consumes:
- type: http
namespace: jira-val
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-val
baseUri: 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: snowflake-val
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: rows
path: /databases/bloomberg/schemas/audit/tables/valuation_discrepancies/insertRows
operations:
- name: insert-rows
method: POST
When a Salesforce opportunity is marked as Closed-Won, triggers a welcome email via HubSpot, creates an onboarding project in Jira, and notifies the account team on Slack.
naftiko: '0.5'
info:
label: Salesforce Opportunity Closure Workflow
description: When a Salesforce opportunity is marked as Closed-Won, triggers a welcome email via HubSpot, creates an onboarding project in Jira, and notifies the account team on Slack.
tags:
- crm
- salesforce
- hubspot
- jira
- slack
capability:
exposes:
- type: mcp
namespace: deal-ops
port: 8080
tools:
- name: process-opportunity-closure
description: Given a closed-won Salesforce opportunity, trigger client onboarding via HubSpot, Jira, and Slack.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
- name: account_name
in: body
type: string
description: The account name for the closed deal.
- name: deal_value
in: body
type: string
description: The deal value.
steps:
- name: send-welcome
type: call
call: hubspot-onboard.send-email
with:
template: client-welcome
account: '{{account_name}}'
- name: create-onboarding-project
type: call
call: jira-onboard.create-issue
with:
project: ONBOARD
summary: 'Client onboarding: {{account_name}}'
description: 'Opportunity: {{opportunity_id}}. Value: {{deal_value}}.'
issue_type: Epic
- name: notify-team
type: call
call: slack-deals.post-message
with:
channel: deal-wins
text: 'Closed-Won: {{account_name}} ({{deal_value}}). Onboarding started. Jira: {{create-onboarding-project.key}}'
consumes:
- type: http
namespace: hubspot-onboard
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: jira-onboard
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-deals
baseUri: 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 vendor record in SAP, provisions access in Okta, creates an onboarding checklist in Jira, and notifies procurement on Slack.
naftiko: '0.5'
info:
label: New Vendor Onboarding Orchestrator
description: Creates a vendor record in SAP, provisions access in Okta, creates an onboarding checklist in Jira, and notifies procurement on Slack.
tags:
- procurement
- sap
- okta
- jira
- slack
capability:
exposes:
- type: mcp
namespace: vendor-onboard
port: 8080
tools:
- name: onboard-new-vendor
description: Given vendor details, create SAP record, provision Okta access, create Jira checklist, and notify procurement.
inputParameters:
- name: vendor_name
in: body
type: string
description: The vendor company name.
- name: contact_email
in: body
type: string
description: The vendor primary contact email.
- name: service_category
in: body
type: string
description: The vendor service category.
steps:
- name: create-sap-vendor
type: call
call: sap-vendor.create-business-partner
with:
name: '{{vendor_name}}'
email: '{{contact_email}}'
category: '{{service_category}}'
- name: provision-access
type: call
call: okta-vendor.create-user
with:
email: '{{contact_email}}'
group: external-vendors
- name: create-checklist
type: call
call: jira-vendor.create-issue
with:
project: PROC
summary: 'Vendor onboarding: {{vendor_name}}'
description: 'Contact: {{contact_email}}. Category: {{service_category}}. SAP: {{create-sap-vendor.vendor_id}}'
issue_type: Task
- name: notify-procurement
type: call
call: slack-vendor.post-message
with:
channel: procurement
text: 'New vendor onboarded: {{vendor_name}} ({{service_category}}). SAP: {{create-sap-vendor.vendor_id}}. Jira: {{create-checklist.key}}'
consumes:
- type: http
namespace: sap-vendor
baseUri: https://sap.bloomberg.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: partners
path: /API_BUSINESS_PARTNER/A_BusinessPartner
operations:
- name: create-business-partner
method: POST
- type: http
namespace: okta-vendor
baseUri: https://bloomberg.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: jira-vendor
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-vendor
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors Bloomberg Tax for upcoming filing deadlines, creates Jira tasks for each deadline, and sends reminders to the tax team via Slack.
naftiko: '0.5'
info:
label: Bloomberg Tax Filing Deadline Tracker
description: Monitors Bloomberg Tax for upcoming filing deadlines, creates Jira tasks for each deadline, and sends reminders to the tax team via Slack.
tags:
- compliance
- bloomberg-tax-btax
- jira
- slack
- tax
capability:
exposes:
- type: mcp
namespace: tax-ops
port: 8080
tools:
- name: track-tax-deadlines
description: Given a jurisdiction and date range, retrieve Bloomberg Tax filing deadlines, create Jira tasks, and notify the tax team.
inputParameters:
- name: jurisdiction
in: body
type: string
description: The tax jurisdiction, e.g. 'US-Federal'.
- name: days_ahead
in: body
type: string
description: Number of days ahead to look for deadlines.
steps:
- name: get-deadlines
type: call
call: btax-deadlines.get-upcoming
with:
jurisdiction: '{{jurisdiction}}'
days: '{{days_ahead}}'
- name: create-tasks
type: call
call: jira-tax.create-issue
with:
project: TAX
summary: 'Tax filing deadline: {{jurisdiction}} - {{get-deadlines.next_deadline}}'
description: 'Deadline: {{get-deadlines.next_deadline}}. Filing: {{get-deadlines.filing_type}}'
priority: High
- name: notify-team
type: call
call: slack-tax.post-message
with:
channel: tax-compliance
text: 'Upcoming tax deadline: {{jurisdiction}} - {{get-deadlines.filing_type}} due {{get-deadlines.next_deadline}}. Jira: {{create-tasks.key}}'
consumes:
- type: http
namespace: btax-deadlines
baseUri: https://api.tax.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.btax_token
resources:
- name: deadlines
path: /deadlines
operations:
- name: get-upcoming
method: GET
- type: http
namespace: jira-tax
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-tax
baseUri: 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 budget and actuals data by cost center, computes variance, and publishes a formatted Power BI dataset and Slack summary for finance leadership.
naftiko: '0.5'
info:
label: SAP Budget vs Actuals Variance Report
description: Queries SAP for budget and actuals data by cost center, computes variance, and publishes a formatted Power BI dataset and Slack summary for finance leadership.
tags:
- finance
- erp
- sap
- reporting
- budgeting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: publish-budget-variance
description: Given a SAP controlling area and fiscal period, retrieve budget and actuals by cost center, calculate variance percentages, and post a summary to the finance Slack channel. Use monthly for budget review cycles.
inputParameters:
- name: controlling_area
in: body
type: string
description: The SAP controlling area code, e.g. '1000'.
- name: fiscal_period
in: body
type: string
description: The fiscal period in YYYYMM format, e.g. '202603'.
steps:
- name: get-actuals
type: call
call: sap.get-cost-center-actuals
with:
controlling_area: '{{controlling_area}}'
period: '{{fiscal_period}}'
- name: post-finance-summary
type: call
call: slack.post-message
with:
channel: finance-leadership
text: 'Budget variance report for period {{fiscal_period}}: Total actuals {{get-actuals.total_actual}}, budget {{get-actuals.total_budget}}.'
consumes:
- type: http
namespace: sap
baseUri: https://bloomberg-s4.sap.com/sap/opu/odata/sap/FCO_PI_CONTROLLING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-center-actuals
path: /CostCenterActualsSet
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors Tableau dashboard last refresh times, and when data is stale beyond threshold, creates a Jira ticket and notifies the dashboard owner on Slack.
naftiko: '0.5'
info:
label: Tableau Dashboard Stale Data Alert
description: Monitors Tableau dashboard last refresh times, and when data is stale beyond threshold, creates a Jira ticket and notifies the dashboard owner on Slack.
tags:
- analytics
- tableau
- jira
- slack
- data-freshness
capability:
exposes:
- type: mcp
namespace: dashboard-ops
port: 8080
tools:
- name: alert-stale-dashboard
description: Given a Tableau workbook ID with stale data, create a Jira ticket and notify the owner via Slack.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID.
- name: last_refresh
in: body
type: string
description: The last refresh timestamp.
- name: owner_email
in: body
type: string
description: Email of the dashboard owner.
steps:
- name: create-ticket
type: call
call: jira-dash.create-issue
with:
project: BI
summary: 'Stale dashboard data: workbook {{workbook_id}}'
description: 'Last refresh: {{last_refresh}}. Owner: {{owner_email}}.'
priority: Medium
- name: notify-owner
type: call
call: slack-dash.post-message
with:
channel: bi-alerts
text: 'Dashboard {{workbook_id}} has stale data (last refresh: {{last_refresh}}). Jira: {{create-ticket.key}}. Please investigate.'
consumes:
- type: http
namespace: jira-dash
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-dash
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors Snowflake for long-running queries exceeding execution thresholds and alerts the data platform team in Slack with query details and user attribution.
naftiko: '0.5'
info:
label: Snowflake Query Performance Monitor
description: Monitors Snowflake for long-running queries exceeding execution thresholds and alerts the data platform team in Slack with query details and user attribution.
tags:
- data
- analytics
- snowflake
- slack
- monitoring
- performance
capability:
exposes:
- type: mcp
namespace: data-monitoring
port: 8080
tools:
- name: monitor-query-performance
description: Query Snowflake's QUERY_HISTORY view for executions exceeding a given duration threshold in the past hour, and post a Slack alert listing offending queries and users. Use for scheduled data platform health monitoring.
inputParameters:
- name: threshold_seconds
in: body
type: integer
description: The execution time threshold in seconds; queries exceeding this will be reported.
steps:
- name: get-slow-queries
type: call
call: snowflake.query-history
with:
threshold: '{{threshold_seconds}}'
- name: post-alert
type: call
call: slack.post-message
with:
channel: data-platform-ops
text: 'Slow query alert: {{get-slow-queries.count}} queries exceeded {{threshold_seconds}}s in the last hour.'
consumes:
- type: http
namespace: snowflake
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: query-history
path: /databases/snowflake/schemas/account_usage/tables/query_history/rows
operations:
- name: query-history
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
When a hiring manager approves a new headcount request in Workday, creates a linked Greenhouse job requisition and posts it to LinkedIn.
naftiko: '0.5'
info:
label: Open Role Requisition Creator
description: When a hiring manager approves a new headcount request in Workday, creates a linked Greenhouse job requisition and posts it to LinkedIn.
tags:
- hr
- recruiting
- workday
- greenhouse
- linkedin
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: create-requisition
description: Given a department, role title, level, and hiring manager Workday ID, create a Greenhouse job requisition and post the opening to LinkedIn. Invoke when a headcount request has been approved.
inputParameters:
- name: role_title
in: body
type: string
description: The job title for the open role, e.g. 'Senior Software Engineer'.
- name: department
in: body
type: string
description: The Bloomberg department code, e.g. 'BTECH-CORE'.
- name: hiring_manager_id
in: body
type: string
description: The Workday worker ID of the hiring manager.
steps:
- name: get-manager
type: call
call: workday.get-worker
with:
worker_id: '{{hiring_manager_id}}'
- name: create-job
type: call
call: greenhouse.create-job
with:
title: '{{role_title}}'
department: '{{department}}'
hiring_manager_name: '{{get-manager.full_name}}'
- name: post-to-linkedin
type: call
call: linkedin.create-job-posting
with:
job_id: '{{create-job.id}}'
title: '{{role_title}}'
company_id: $secrets.bloomberg_linkedin_company_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: /bloomberg/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: greenhouse
baseUri: https://harvest.greenhouse.io/v1
authentication:
type: basic
username: $secrets.greenhouse_api_key
password: ''
resources:
- name: jobs
path: /jobs
operations:
- name: create-job
method: POST
- 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
Returns current headcount by department and cost center from Workday, formatted for finance reporting and headcount planning.
naftiko: '0.5'
info:
label: Payroll Headcount Snapshot
description: Returns current headcount by department and cost center from Workday, formatted for finance reporting and headcount planning.
tags:
- hr
- finance
- workday
- reporting
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns a list of all active employees grouped by department and cost center from Workday. Use for headcount planning, finance reporting, and cost center analysis.
call: workday.list-workers
outputParameters:
- name: employees
type: array
mapping: $.data[*]
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /bloomberg/workers
operations:
- name: list-workers
method: GET
Monitors Bloomberg Instant Messaging for compliance keywords, flags messages for review, creates Jira compliance tickets, and alerts the compliance team on Slack.
naftiko: '0.5'
info:
label: Bloomberg Instant Messaging Compliance Monitor
description: Monitors Bloomberg Instant Messaging for compliance keywords, flags messages for review, creates Jira compliance tickets, and alerts the compliance team on Slack.
tags:
- compliance
- bloomberg-instant-messaging
- jira
- slack
- surveillance
capability:
exposes:
- type: mcp
namespace: msg-compliance
port: 8080
tools:
- name: flag-compliance-message
description: Given a flagged Bloomberg IB message, create a Jira compliance ticket and alert the compliance team.
inputParameters:
- name: message_id
in: body
type: string
description: The Bloomberg IB message ID.
- name: keyword_matched
in: body
type: string
description: The compliance keyword that was matched.
- name: sender
in: body
type: string
description: The message sender identifier.
steps:
- name: create-compliance-ticket
type: call
call: jira-comp.create-issue
with:
project: COMPLIANCE
summary: 'IB message flagged: keyword ''{{keyword_matched}}'' from {{sender}}'
description: 'Message ID: {{message_id}}. Keyword: {{keyword_matched}}. Sender: {{sender}}'
priority: High
- name: alert-compliance
type: call
call: slack-comp.post-message
with:
channel: compliance-surveillance
text: 'Flagged IB message: {{sender}} triggered keyword ''{{keyword_matched}}''. Jira: {{create-compliance-ticket.key}}'
consumes:
- type: http
namespace: jira-comp
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-comp
baseUri: 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 current SLO compliance metrics from Datadog for all production services and publishes a compliance summary to the engineering Confluence space.
naftiko: '0.5'
info:
label: Datadog SLO Compliance Report
description: Fetches current SLO compliance metrics from Datadog for all production services and publishes a compliance summary to the engineering Confluence space.
tags:
- observability
- datadog
- confluence
- reporting
- slo
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: Fetch all SLO compliance metrics from Datadog for production services and publish a structured compliance report to Confluence. Use weekly before reliability review meetings.
inputParameters:
- name: confluence_page_id
in: body
type: string
description: The Confluence page ID where the SLO report will be updated.
steps:
- name: get-slos
type: call
call: datadog.list-slos
with:
tags: env:production
- name: update-report
type: call
call: confluence.update-page
with:
page_id: '{{confluence_page_id}}'
content: 'SLO Report: {{get-slos.count}} SLOs in scope.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slos
path: /slo
operations:
- name: list-slos
method: GET
- type: http
namespace: confluence
baseUri: https://bloomberg.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
Analyzes Bloomberg Terminal usage from enterprise data, identifies underutilized licenses, generates a reallocation recommendation via Anthropic, and notifies stakeholders on Slack.
naftiko: '0.5'
info:
label: Bloomberg Terminal License Optimization
description: Analyzes Bloomberg Terminal usage from enterprise data, identifies underutilized licenses, generates a reallocation recommendation via Anthropic, and notifies stakeholders on Slack.
tags:
- licensing
- bloomberg-terminal
- bloomberg-enterprise
- anthropic
- cost-management
capability:
exposes:
- type: mcp
namespace: license-ops
port: 8080
tools:
- name: optimize-terminal-licenses
description: Analyze Bloomberg Terminal usage, identify underutilized licenses, and recommend reallocations.
inputParameters:
- name: usage_period
in: body
type: string
description: Usage period to analyze, e.g. 'Q1-2026'.
steps:
- name: get-usage
type: call
call: bbg-enterprise.get-terminal-usage
with:
period: '{{usage_period}}'
- name: analyze-usage
type: call
call: anthropic-license.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a Bloomberg Terminal license optimization specialist. Identify underutilized licenses and recommend reallocations.
content: 'Analyze this Terminal usage data and recommend optimizations: {{get-usage.data}}'
- name: notify-stakeholders
type: call
call: slack-license.post-message
with:
channel: vendor-management
text: 'Bloomberg Terminal license review for {{usage_period}} complete. Recommendations: {{analyze-usage.content}}'
consumes:
- type: http
namespace: bbg-enterprise
baseUri: https://api.bloomberg.com/enterprise/v1
authentication:
type: apikey
key: X-Bloomberg-Key
value: $secrets.bloomberg_enterprise_key
placement: header
resources:
- name: usage
path: /terminal/usage
operations:
- name: get-terminal-usage
method: GET
- type: http
namespace: anthropic-license
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: slack-license
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Aggregates customer feedback from Salesforce cases, analyzes themes and sentiment via Anthropic Claude, and publishes a weekly insights report to Confluence.
naftiko: '0.5'
info:
label: Customer Feedback Analysis Pipeline
description: Aggregates customer feedback from Salesforce cases, analyzes themes and sentiment via Anthropic Claude, and publishes a weekly insights report to Confluence.
tags:
- customer-experience
- salesforce
- anthropic
- confluence
- analytics
capability:
exposes:
- type: mcp
namespace: feedback-ops
port: 8080
tools:
- name: analyze-customer-feedback
description: Aggregate Salesforce cases, analyze feedback sentiment and themes via Anthropic, and publish insights to Confluence.
inputParameters:
- name: date_range
in: body
type: string
description: The date range for feedback analysis, e.g. 'last_7_days'.
steps:
- name: get-cases
type: call
call: sf-feedback.query-cases
with:
query: SELECT Subject, Description, CreatedDate FROM Case WHERE CreatedDate = LAST_N_DAYS:7
- name: analyze-themes
type: call
call: anthropic-feedback.create-message
with:
model: claude-opus-4-5
max_tokens: 4096
system: You are a customer experience analyst. Identify themes, sentiment trends, and actionable insights from customer feedback.
content: 'Analyze these customer cases from the past week: {{get-cases.records}}'
- name: publish-report
type: call
call: confluence-feedback.create-page
with:
space: CX
title: Weekly Customer Feedback Report - {{date_range}}
body: '{{analyze-themes.content}}'
consumes:
- type: http
namespace: sf-feedback
baseUri: https://bloomberg.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: anthropic-feedback
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-feedback
baseUri: https://bloomberg.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 new compliance training course is published in Workday Learning, enrolls all eligible employees and sends reminders via Slack and Microsoft Teams.
naftiko: '0.5'
info:
label: Compliance Training Enrollment Notifier
description: When a new compliance training course is published in Workday Learning, enrolls all eligible employees and sends reminders via Slack and Microsoft Teams.
tags:
- compliance
- workday
- slack
- microsoft-teams
- training
capability:
exposes:
- type: mcp
namespace: compliance-ops
port: 8080
tools:
- name: notify-compliance-training
description: Given a Workday Learning course ID, enroll eligible employees and send notifications via Slack and Teams.
inputParameters:
- name: course_id
in: body
type: string
description: The Workday Learning course ID.
- name: department
in: body
type: string
description: Target department for enrollment.
steps:
- name: get-eligible
type: call
call: workday-learn.get-eligible-workers
with:
course_id: '{{course_id}}'
department: '{{department}}'
- name: notify-slack
type: call
call: slack-compliance.post-message
with:
channel: compliance-training
text: 'New mandatory training: Course {{course_id}} assigned to {{department}}. {{get-eligible.count}} employees enrolled. Deadline: 30 days.'
- name: notify-teams
type: call
call: teams-compliance.post-channel-message
with:
channel_id: compliance-announcements
text: 'Compliance Training Alert: Course {{course_id}} is now available for {{department}}. Please complete within 30 days.'
consumes:
- type: http
namespace: workday-learn
baseUri: https://wd5-services1.myworkday.com/ccx/api/v1/bloomberg
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: courses
path: /learning/courses/{{course_id}}/eligible
inputParameters:
- name: course_id
in: path
operations:
- name: get-eligible-workers
method: GET
- type: http
namespace: slack-compliance
baseUri: 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: teams-compliance
baseUri: https://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: post-channel-message
method: POST
Fetches all users assigned to a specific Okta application and generates a Confluence access review report for compliance auditing.
naftiko: '0.5'
info:
label: Okta User Access Review
description: Fetches all users assigned to a specific Okta application and generates a Confluence access review report for compliance auditing.
tags:
- identity
- security
- okta
- confluence
- compliance
- access-management
capability:
exposes:
- type: mcp
namespace: identity-compliance
port: 8080
tools:
- name: run-access-review
description: Given an Okta application ID and Confluence page ID, fetch all users assigned to the application and update the Confluence access review page with current membership. Use for quarterly access reviews and compliance audits.
inputParameters:
- name: okta_app_id
in: body
type: string
description: The Okta application ID to review, e.g. '0oa1b2c3d4e5f6g7h8i9'.
- name: confluence_page_id
in: body
type: string
description: The Confluence page ID where the access review report will be published.
steps:
- name: list-app-users
type: call
call: okta.list-app-users
with:
app_id: '{{okta_app_id}}'
- name: update-report
type: call
call: confluence.update-page
with:
page_id: '{{confluence_page_id}}'
content: 'Access review for app {{okta_app_id}}: {{list-app-users.count}} users as of today.'
consumes:
- type: http
namespace: okta
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: app-users
path: /apps/{{app_id}}/users
inputParameters:
- name: app_id
in: path
operations:
- name: list-app-users
method: GET
- type: http
namespace: confluence
baseUri: https://bloomberg.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
Retrieves the latest Bloomberg Economics forecast data, generates an analyst brief via Anthropic Claude, and distributes via Slack and Confluence to the research team.
naftiko: '0.5'
info:
label: Bloomberg Economics Forecast Distributor
description: Retrieves the latest Bloomberg Economics forecast data, generates an analyst brief via Anthropic Claude, and distributes via Slack and Confluence to the research team.
tags:
- economics
- bloomberg-economics
- anthropic
- slack
- confluence
capability:
exposes:
- type: mcp
namespace: econ-ops
port: 8080
tools:
- name: distribute-economics-forecast
description: Retrieve Bloomberg Economics forecasts, generate an analyst brief, and distribute to the research team.
inputParameters:
- name: indicator
in: body
type: string
description: The economic indicator, e.g. 'GDP', 'CPI', 'unemployment'.
- name: region
in: body
type: string
description: The region, e.g. 'US', 'EU', 'Global'.
steps:
- name: get-forecast
type: call
call: bbg-econ.get-forecast
with:
indicator: '{{indicator}}'
region: '{{region}}'
- name: generate-brief
type: call
call: anthropic-econ.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a macroeconomist. Write a concise analyst brief on the latest economic forecast data.
content: 'Generate an analyst brief for {{region}} {{indicator}} forecast: {{get-forecast.data}}'
- name: distribute
type: call
call: slack-econ.post-message
with:
channel: economics-research
text: 'Economics Forecast Update: {{region}} {{indicator}}. {{generate-brief.content}}'
consumes:
- type: http
namespace: bbg-econ
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/data
authentication:
type: bearer
token: $secrets.bloomberg_data_token
resources:
- name: forecasts
path: /economics/forecasts
operations:
- name: get-forecast
method: GET
- type: http
namespace: anthropic-econ
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: slack-econ
baseUri: 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 Grafana alert fires, looks up the associated runbook in Confluence, posts the relevant remediation steps to Slack, and creates a ServiceNow incident.
naftiko: '0.5'
info:
label: Grafana Alert to Runbook Executor
description: When a Grafana alert fires, looks up the associated runbook in Confluence, posts the relevant remediation steps to Slack, and creates a ServiceNow incident.
tags:
- observability
- grafana
- confluence
- slack
- servicenow
capability:
exposes:
- type: mcp
namespace: runbook-ops
port: 8080
tools:
- name: execute-runbook-for-alert
description: Given a Grafana alert, find the Confluence runbook, post remediation steps to Slack, and create a ServiceNow incident.
inputParameters:
- name: alert_name
in: body
type: string
description: The Grafana alert rule name.
- name: runbook_page_id
in: body
type: string
description: The Confluence runbook page ID.
steps:
- name: get-runbook
type: call
call: confluence-rb.get-page
with:
page_id: '{{runbook_page_id}}'
- name: post-remediation
type: call
call: slack-rb.post-message
with:
channel: sre-incidents
text: 'Alert: {{alert_name}}. Runbook: {{get-runbook.title}}. Steps: {{get-runbook.body}}'
- name: create-incident
type: call
call: snow-rb.create-incident
with:
short_description: 'Grafana alert: {{alert_name}}'
description: 'Runbook: {{get-runbook.title}}. Auto-posted to #sre-incidents.'
consumes:
- type: http
namespace: confluence-rb
baseUri: https://bloomberg.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: slack-rb
baseUri: 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: snow-rb
baseUri: https://bloomberg.service-now.com/api/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 credit usage, identifies top-spending warehouses, generates a cost optimization report via Anthropic, and publishes to Confluence.
naftiko: '0.5'
info:
label: Snowflake Cost Optimization Report
description: Queries Snowflake credit usage, identifies top-spending warehouses, generates a cost optimization report via Anthropic, and publishes to Confluence.
tags:
- cost-management
- snowflake
- anthropic
- confluence
- analytics
capability:
exposes:
- type: mcp
namespace: cost-ops
port: 8080
tools:
- name: generate-cost-report
description: Query Snowflake credit usage, generate optimization recommendations via Anthropic, and publish to Confluence.
inputParameters:
- name: time_period
in: body
type: string
description: The time period to analyze, e.g. 'last_30_days'.
steps:
- name: query-usage
type: call
call: snowflake-cost.execute-query
with:
query: SELECT warehouse_name, SUM(credits_used) FROM snowflake.account_usage.warehouse_metering_history WHERE start_time > DATEADD(day, -30, CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC
- name: generate-recommendations
type: call
call: anthropic-cost.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a cloud cost optimization expert. Analyze Snowflake usage and provide actionable recommendations.
content: 'Analyze this Snowflake credit usage and suggest optimizations: {{query-usage.data}}'
- name: publish-report
type: call
call: confluence-cost.create-page
with:
space: FINOPS
title: Snowflake Cost Optimization Report - {{time_period}}
body: '{{generate-recommendations.content}}'
consumes:
- type: http
namespace: snowflake-cost
baseUri: https://bloomberg.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: anthropic-cost
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-cost
baseUri: https://bloomberg.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 Terraform detects infrastructure drift, creates a Jira remediation ticket, posts the drift diff to Slack, and opens a ServiceNow change request for re-alignment.
naftiko: '0.5'
info:
label: Infrastructure Drift Detection Response
description: When Terraform detects infrastructure drift, creates a Jira remediation ticket, posts the drift diff to Slack, and opens a ServiceNow change request for re-alignment.
tags:
- infrastructure
- terraform
- jira
- slack
- servicenow
capability:
exposes:
- type: mcp
namespace: drift-ops
port: 8080
tools:
- name: handle-drift-detection
description: Given a Terraform workspace with drift, create a Jira ticket, notify Slack, and open a ServiceNow change request.
inputParameters:
- name: workspace_name
in: body
type: string
description: The Terraform workspace with detected drift.
- name: drift_summary
in: body
type: string
description: Summary of the infrastructure drift detected.
steps:
- name: create-ticket
type: call
call: jira-infra.create-issue
with:
project: INFRA
summary: 'Infrastructure drift: {{workspace_name}}'
description: '{{drift_summary}}'
priority: High
- name: notify-team
type: call
call: slack-infra.post-message
with:
channel: infrastructure-alerts
text: 'Drift detected in {{workspace_name}}: {{drift_summary}}. Jira: {{create-ticket.key}}'
- name: create-change
type: call
call: snow-infra.create-change
with:
short_description: 'Remediate drift: {{workspace_name}}'
description: 'Drift: {{drift_summary}}. Jira: {{create-ticket.key}}'
type: standard
consumes:
- type: http
namespace: jira-infra
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-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
- type: http
namespace: snow-infra
baseUri: https://bloomberg.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
When Datadog detects an elevated SLO burn rate, creates a PagerDuty incident, opens a Jira ticket with burn rate context, and posts to the SRE Slack channel.
naftiko: '0.5'
info:
label: Datadog SLO Burn Rate Alert Handler
description: When Datadog detects an elevated SLO burn rate, creates a PagerDuty incident, opens a Jira ticket with burn rate context, and posts to the SRE Slack channel.
tags:
- reliability
- datadog
- pagerduty
- jira
- slack
capability:
exposes:
- type: mcp
namespace: slo-ops
port: 8080
tools:
- name: handle-slo-burn-rate
description: Given a Datadog SLO burn rate alert, create a PagerDuty incident, Jira ticket, and Slack notification.
inputParameters:
- name: slo_name
in: body
type: string
description: The Datadog SLO name.
- name: burn_rate
in: body
type: string
description: The current burn rate multiplier.
- name: remaining_budget
in: body
type: string
description: The remaining error budget percentage.
steps:
- name: page-sre
type: call
call: pd-slo.create-incident
with:
title: 'SLO burn rate alert: {{slo_name}} at {{burn_rate}}x'
service_id: $secrets.pagerduty_sre_service
urgency: high
- name: create-ticket
type: call
call: jira-slo.create-issue
with:
project: SRE
summary: 'SLO burn rate: {{slo_name}} at {{burn_rate}}x ({{remaining_budget}}% budget remaining)'
priority: Critical
- name: alert-sre
type: call
call: slack-slo.post-message
with:
channel: sre-alerts
text: 'SLO BURN RATE: {{slo_name}} at {{burn_rate}}x. Budget remaining: {{remaining_budget}}%. PD: {{page-sre.incident_url}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: pd-slo
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: jira-slo
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-slo
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new Salesforce lead is created, enriches the record with firmographic data from ZoomInfo and updates the lead score, then routes to the correct sales development representative.
naftiko: '0.5'
info:
label: Salesforce New Lead Enrichment
description: When a new Salesforce lead is created, enriches the record with firmographic data from ZoomInfo and updates the lead score, then routes to the correct sales development representative.
tags:
- crm
- sales
- salesforce
- zoominfo
- lead-management
capability:
exposes:
- type: mcp
namespace: lead-enrichment
port: 8080
tools:
- name: enrich-new-lead
description: Given a Salesforce lead ID, look up the company and contact in ZoomInfo to get firmographic data, update the Salesforce lead with enriched fields, and assign to the appropriate SDR. Use when a new inbound lead is created.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce Lead 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:
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://bloomberg.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-update
baseUri: https://bloomberg.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: lead-update
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
On a new pull request in GitHub, triggers a Veracode static analysis scan and posts results back as a PR comment; blocks merge if critical vulnerabilities are found.
naftiko: '0.5'
info:
label: GitHub Pull Request Security Scan Gate
description: On a new pull request in GitHub, triggers a Veracode static analysis scan and posts results back as a PR comment; blocks merge if critical vulnerabilities are found.
tags:
- devops
- security
- github
- veracode
- code-quality
capability:
exposes:
- type: mcp
namespace: security-scanning
port: 8080
tools:
- name: scan-pull-request
description: Given a GitHub repository and pull request number, trigger a Veracode SAST scan and post the findings as a PR review comment. Use when a PR targets main or release branches.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository full name, e.g. 'bloomberg/bde'.
- name: pr_number
in: body
type: integer
description: The GitHub pull request number.
- name: commit_sha
in: body
type: string
description: The HEAD commit SHA of the pull request.
steps:
- name: trigger-scan
type: call
call: veracode.create-scan
with:
repo: '{{repo}}'
ref: '{{commit_sha}}'
- name: post-pr-comment
type: call
call: github.create-pr-review
with:
repo: '{{repo}}'
pull_number: '{{pr_number}}'
commit_id: '{{commit_sha}}'
body: 'Veracode scan {{trigger-scan.scan_id}} complete. Findings: {{trigger-scan.finding_count}}. Status: {{trigger-scan.policy_compliance_status}}'
consumes:
- type: http
namespace: veracode
baseUri: https://analysiscenter.veracode.com/api/5.0
authentication:
type: basic
username: $secrets.veracode_api_id
password: $secrets.veracode_api_key
resources:
- name: scans
path: /createbuild.do
operations:
- name: create-scan
method: POST
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pull-request-reviews
path: /repos/{{repo}}/pulls/{{pull_number}}/reviews
inputParameters:
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: create-pr-review
method: POST
Fetches key account health metrics from Salesforce CRM for a given client, enriches with recent news from Bloomberg Terminal API, and delivers a briefing to the account manager via Slack.
naftiko: '0.5'
info:
label: Salesforce Account Health Digest
description: Fetches key account health metrics from Salesforce CRM for a given client, enriches with recent news from Bloomberg Terminal API, and delivers a briefing to the account manager via Slack.
tags:
- crm
- sales
- salesforce
- slack
- reporting
- account-management
capability:
exposes:
- type: mcp
namespace: crm-reporting
port: 8080
tools:
- name: digest-account-health
description: Given a Salesforce account ID, retrieve account health data including open opportunities and recent activity, then post an account briefing to the responsible account manager's Slack DM. Use before client meetings or for weekly account reviews.
inputParameters:
- name: salesforce_account_id
in: body
type: string
description: The Salesforce Account ID (18-character), e.g. '0010000000ABcDEFGH'.
- name: account_manager_slack_id
in: body
type: string
description: The Slack user ID of the account manager to receive the briefing.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{salesforce_account_id}}'
- name: get-opportunities
type: call
call: salesforce-opps.list-opportunities
with:
account_id: '{{salesforce_account_id}}'
- name: post-briefing
type: call
call: slack.post-dm
with:
user_id: '{{account_manager_slack_id}}'
text: 'Account brief for {{get-account.Name}}: {{get-opportunities.count}} open opportunities totaling ${{get-opportunities.total_amount}}. Last activity: {{get-account.LastActivityDate}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://bloomberg.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-opps
baseUri: https://bloomberg.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: list-opportunities
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: dm-messages
path: /chat.postMessage
operations:
- name: post-dm
method: POST
Retrieves the current active Terminal session count and license utilization from Bloomberg Enterprise for capacity reporting.
naftiko: '0.5'
info:
label: Bloomberg Terminal Session Lookup
description: Retrieves the current active Terminal session count and license utilization from Bloomberg Enterprise for capacity reporting.
tags:
- bloomberg-terminal
- licensing
- bloomberg-enterprise
capability:
exposes:
- type: mcp
namespace: terminal-ops
port: 8080
tools:
- name: get-terminal-sessions
description: Given a date range, return active Bloomberg Terminal session counts and license usage. Use for capacity planning and compliance audits.
inputParameters:
- name: date_from
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: date_to
in: body
type: string
description: End date in YYYY-MM-DD format.
call: bloomberg-terminal.get-sessions
with:
date_from: '{{date_from}}'
date_to: '{{date_to}}'
outputParameters:
- name: active_sessions
type: integer
mapping: $.total_active
- name: license_utilization
type: string
mapping: $.utilization_pct
consumes:
- type: http
namespace: bloomberg-terminal
baseUri: https://api.bloomberg.com/enterprise/v1
authentication:
type: apikey
key: X-Bloomberg-Key
value: $secrets.bloomberg_enterprise_key
placement: header
resources:
- name: sessions
path: /terminal/sessions
operations:
- name: get-sessions
method: GET
Rotates Bloomberg API keys in HashiCorp Vault, updates the key in the Bloomberg API gateway, verifies connectivity, and notifies the platform team on Slack.
naftiko: '0.5'
info:
label: Bloomberg API Key Rotation Orchestrator
description: Rotates Bloomberg API keys in HashiCorp Vault, updates the key in the Bloomberg API gateway, verifies connectivity, and notifies the platform team on Slack.
tags:
- security
- hashicorp-vault
- bloomberg-apis
- slack
- key-management
capability:
exposes:
- type: mcp
namespace: key-rotation
port: 8080
tools:
- name: rotate-api-key
description: Given a Bloomberg API key name, rotate it in Vault, update the gateway, and notify the platform team.
inputParameters:
- name: key_name
in: body
type: string
description: The Bloomberg API key identifier to rotate.
- name: environment
in: body
type: string
description: 'Target environment: production, staging, or development.'
steps:
- name: rotate-vault-secret
type: call
call: vault-rotate.update-secret
with:
path: secret/bloomberg/api-keys/{{key_name}}
environment: '{{environment}}'
- name: update-gateway
type: call
call: bbg-gateway.update-key
with:
key_name: '{{key_name}}'
new_key: '{{rotate-vault-secret.new_key}}'
- name: notify-platform
type: call
call: slack-platform.post-message
with:
channel: platform-engineering
text: 'API key rotated: {{key_name}} in {{environment}}. Vault updated. Gateway verified.'
consumes:
- type: http
namespace: vault-rotate
baseUri: https://vault.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.vault_token
resources:
- name: secrets
path: /{{path}}
inputParameters:
- name: path
in: path
operations:
- name: update-secret
method: PUT
- type: http
namespace: bbg-gateway
baseUri: https://api.bloomberg.com/gateway/v1
authentication:
type: bearer
token: $secrets.bloomberg_gateway_token
resources:
- name: keys
path: /keys/{{key_name}}
inputParameters:
- name: key_name
in: path
operations:
- name: update-key
method: PUT
- 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
When a GitHub Actions workflow fails, captures the failure log, creates a Jira bug ticket, and notifies the responsible team on Slack.
naftiko: '0.5'
info:
label: GitHub Actions Workflow Failure Response
description: When a GitHub Actions workflow fails, captures the failure log, creates a Jira bug ticket, and notifies the responsible team on Slack.
tags:
- cicd
- github
- jira
- slack
- automation
capability:
exposes:
- type: mcp
namespace: gha-ops
port: 8080
tools:
- name: handle-workflow-failure
description: Given a failed GitHub Actions run, capture error details, create a Jira ticket, and notify Slack.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository name.
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
- name: workflow_name
in: body
type: string
description: The workflow name.
steps:
- name: get-run
type: call
call: gh-actions.get-workflow-run
with:
repo: '{{repo}}'
run_id: '{{run_id}}'
- name: create-ticket
type: call
call: jira-gha.create-issue
with:
project: CICD
summary: 'GHA failure: {{workflow_name}} in {{repo}}'
description: 'Run: {{run_id}}. Status: {{get-run.conclusion}}. URL: {{get-run.html_url}}'
priority: High
- name: notify-team
type: call
call: slack-gha.post-message
with:
channel: cicd-alerts
text: 'GHA failure: {{workflow_name}} in {{repo}}. Run: {{get-run.html_url}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: gh-actions
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: 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-gha
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-gha
baseUri: 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 Bloomberg Enterprise Data feed by creating the Snowflake target tables, configuring the data pipeline in Databricks, and notifying stakeholders on Slack.
naftiko: '0.5'
info:
label: Bloomberg Enterprise Data Feed Onboarding
description: Provisions a new Bloomberg Enterprise Data feed by creating the Snowflake target tables, configuring the data pipeline in Databricks, and notifying stakeholders on Slack.
tags:
- data-engineering
- bloomberg-enterprise-data
- snowflake
- databricks
- slack
capability:
exposes:
- type: mcp
namespace: feed-onboard
port: 8080
tools:
- name: onboard-data-feed
description: Given a new Bloomberg Enterprise Data feed name, create Snowflake tables, configure Databricks pipeline, and notify stakeholders.
inputParameters:
- name: feed_name
in: body
type: string
description: The Bloomberg Enterprise Data feed name.
- name: target_schema
in: body
type: string
description: The target Snowflake schema.
steps:
- name: create-tables
type: call
call: snowflake-onboard.execute-query
with:
query: CREATE TABLE IF NOT EXISTS {{target_schema}}.{{feed_name}} (data VARIANT, loaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP())
- name: configure-pipeline
type: call
call: dbx-onboard.create-job
with:
name: ingest-{{feed_name}}
target_table: '{{target_schema}}.{{feed_name}}'
- name: notify-team
type: call
call: slack-onboard.post-message
with:
channel: data-engineering
text: 'New Bloomberg data feed onboarded: {{feed_name}}. Snowflake table: {{target_schema}}.{{feed_name}}. Databricks job: ingest-{{feed_name}}.'
consumes:
- type: http
namespace: snowflake-onboard
baseUri: https://bloomberg.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: dbx-onboard
baseUri: https://bloomberg.cloud.databricks.com/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/create
operations:
- name: create-job
method: POST
- type: http
namespace: slack-onboard
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors Bloomberg Government for regulatory updates, summarizes changes via Anthropic Claude, creates Jira compliance tasks, and notifies the legal team on Slack.
naftiko: '0.5'
info:
label: Bloomberg Government Regulatory Update Tracker
description: Monitors Bloomberg Government for regulatory updates, summarizes changes via Anthropic Claude, creates Jira compliance tasks, and notifies the legal team on Slack.
tags:
- regulatory
- bloomberg-government-bgov
- anthropic
- jira
- slack
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: track-regulatory-update
description: Given a Bloomberg Government regulatory update, summarize via Anthropic, create Jira tasks, and notify the legal team.
inputParameters:
- name: regulation_id
in: body
type: string
description: The Bloomberg Government regulation identifier.
- name: topic
in: body
type: string
description: The regulatory topic area.
steps:
- name: get-update
type: call
call: bgov-reg.get-regulation
with:
regulation_id: '{{regulation_id}}'
- name: summarize
type: call
call: anthropic-reg.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a regulatory analyst. Summarize the regulation and identify action items for compliance.
content: 'Summarize this regulatory update and list required actions: {{get-update.content}}'
- name: create-task
type: call
call: jira-reg.create-issue
with:
project: COMPLIANCE
summary: 'Regulatory update: {{topic}} ({{regulation_id}})'
description: '{{summarize.content}}'
priority: High
- name: notify-legal
type: call
call: slack-reg.post-message
with:
channel: legal-regulatory
text: 'Regulatory update: {{topic}}. Summary: {{summarize.content}}. Jira: {{create-task.key}}'
consumes:
- type: http
namespace: bgov-reg
baseUri: https://api.bgov.com/v1
authentication:
type: bearer
token: $secrets.bgov_token
resources:
- name: regulations
path: /regulations/{{regulation_id}}
inputParameters:
- name: regulation_id
in: path
operations:
- name: get-regulation
method: GET
- type: http
namespace: anthropic-reg
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: jira-reg
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-reg
baseUri: 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 Tableau workbook refresh and notifies the business stakeholder via Teams once the data source is updated and the dashboard is ready.
naftiko: '0.5'
info:
label: Tableau Dashboard Refresh Trigger
description: Triggers a Tableau workbook refresh and notifies the business stakeholder via Teams once the data source is updated and the dashboard is ready.
tags:
- data
- analytics
- tableau
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: analytics-reporting
port: 8080
tools:
- name: refresh-dashboard
description: Given a Tableau workbook ID and datasource ID, trigger a full data refresh and send a Teams notification to the business owner when complete. Use when underlying data has been updated and stakeholders need fresh insights.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook LUID to refresh.
- name: datasource_id
in: body
type: string
description: The Tableau datasource LUID backing the workbook.
- name: owner_email
in: body
type: string
description: The email of the business owner to notify on completion.
steps:
- name: refresh-datasource
type: call
call: tableau.refresh-datasource
with:
datasource_id: '{{datasource_id}}'
- name: notify-owner
type: call
call: msteams.send-message
with:
recipient_upn: '{{owner_email}}'
text: Your Tableau dashboard (workbook {{workbook_id}}) has been refreshed with the latest data.
consumes:
- type: http
namespace: tableau
baseUri: https://10ax.online.tableau.com/api/3.21
authentication:
type: apikey
key: X-Tableau-Auth
value: $secrets.tableau_token
placement: header
resources:
- name: datasource-refresh
path: /sites/{{site_id}}/datasources/{{datasource_id}}/refresh
inputParameters:
- name: datasource_id
in: path
- name: site_id
in: path
operations:
- name: refresh-datasource
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Gathers completion metrics for all stories in a Jira epic, generates a progress summary via Anthropic, and posts to the project's Slack channel.
naftiko: '0.5'
info:
label: Jira Epic Completion Status Reporter
description: Gathers completion metrics for all stories in a Jira epic, generates a progress summary via Anthropic, and posts to the project's Slack channel.
tags:
- project-management
- jira
- anthropic
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: project-reporting
port: 8080
tools:
- name: report-epic-status
description: Given a Jira epic key, gather story completion data, generate a progress summary, and post to Slack.
inputParameters:
- name: epic_key
in: body
type: string
description: The Jira epic key, e.g. 'PROJ-100'.
- name: slack_channel
in: body
type: string
description: The Slack channel to post the report.
steps:
- name: get-epic-stories
type: call
call: jira-epic.search-issues
with:
jql: '''Epic Link'' = {{epic_key}}'
- name: generate-report
type: call
call: anthropic-epic.create-message
with:
model: claude-opus-4-5
max_tokens: 1024
system: You are a project manager. Summarize epic progress with completion percentages and blockers.
content: 'Summarize progress for epic {{epic_key}}: {{get-epic-stories.issues}}'
- name: post-report
type: call
call: slack-epic.post-message
with:
channel: '{{slack_channel}}'
text: 'Epic Status: {{epic_key}} - {{generate-report.content}}'
consumes:
- type: http
namespace: jira-epic
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search
operations:
- name: search-issues
method: GET
- type: http
namespace: anthropic-epic
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: slack-epic
baseUri: 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 vendor invoice from the AP system, validates it against the corresponding purchase order in SAP, and routes it for approval via ServiceNow.
naftiko: '0.5'
info:
label: Vendor Invoice Processing
description: Retrieves a vendor invoice from the AP system, validates it against the corresponding purchase order in SAP, and routes it for approval via ServiceNow.
tags:
- finance
- erp
- sap
- servicenow
- accounts-payable
- approval
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: process-vendor-invoice
description: Given a vendor invoice number and SAP purchase order number, retrieve and validate the invoice against the PO, then create a ServiceNow approval workflow. Use for accounts payable invoice processing.
inputParameters:
- name: invoice_number
in: body
type: string
description: The vendor invoice number to process.
- name: po_number
in: body
type: string
description: The SAP purchase order number to validate against.
steps:
- name: get-po
type: call
call: sap.get-purchase-order
with:
po_number: '{{po_number}}'
- name: submit-approval
type: call
call: servicenow.create-approval
with:
category: ap_invoice_approval
short_description: 'Invoice {{invoice_number}} for PO {{po_number}} — Amount: {{get-po.total_amount}}'
consumes:
- type: http
namespace: sap
baseUri: https://bloomberg-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: servicenow
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: approval-requests
path: /table/sc_request
operations:
- name: create-approval
method: POST
Fetches follower growth and post engagement metrics from Bloomberg's LinkedIn company page and posts a weekly digest to the marketing Slack channel.
naftiko: '0.5'
info:
label: LinkedIn Company Page Performance Digest
description: Fetches follower growth and post engagement metrics from Bloomberg's LinkedIn company page and posts a weekly digest to the marketing Slack channel.
tags:
- marketing
- social
- linkedin
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-linkedin-performance
description: Fetch weekly follower growth and top post engagement metrics from Bloomberg's LinkedIn company page and post a summary to the marketing Slack channel. Use for weekly social performance reviews.
inputParameters:
- name: start_date
in: body
type: string
description: The start date for the reporting period in ISO 8601 format, e.g. '2026-03-13'.
- name: end_date
in: body
type: string
description: The end date for the reporting period in ISO 8601 format, e.g. '2026-03-20'.
steps:
- name: get-follower-stats
type: call
call: linkedin.get-follower-stats
with:
organization_id: $secrets.bloomberg_linkedin_org_id
- name: get-share-stats
type: call
call: linkedin-shares.get-share-stats
with:
organization_id: $secrets.bloomberg_linkedin_org_id
start: '{{start_date}}'
end: '{{end_date}}'
- name: post-digest
type: call
call: slack.post-message
with:
channel: marketing-analytics
text: 'LinkedIn weekly digest ({{start_date}} to {{end_date}}): followers {{get-follower-stats.follower_count}}, impressions {{get-share-stats.impression_count}}, engagement {{get-share-stats.engagement_count}}.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: follower-stats
path: /organizationalEntityFollowerStatistics
operations:
- name: get-follower-stats
method: GET
- type: http
namespace: linkedin-shares
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: share-stats
path: /organizationalEntityShareStatistics
operations:
- name: get-share-stats
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
When a developer is onboarded to a project team, grants access to the relevant GitHub repositories and sends a Slack confirmation to the team lead.
naftiko: '0.5'
info:
label: GitHub Repository Access Provisioning
description: When a developer is onboarded to a project team, grants access to the relevant GitHub repositories and sends a Slack confirmation to the team lead.
tags:
- devops
- identity
- github
- slack
- access-management
capability:
exposes:
- type: mcp
namespace: dev-access
port: 8080
tools:
- name: provision-repo-access
description: Given a GitHub username, repository list, and permission level, add the user as a collaborator to each specified repository and notify the team lead in Slack. Use when a developer joins a project team.
inputParameters:
- name: github_username
in: body
type: string
description: The GitHub username of the developer to provision access for.
- name: repo_name
in: body
type: string
description: The full repository name including org, e.g. 'bloomberg/bde'.
- name: permission
in: body
type: string
description: 'Permission level: ''read'', ''triage'', ''write'', ''maintain'', or ''admin''.'
- name: team_lead_slack_id
in: body
type: string
description: The Slack user ID of the team lead to notify.
steps:
- name: add-collaborator
type: call
call: github.add-repo-collaborator
with:
repo: '{{repo_name}}'
username: '{{github_username}}'
permission: '{{permission}}'
- name: notify-lead
type: call
call: slack.send-dm
with:
user_id: '{{team_lead_slack_id}}'
text: '{{github_username}} has been granted {{permission}} access to {{repo_name}}.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: collaborators
path: /repos/{{repo}}/collaborators/{{username}}
inputParameters:
- name: repo
in: path
- name: username
in: path
operations:
- name: add-repo-collaborator
method: PUT
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: dm
path: /chat.postMessage
operations:
- name: send-dm
method: POST
Scans Terraform plans for security misconfigurations, creates Jira tickets for violations, and posts a scan summary to the infrastructure Slack channel.
naftiko: '0.5'
info:
label: Terraform Security Scan Gate
description: Scans Terraform plans for security misconfigurations, creates Jira tickets for violations, and posts a scan summary to the infrastructure Slack channel.
tags:
- security
- terraform
- jira
- slack
- infrastructure
capability:
exposes:
- type: mcp
namespace: tf-security
port: 8080
tools:
- name: scan-terraform-plan
description: Given a Terraform Cloud run ID, scan for security violations, create Jira tickets, and notify Slack.
inputParameters:
- name: run_id
in: body
type: string
description: The Terraform Cloud run ID to scan.
- name: workspace
in: body
type: string
description: The Terraform workspace name.
steps:
- name: get-plan
type: call
call: tfc-scan.get-run-plan
with:
run_id: '{{run_id}}'
- name: create-ticket
type: call
call: jira-tfsec.create-issue
with:
project: SEC
summary: 'Terraform security scan: {{workspace}} (run {{run_id}})'
description: 'Plan changes: {{get-plan.resource_changes}}. Review for security compliance.'
priority: High
- name: notify-team
type: call
call: slack-tfsec.post-message
with:
channel: infrastructure-security
text: 'Terraform scan: {{workspace}} run {{run_id}}. Changes: {{get-plan.resource_changes}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: tfc-scan
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_cloud_token
resources:
- name: runs
path: /runs/{{run_id}}/plan
inputParameters:
- name: run_id
in: path
operations:
- name: get-run-plan
method: GET
- type: http
namespace: jira-tfsec
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-tfsec
baseUri: 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 storage size and object count metrics for an S3 bucket used by Bloomberg data pipelines.
naftiko: '0.5'
info:
label: AWS S3 Bucket Storage Metrics
description: Retrieves storage size and object count metrics for an S3 bucket used by Bloomberg data pipelines.
tags:
- cloud
- aws
- storage
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-storage
port: 8080
tools:
- name: get-bucket-metrics
description: Given an S3 bucket name, return its total storage size and object count. Use for cloud cost monitoring.
inputParameters:
- name: bucket_name
in: body
type: string
description: The AWS S3 bucket name.
call: aws-s3.get-bucket-size
with:
bucket: '{{bucket_name}}'
outputParameters:
- name: size_gb
type: number
mapping: $.Datapoints[0].Average
- name: object_count
type: integer
mapping: $.ObjectCount
consumes:
- type: http
namespace: aws-s3
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_cloudwatch_key
placement: header
resources:
- name: metrics
path: /
operations:
- name: get-bucket-size
method: POST
Updates a Salesforce opportunity to the next stage when a deal milestone is confirmed, and notifies the sales team Slack channel.
naftiko: '0.5'
info:
label: Salesforce Opportunity Stage Update
description: Updates a Salesforce opportunity to the next stage when a deal milestone is confirmed, and notifies the sales team Slack channel.
tags:
- crm
- sales
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: crm-ops
port: 8080
tools:
- name: advance-opportunity-stage
description: Given a Salesforce opportunity ID and new stage name, update the opportunity stage and post a Slack notification to the sales team. Use when a deal milestone is confirmed by the account team.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce Opportunity ID (18-character).
- name: new_stage
in: body
type: string
description: The new stage name, e.g. 'Proposal/Price Quote', 'Negotiation/Review', 'Closed Won'.
steps:
- name: update-opp
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
StageName: '{{new_stage}}'
- name: notify-sales
type: call
call: slack.post-message
with:
channel: sales-wins
text: 'Opportunity {{opportunity_id}} advanced to stage: {{new_stage}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://bloomberg.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: 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 critical GitHub Dependabot alert is opened, creates a Jira security ticket, assigns to the owning team, and posts to the security Slack channel with SLA deadlines.
naftiko: '0.5'
info:
label: Security Vulnerability Remediation Tracker
description: When a critical GitHub Dependabot alert is opened, creates a Jira security ticket, assigns to the owning team, and posts to the security Slack channel with SLA deadlines.
tags:
- security
- github
- jira
- slack
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: vuln-ops
port: 8080
tools:
- name: track-vulnerability-remediation
description: Given a GitHub Dependabot alert, create a Jira security ticket, assign to the owning team, and notify Slack with remediation SLA.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository with the vulnerability.
- name: alert_number
in: body
type: string
description: The Dependabot alert number.
- name: severity
in: body
type: string
description: 'Vulnerability severity: critical, high, medium, low.'
steps:
- name: get-alert
type: call
call: gh-vuln.get-dependabot-alert
with:
repo: '{{repo_name}}'
alert_number: '{{alert_number}}'
- name: create-ticket
type: call
call: jira-vuln.create-issue
with:
project: SEC
summary: '[{{severity}}] Dependabot: {{get-alert.package}} in {{repo_name}}'
description: 'CVE: {{get-alert.cve_id}}. Package: {{get-alert.package}}@{{get-alert.vulnerable_version}}. Fix: {{get-alert.patched_version}}.'
priority: Critical
- name: notify-security
type: call
call: slack-vuln.post-message
with:
channel: security-vulnerabilities
text: '[{{severity}}] Dependabot alert in {{repo_name}}: {{get-alert.package}}. CVE: {{get-alert.cve_id}}. Jira: {{create-ticket.key}}. SLA: 48 hours for critical.'
consumes:
- type: http
namespace: gh-vuln
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: alerts
path: /repos/{{repo}}/dependabot/alerts/{{alert_number}}
inputParameters:
- name: repo
in: path
- name: alert_number
in: path
operations:
- name: get-dependabot-alert
method: GET
- type: http
namespace: jira-vuln
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-vuln
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new Bloomberg client webinar is created in Zoom, syncs registration data to Salesforce as campaign member records and posts a Slack notification to the events team.
naftiko: '0.5'
info:
label: Zoom Webinar Registration Sync
description: When a new Bloomberg client webinar is created in Zoom, syncs registration data to Salesforce as campaign member records and posts a Slack notification to the events team.
tags:
- marketing
- events
- zoom
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: events-ops
port: 8080
tools:
- name: sync-webinar-registrants
description: Given a Zoom webinar ID and Salesforce campaign ID, fetch all webinar registrants from Zoom and create corresponding Salesforce campaign member records. Use after webinar registration closes or for real-time sync.
inputParameters:
- name: webinar_id
in: body
type: string
description: The Zoom webinar ID.
- name: salesforce_campaign_id
in: body
type: string
description: The Salesforce campaign ID to sync registrants into.
steps:
- name: get-registrants
type: call
call: zoom.list-webinar-registrants
with:
webinar_id: '{{webinar_id}}'
- name: create-campaign-members
type: call
call: salesforce.create-campaign-members
with:
campaign_id: '{{salesforce_campaign_id}}'
registrant_data: '{{get-registrants.registrants}}'
- name: notify-events
type: call
call: slack.post-message
with:
channel: events-team
text: 'Webinar {{webinar_id}} registrants synced to Salesforce campaign {{salesforce_campaign_id}}: {{get-registrants.total_records}} records.'
consumes:
- type: http
namespace: zoom
baseUri: https://api.zoom.us/v2
authentication:
type: bearer
token: $secrets.zoom_token
resources:
- name: webinar-registrants
path: /webinars/{{webinar_id}}/registrants
inputParameters:
- name: webinar_id
in: path
operations:
- name: list-webinar-registrants
method: GET
- type: http
namespace: salesforce
baseUri: https://bloomberg.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaign-members
path: /sobjects/CampaignMember
operations:
- name: create-campaign-members
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 key financial data points for a company from Bloomberg Company Financials including revenue, EPS, and market cap.
naftiko: '0.5'
info:
label: Bloomberg Company Financials Lookup
description: Retrieves key financial data points for a company from Bloomberg Company Financials including revenue, EPS, and market cap.
tags:
- financial-data
- bloomberg-company-financials
- research
capability:
exposes:
- type: mcp
namespace: company-fin
port: 8080
tools:
- name: get-company-financials
description: Given a company ticker, return key financial metrics from Bloomberg Company Financials. Use for equity research and due diligence.
inputParameters:
- name: ticker
in: body
type: string
description: The Bloomberg company ticker, e.g. 'AAPL US Equity'.
call: bbg-financials.get-financials
with:
ticker: '{{ticker}}'
outputParameters:
- name: revenue
type: number
mapping: $.revenue
- name: eps
type: number
mapping: $.eps
- name: market_cap
type: number
mapping: $.market_cap
consumes:
- type: http
namespace: bbg-financials
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/data
authentication:
type: bearer
token: $secrets.bloomberg_data_token
resources:
- name: financials
path: /fields/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-financials
method: GET
When a Greenhouse candidate advances to the interview stage, fetches available interviewer slots from Microsoft 365 and creates calendar invites for the interview panel.
naftiko: '0.5'
info:
label: Greenhouse Candidate Interview Scheduler
description: When a Greenhouse candidate advances to the interview stage, fetches available interviewer slots from Microsoft 365 and creates calendar invites for the interview panel.
tags:
- hr
- recruiting
- greenhouse
- microsoft-365
capability:
exposes:
- type: mcp
namespace: recruiting-scheduling
port: 8080
tools:
- name: schedule-interview
description: Given a Greenhouse application ID and list of interviewer email addresses, retrieve candidate details, find common availability via Microsoft 365, and create calendar invites for the interview panel. Use when a candidate is advanced to interview stage.
inputParameters:
- name: application_id
in: body
type: string
description: The Greenhouse application ID for the candidate.
- name: interviewer_emails
in: body
type: string
description: Comma-separated list of interviewer email addresses.
- name: interview_date
in: body
type: string
description: Preferred interview date in ISO 8601 format.
steps:
- name: get-candidate
type: call
call: greenhouse.get-application
with:
application_id: '{{application_id}}'
- name: create-invite
type: call
call: msgraph.create-event
with:
subject: 'Interview: {{get-candidate.candidate_name}} — {{get-candidate.job_title}}'
attendees: '{{interviewer_emails}}'
start: '{{interview_date}}'
consumes:
- type: http
namespace: greenhouse
baseUri: https://harvest.greenhouse.io/v1
authentication:
type: basic
username: $secrets.greenhouse_api_key
password: ''
resources:
- name: applications
path: /applications/{{application_id}}
inputParameters:
- name: application_id
in: path
operations:
- name: get-application
method: GET
- type: http
namespace: msgraph
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 open GitHub pull requests approaching review SLA, assigns additional reviewers, and sends SLA warnings to the Slack engineering channel.
naftiko: '0.5'
info:
label: GitHub Code Review SLA Monitor
description: Monitors open GitHub pull requests approaching review SLA, assigns additional reviewers, and sends SLA warnings to the Slack engineering channel.
tags:
- engineering
- github
- slack
- code-review
- sla
capability:
exposes:
- type: mcp
namespace: review-ops
port: 8080
tools:
- name: monitor-review-sla
description: Given a GitHub repository, check PRs nearing review SLA breach, assign reviewers, and alert Slack.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name.
- name: sla_hours
in: body
type: string
description: The SLA threshold in hours.
steps:
- name: get-open-prs
type: call
call: gh-review.list-pull-requests
with:
repo: '{{repo_name}}'
state: open
- name: alert-team
type: call
call: slack-review.post-message
with:
channel: engineering-reviews
text: 'Review SLA warning: {{repo_name}} has PRs approaching {{sla_hours}}h SLA. PRs: {{get-open-prs.count}} pending review.'
consumes:
- type: http
namespace: gh-review
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: list-pull-requests
method: GET
- type: http
namespace: slack-review
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Collects performance review data from Workday, generates department-level insights via Anthropic Claude, and publishes the summary to Confluence for HR leadership.
naftiko: '0.5'
info:
label: Workday Performance Review Aggregator
description: Collects performance review data from Workday, generates department-level insights via Anthropic Claude, and publishes the summary to Confluence for HR leadership.
tags:
- hr
- workday
- anthropic
- confluence
- performance-management
capability:
exposes:
- type: mcp
namespace: perf-review
port: 8080
tools:
- name: aggregate-performance-reviews
description: Collect Workday performance reviews for a department, generate insights, and publish to Confluence.
inputParameters:
- name: department
in: body
type: string
description: The department name.
- name: review_cycle
in: body
type: string
description: The review cycle, e.g. 'H1-2026'.
steps:
- name: get-reviews
type: call
call: workday-perf.get-reviews
with:
department: '{{department}}'
cycle: '{{review_cycle}}'
- name: generate-insights
type: call
call: anthropic-perf.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are an HR analytics expert. Summarize performance trends, identify top performers, and flag areas needing attention.
content: 'Analyze performance review data for {{department}} ({{review_cycle}}): {{get-reviews.data}}'
- name: publish-summary
type: call
call: confluence-perf.create-page
with:
space: HR
title: 'Performance Review Summary: {{department}} - {{review_cycle}}'
body: '{{generate-insights.content}}'
consumes:
- type: http
namespace: workday-perf
baseUri: https://wd5-services1.myworkday.com/ccx/api/v1/bloomberg
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: reviews
path: /performance/reviews
operations:
- name: get-reviews
method: GET
- type: http
namespace: anthropic-perf
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-perf
baseUri: https://bloomberg.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 breaking Bloomberg News alert is detected, summarizes the impact via Anthropic Claude, posts to relevant Slack channels, and creates a Jira research task for analysts.
naftiko: '0.5'
info:
label: Bloomberg News Breaking Alert Distributor
description: When a breaking Bloomberg News alert is detected, summarizes the impact via Anthropic Claude, posts to relevant Slack channels, and creates a Jira research task for analysts.
tags:
- news
- bloomberg-news
- anthropic
- slack
- jira
capability:
exposes:
- type: mcp
namespace: breaking-news
port: 8080
tools:
- name: distribute-breaking-alert
description: Given a Bloomberg News breaking alert, summarize impact, post to Slack, and create a Jira research task.
inputParameters:
- name: alert_id
in: body
type: string
description: The Bloomberg News alert identifier.
- name: headline
in: body
type: string
description: The breaking news headline.
steps:
- name: get-alert-details
type: call
call: bbg-breaking.get-alert
with:
alert_id: '{{alert_id}}'
- name: summarize-impact
type: call
call: anthropic-break.create-message
with:
model: claude-opus-4-5
max_tokens: 1024
system: You are a financial news analyst. Provide a brief market impact assessment for this breaking news.
content: 'Assess market impact of: {{headline}}. Details: {{get-alert-details.body}}'
- name: post-to-slack
type: call
call: slack-break.post-message
with:
channel: breaking-news
text: 'BREAKING: {{headline}}. Impact: {{summarize-impact.content}}'
- name: create-research-task
type: call
call: jira-break.create-issue
with:
project: RESEARCH
summary: 'Research: {{headline}}'
description: 'Breaking alert: {{alert_id}}. {{summarize-impact.content}}'
priority: High
consumes:
- type: http
namespace: bbg-breaking
baseUri: https://api.bloomberg.com/content/v1
authentication:
type: bearer
token: $secrets.bloomberg_content_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: anthropic-break
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: slack-break
baseUri: 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-break
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
After a PagerDuty incident is resolved, gathers timeline from PagerDuty, generates a post-mortem via Anthropic Claude, and publishes to Confluence.
naftiko: '0.5'
info:
label: PagerDuty Incident Post-Mortem Generator
description: After a PagerDuty incident is resolved, gathers timeline from PagerDuty, generates a post-mortem via Anthropic Claude, and publishes to Confluence.
tags:
- incident-response
- pagerduty
- anthropic
- confluence
- post-mortem
capability:
exposes:
- type: mcp
namespace: postmortem-ops
port: 8080
tools:
- name: generate-post-mortem
description: Given a resolved PagerDuty incident ID, gather the timeline, generate a post-mortem, and publish to Confluence.
inputParameters:
- name: incident_id
in: body
type: string
description: The PagerDuty incident ID.
steps:
- name: get-incident
type: call
call: pd-pm.get-incident
with:
incident_id: '{{incident_id}}'
- name: generate-report
type: call
call: anthropic-pm.create-message
with:
model: claude-opus-4-5
max_tokens: 4096
system: You are an SRE writing a blameless post-mortem. Include timeline, root cause, impact, and action items.
content: 'Generate a post-mortem for this incident: {{get-incident.data}}'
- name: publish-postmortem
type: call
call: confluence-pm.create-page
with:
space: SRE
title: 'Post-Mortem: {{get-incident.title}}'
body: '{{generate-report.content}}'
consumes:
- type: http
namespace: pd-pm
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents/{{incident_id}}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: anthropic-pm
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-pm
baseUri: https://bloomberg.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 new Salesforce lead is created, enriches it with company data from Bloomberg Enterprise Data, scores the lead, and notifies the sales rep on Slack.
naftiko: '0.5'
info:
label: Salesforce Lead Qualification Enrichment
description: When a new Salesforce lead is created, enriches it with company data from Bloomberg Enterprise Data, scores the lead, and notifies the sales rep on Slack.
tags:
- crm
- salesforce
- bloomberg-enterprise-data
- slack
- lead-management
capability:
exposes:
- type: mcp
namespace: lead-ops
port: 8080
tools:
- name: enrich-and-qualify-lead
description: Given a new Salesforce lead, enrich with Bloomberg data and notify the sales rep.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID.
- name: company_name
in: body
type: string
description: The lead's company name.
steps:
- name: get-company-data
type: call
call: bbg-data.get-company-profile
with:
company: '{{company_name}}'
- name: update-lead
type: call
call: sf-lead.update-lead
with:
lead_id: '{{lead_id}}'
industry: '{{get-company-data.industry}}'
revenue: '{{get-company-data.revenue}}'
- name: notify-rep
type: call
call: slack-sales.post-message
with:
channel: sales-leads
text: 'New enriched lead: {{company_name}}. Industry: {{get-company-data.industry}}. Revenue: {{get-company-data.revenue}}.'
consumes:
- type: http
namespace: bbg-data
baseUri: https://api.bloomberg.com/enterprise/v1
authentication:
type: apikey
key: X-Bloomberg-Key
value: $secrets.bloomberg_enterprise_key
placement: header
resources:
- name: companies
path: /companies/{{company}}
inputParameters:
- name: company
in: path
operations:
- name: get-company-profile
method: GET
- type: http
namespace: sf-lead
baseUri: https://bloomberg.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: 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
Retrieves the current constituent list and weights for a Bloomberg index for portfolio analysis.
naftiko: '0.5'
info:
label: Bloomberg Index Composition Lookup
description: Retrieves the current constituent list and weights for a Bloomberg index for portfolio analysis.
tags:
- financial-data
- bloomberg-indices
- portfolio
- analytics
capability:
exposes:
- type: mcp
namespace: index-ops
port: 8080
tools:
- name: get-index-composition
description: Given a Bloomberg index ticker, return its constituent securities and weights. Use for portfolio rebalancing and benchmark analysis.
inputParameters:
- name: index_ticker
in: body
type: string
description: The Bloomberg index ticker, e.g. 'SPX Index'.
call: bloomberg-idx.get-constituents
with:
ticker: '{{index_ticker}}'
outputParameters:
- name: constituents
type: array
mapping: $.members
- name: count
type: integer
mapping: $.totalMembers
consumes:
- type: http
namespace: bloomberg-idx
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/data
authentication:
type: bearer
token: $secrets.bloomberg_data_token
resources:
- name: indices
path: /indices/{{ticker}}/constituents
inputParameters:
- name: ticker
in: path
operations:
- name: get-constituents
method: GET
Gathers compliance evidence from Okta access logs, GitHub audit logs, and ServiceNow change records, assembles an evidence package, and publishes to Confluence.
naftiko: '0.5'
info:
label: Quarterly Compliance Evidence Collector
description: Gathers compliance evidence from Okta access logs, GitHub audit logs, and ServiceNow change records, assembles an evidence package, and publishes to Confluence.
tags:
- compliance
- okta
- github
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: compliance-evidence
port: 8080
tools:
- name: collect-compliance-evidence
description: Gather access logs from Okta, audit logs from GitHub, change records from ServiceNow, and publish evidence to Confluence.
inputParameters:
- name: quarter
in: body
type: string
description: The quarter for evidence collection, e.g. 'Q1-2026'.
- name: control_id
in: body
type: string
description: The compliance control ID.
steps:
- name: get-access-logs
type: call
call: okta-evidence.get-system-log
with:
since: '{{quarter}}'
filter: eventType eq "user.session.start"
- name: get-audit-logs
type: call
call: gh-evidence.get-audit-log
with:
org: bloomberg
since: '{{quarter}}'
- name: get-changes
type: call
call: snow-evidence.get-changes
with:
quarter: '{{quarter}}'
- name: publish-evidence
type: call
call: confluence-evidence.create-page
with:
space: COMPLIANCE
title: 'Evidence Package: {{control_id}} - {{quarter}}'
body: 'Access logs: {{get-access-logs.count}} entries. Audit events: {{get-audit-logs.count}}. Changes: {{get-changes.count}}'
consumes:
- type: http
namespace: okta-evidence
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: logs
path: /logs
operations:
- name: get-system-log
method: GET
- type: http
namespace: gh-evidence
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: audit
path: /orgs/{{org}}/audit-log
inputParameters:
- name: org
in: path
operations:
- name: get-audit-log
method: GET
- type: http
namespace: snow-evidence
baseUri: https://bloomberg.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: get-changes
method: GET
- type: http
namespace: confluence-evidence
baseUri: https://bloomberg.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 Salesforce account details including industry, revenue tier, and account owner for sales enablement workflows.
naftiko: '0.5'
info:
label: Salesforce Account Lookup
description: Retrieves Salesforce account details including industry, revenue tier, and account owner for sales enablement workflows.
tags:
- crm
- salesforce
- account-management
capability:
exposes:
- type: mcp
namespace: crm-ops
port: 8080
tools:
- name: get-account-details
description: Given a Salesforce account ID, return account details including owner, industry, and tier. Use for account health checks and sales planning.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
call: sf-account.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: name
type: string
mapping: $.Name
- name: industry
type: string
mapping: $.Industry
- name: owner
type: string
mapping: $.Owner.Name
consumes:
- type: http
namespace: sf-account
baseUri: https://bloomberg.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
When a Datadog monitor enters ALERT state for a critical service, retrieves monitor details and creates a PagerDuty incident to wake the responsible on-call team.
naftiko: '0.5'
info:
label: Datadog Infrastructure Alert Escalation
description: When a Datadog monitor enters ALERT state for a critical service, retrieves monitor details and creates a PagerDuty incident to wake the responsible on-call team.
tags:
- observability
- datadog
- pagerduty
- incident-response
- monitoring
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: escalate-monitor-alert
description: Given a Datadog monitor ID in ALERT state, fetch the monitor details and create a PagerDuty incident routed to the correct service. Use for any monitor that crosses critical threshold and needs on-call response.
inputParameters:
- name: monitor_id
in: body
type: integer
description: The Datadog monitor ID that entered ALERT state.
- name: pagerduty_service_id
in: body
type: string
description: The PagerDuty service ID to route the incident to based on monitor ownership.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: pagerduty.create-incident
with:
title: '{{get-monitor.name}} — ALERT'
service_id: '{{pagerduty_service_id}}'
body: 'Monitor: {{get-monitor.name}}
Query: {{get-monitor.query}}
Message: {{get-monitor.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Checks Bloomberg AIM for unreconciled trades, creates ServiceNow tickets for discrepancies, and alerts the operations team on Slack.
naftiko: '0.5'
info:
label: Bloomberg AIM Trade Reconciliation Monitor
description: Checks Bloomberg AIM for unreconciled trades, creates ServiceNow tickets for discrepancies, and alerts the operations team on Slack.
tags:
- trading
- bloomberg-aim
- servicenow
- slack
- reconciliation
capability:
exposes:
- type: mcp
namespace: trade-recon
port: 8080
tools:
- name: monitor-trade-reconciliation
description: Given a date, check Bloomberg AIM for unreconciled trades, create ServiceNow tickets, and alert operations.
inputParameters:
- name: trade_date
in: body
type: string
description: The trade date to reconcile in YYYY-MM-DD format.
steps:
- name: get-unreconciled
type: call
call: bbg-aim.get-unreconciled-trades
with:
date: '{{trade_date}}'
- name: create-ticket
type: call
call: snow-recon.create-incident
with:
short_description: 'Unreconciled trades: {{trade_date}} ({{get-unreconciled.count}} items)'
description: '{{get-unreconciled.count}} trades unreconciled for {{trade_date}}. Details: {{get-unreconciled.summary}}'
category: trade_operations
- name: alert-ops
type: call
call: slack-recon.post-message
with:
channel: trade-operations
text: 'Trade Reconciliation Alert: {{get-unreconciled.count}} unreconciled trades for {{trade_date}}. SNOW: {{create-ticket.number}}'
consumes:
- type: http
namespace: bbg-aim
baseUri: https://api.bloomberg.com/aim/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: trades
path: /reconciliation/unmatched
operations:
- name: get-unreconciled-trades
method: GET
- type: http
namespace: snow-recon
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: 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-recon
baseUri: 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 termination is processed in Workday, revokes Okta access, closes all open ServiceNow tickets assigned to the employee, and notifies the IT team via Teams.
naftiko: '0.5'
info:
label: Employee Offboarding Workflow
description: When an employee termination is processed in Workday, revokes Okta access, closes all open ServiceNow tickets assigned to the employee, and notifies the IT team via Teams.
tags:
- hr
- offboarding
- workday
- okta
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: 'Given a Workday employee ID and termination date, orchestrate the full offboarding: deactivate Okta account, close open ServiceNow tickets, and notify the IT offboarding team in Teams. Use when an employee departure is confirmed.'
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID for the departing employee.
- name: termination_date
in: body
type: string
description: The employee's last working day in ISO 8601 format.
steps:
- name: get-employee
type: call
call: workday-read.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: deactivate-okta
type: call
call: okta.deactivate-user
with:
user_login: '{{get-employee.work_email}}'
- name: close-tickets
type: call
call: servicenow-write.close-user-tickets
with:
assigned_to: '{{get-employee.work_email}}'
- name: notify-it
type: call
call: msteams-notify.post-channel-message
with:
channel_id: $secrets.it_offboarding_channel_id
text: 'Offboarding initiated for {{get-employee.full_name}} ({{get-employee.work_email}}). Okta deactivated. Termination date: {{termination_date}}.'
consumes:
- type: http
namespace: workday-read
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /bloomberg/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
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-write
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: close-user-tickets
method: PATCH
- type: http
namespace: msteams-notify
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When Datadog detects an AWS cost anomaly exceeding threshold, fetches the cost breakdown, creates a Jira ticket for the owning team, and posts a Slack summary to the FinOps channel.
naftiko: '0.5'
info:
label: Cloud Cost Anomaly Responder
description: When Datadog detects an AWS cost anomaly exceeding threshold, fetches the cost breakdown, creates a Jira ticket for the owning team, and posts a Slack summary to the FinOps channel.
tags:
- cloud
- finops
- datadog
- aws
- jira
- slack
- cost-management
capability:
exposes:
- type: mcp
namespace: finops-ops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given a Datadog cost anomaly alert with service name and threshold exceeded amount, fetch the AWS cost breakdown, open a Jira ticket for the owning team, and alert Slack. Use when cloud spend exceeds expected variance.
inputParameters:
- name: service_name
in: body
type: string
description: The AWS service or resource tag name that triggered the anomaly.
- name: anomaly_amount
in: body
type: number
description: The dollar amount exceeding the expected cost threshold.
- name: team_tag
in: body
type: string
description: The team ownership tag to route the Jira ticket to the correct group.
steps:
- name: get-cost-detail
type: call
call: datadog.get-cost-metrics
with:
service: '{{service_name}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: FINOPS
issuetype: Task
summary: 'Cost anomaly: {{service_name}} exceeded by ${{anomaly_amount}}'
description: 'Service: {{service_name}}
Overage: ${{anomaly_amount}}
Team: {{team_tag}}
Metrics: {{get-cost-detail.summary}}'
- name: notify-finops
type: call
call: slack.post-message
with:
channel: finops-alerts
text: 'Cost anomaly detected for {{service_name}}: ${{anomaly_amount}} over threshold. Jira: {{create-ticket.key}}.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: metrics
path: /metrics/query
operations:
- name: get-cost-metrics
method: GET
- type: http
namespace: jira
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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 recent Bloomberg News articles for a given topic, runs sentiment analysis via Anthropic Claude, and stores results in Snowflake for downstream reporting.
naftiko: '0.5'
info:
label: Bloomberg News Sentiment Pipeline
description: Fetches recent Bloomberg News articles for a given topic, runs sentiment analysis via Anthropic Claude, and stores results in Snowflake for downstream reporting.
tags:
- ai
- nlp
- bloomberg-news
- anthropic
- snowflake
capability:
exposes:
- type: mcp
namespace: news-analytics
port: 8080
tools:
- name: analyze-news-sentiment
description: Given a news topic and date range, retrieve Bloomberg News articles, analyze sentiment via Anthropic Claude, and store results in Snowflake.
inputParameters:
- name: topic
in: body
type: string
description: The news topic or company name to search for.
- name: date_range
in: body
type: string
description: Date range for articles, e.g. '7d' for last 7 days.
steps:
- name: fetch-articles
type: call
call: bbg-news.search-articles
with:
query: '{{topic}}'
range: '{{date_range}}'
- name: analyze-sentiment
type: call
call: anthropic-nlp.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a financial sentiment analyst. Classify each article as positive, negative, or neutral with a confidence score.
content: 'Analyze sentiment for these articles: {{fetch-articles.articles}}'
- name: store-results
type: call
call: snowflake-sent.insert-rows
with:
table: BLOOMBERG.ANALYTICS.NEWS_SENTIMENT
data: '{{analyze-sentiment.content}}'
consumes:
- type: http
namespace: bbg-news
baseUri: https://api.bloomberg.com/content/v1
authentication:
type: bearer
token: $secrets.bloomberg_content_token
resources:
- name: articles
path: /search
operations:
- name: search-articles
method: GET
- type: http
namespace: anthropic-nlp
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: snowflake-sent
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: rows
path: /databases/bloomberg/schemas/analytics/tables/news_sentiment/insertRows
operations:
- name: insert-rows
method: POST
After a Microsoft Teams meeting, extracts action items using Anthropic Claude, creates Jira tickets for each, and posts a summary to the team's Slack channel.
naftiko: '0.5'
info:
label: Microsoft Teams Meeting Action Item Tracker
description: After a Microsoft Teams meeting, extracts action items using Anthropic Claude, creates Jira tickets for each, and posts a summary to the team's Slack channel.
tags:
- productivity
- microsoft-teams
- anthropic
- jira
- slack
capability:
exposes:
- type: mcp
namespace: meeting-ops
port: 8080
tools:
- name: extract-meeting-actions
description: Given a Teams meeting transcript, extract action items via Anthropic, create Jira tickets, and post summary to Slack.
inputParameters:
- name: meeting_id
in: body
type: string
description: The Microsoft Teams meeting ID.
- name: project_key
in: body
type: string
description: The Jira project key for action items.
steps:
- name: get-transcript
type: call
call: teams-meetings.get-transcript
with:
meeting_id: '{{meeting_id}}'
- name: extract-actions
type: call
call: anthropic-actions.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: 'Extract action items from the meeting transcript. Format each as: assignee, task description, due date.'
content: '{{get-transcript.content}}'
- name: notify-team
type: call
call: slack-meetings.post-message
with:
channel: team-actions
text: 'Meeting action items from {{meeting_id}}: {{extract-actions.content}}'
consumes:
- type: http
namespace: teams-meetings
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: transcripts
path: /me/onlineMeetings/{{meeting_id}}/transcripts
inputParameters:
- name: meeting_id
in: path
operations:
- name: get-transcript
method: GET
- type: http
namespace: anthropic-actions
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: slack-meetings
baseUri: 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 Bloomberg market data feed latency exceeds threshold in Datadog, creates a P1 ServiceNow incident, alerts the data operations team on Slack, and triggers a PagerDuty page.
naftiko: '0.5'
info:
label: Market Data Feed Interruption Handler
description: When Bloomberg market data feed latency exceeds threshold in Datadog, creates a P1 ServiceNow incident, alerts the data operations team on Slack, and triggers a PagerDuty page.
tags:
- market-data
- incident-response
- datadog
- servicenow
- slack
- pagerduty
capability:
exposes:
- type: mcp
namespace: feed-ops
port: 8080
tools:
- name: handle-feed-interruption
description: Given a Datadog alert for market data feed latency, create a P1 incident in ServiceNow, alert the data ops team, and page on-call via PagerDuty.
inputParameters:
- name: feed_name
in: body
type: string
description: Name of the affected Bloomberg data feed.
- name: latency_ms
in: body
type: string
description: The current latency in milliseconds.
- name: alert_url
in: body
type: string
description: Direct URL to the Datadog alert.
steps:
- name: create-incident
type: call
call: snow-feed.create-incident
with:
short_description: '[P1] Bloomberg data feed interruption: {{feed_name}}'
description: 'Latency: {{latency_ms}}ms. Alert: {{alert_url}}'
urgency: '1'
category: data_feed
- name: alert-data-ops
type: call
call: slack-feed.post-message
with:
channel: data-operations
text: 'FEED ALERT: {{feed_name}} latency at {{latency_ms}}ms. Incident: {{create-incident.number}}. Alert: {{alert_url}}'
- name: page-oncall
type: call
call: pd-feed.create-incident
with:
title: 'Bloomberg Feed Interruption: {{feed_name}}'
service_id: $secrets.pagerduty_data_ops_service
urgency: high
consumes:
- type: http
namespace: snow-feed
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: 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-feed
baseUri: 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: pd-feed
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Executes a Bloomberg Query Language (BQL) query against Bloomberg Data and returns structured financial data results.
naftiko: '0.5'
info:
label: Bloomberg BQL Query Executor
description: Executes a Bloomberg Query Language (BQL) query against Bloomberg Data and returns structured financial data results.
tags:
- financial-data
- bloomberg-data
- bql
- analytics
capability:
exposes:
- type: mcp
namespace: bql-ops
port: 8080
tools:
- name: execute-bql-query
description: Given a BQL query string, execute it against Bloomberg Data and return results. Use for programmatic financial data retrieval.
inputParameters:
- name: bql_expression
in: body
type: string
description: The BQL query expression, e.g. 'get(px_last) for(['AAPL US Equity'])'.
call: bloomberg-bql.run-query
with:
expression: '{{bql_expression}}'
outputParameters:
- name: data
type: array
mapping: $.results
- name: field_count
type: integer
mapping: $.fieldCount
consumes:
- type: http
namespace: bloomberg-bql
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/data
authentication:
type: bearer
token: $secrets.bloomberg_data_token
resources:
- name: queries
path: /queries
operations:
- name: run-query
method: POST
Fetches the body content of a Confluence page by ID for use in automated documentation reviews and knowledge base lookups.
naftiko: '0.5'
info:
label: Confluence Page Content Retrieval
description: Fetches the body content of a Confluence page by ID for use in automated documentation reviews and knowledge base lookups.
tags:
- documentation
- confluence
- knowledge-base
capability:
exposes:
- type: mcp
namespace: docs
port: 8080
tools:
- name: get-page-content
description: Given a Confluence page ID, return the page title and body content. Use for documentation audits or knowledge extraction.
inputParameters:
- name: page_id
in: body
type: string
description: The Confluence page ID.
call: confluence-docs.get-page
with:
page_id: '{{page_id}}'
outputParameters:
- name: title
type: string
mapping: $.title
- name: body
type: string
mapping: $.body.storage.value
consumes:
- type: http
namespace: confluence-docs
baseUri: https://bloomberg.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
When a data quality check fails in Snowflake for Bloomberg market data, creates a Jira ticket, notifies the data engineering team on Slack, and logs the incident in ServiceNow.
naftiko: '0.5'
info:
label: Bloomberg Data Quality Alert Handler
description: When a data quality check fails in Snowflake for Bloomberg market data, creates a Jira ticket, notifies the data engineering team on Slack, and logs the incident in ServiceNow.
tags:
- data-quality
- snowflake
- jira
- slack
- bloomberg-data
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: handle-data-quality-alert
description: Given a failed data quality check name and affected dataset, create a Jira ticket for data engineering, post to Slack, and log a ServiceNow incident.
inputParameters:
- name: check_name
in: body
type: string
description: The name of the failed data quality check.
- name: dataset
in: body
type: string
description: The affected Snowflake dataset, e.g. 'BLOOMBERG.MARKET_DATA.EQUITIES'.
- name: error_details
in: body
type: string
description: Details about the data quality failure.
steps:
- name: create-jira-ticket
type: call
call: jira-dq.create-issue
with:
project: DATAQUAL
summary: 'Data quality failure: {{check_name}} on {{dataset}}'
description: '{{error_details}}'
issue_type: Bug
priority: High
- name: notify-slack
type: call
call: slack-dq.post-message
with:
channel: data-quality-alerts
text: 'Data quality alert: {{check_name}} failed on {{dataset}}. Jira: {{create-jira-ticket.key}}. Details: {{error_details}}'
- name: log-incident
type: call
call: snow-dq.create-incident
with:
short_description: 'Data quality failure: {{check_name}}'
description: 'Dataset: {{dataset}}. Jira: {{create-jira-ticket.key}}. {{error_details}}'
category: data_quality
consumes:
- type: http
namespace: jira-dq
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-dq
baseUri: 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: snow-dq
baseUri: https://bloomberg.service-now.com/api/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 sprint planning digest from Jira by fetching open issues for a project, grouping by assignee and priority, and posting the summary to the team Slack channel.
naftiko: '0.5'
info:
label: Jira Sprint Planning Board Digest
description: Generates a sprint planning digest from Jira by fetching open issues for a project, grouping by assignee and priority, and posting the summary to the team Slack channel.
tags:
- devops
- jira
- slack
- sprint-planning
- reporting
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: digest-sprint-board
description: Given a Jira project key and sprint ID, fetch all open issues, group by assignee and priority, and post a structured sprint summary to the designated Slack channel. Use at the start of sprint planning sessions.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key, e.g. 'BTECH'.
- name: sprint_id
in: body
type: integer
description: The Jira sprint ID for the planning session.
- name: slack_channel
in: body
type: string
description: The Slack channel name to post the sprint digest to.
steps:
- name: get-issues
type: call
call: jira.search-issues
with:
jql: project={{project_key}} AND sprint={{sprint_id}} AND status != Done
- name: post-digest
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'Sprint {{sprint_id}} digest for {{project_key}}: {{get-issues.total}} open issues.'
consumes:
- type: http
namespace: jira
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue-search
path: /search
operations:
- name: search-issues
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves the current status, assignee, and priority of a Jira ticket for use in status reporting and triage workflows.
naftiko: '0.5'
info:
label: Jira Ticket Status Lookup
description: Retrieves the current status, assignee, and priority of a Jira ticket for use in status reporting and triage workflows.
tags:
- project-management
- jira
- ticket-tracking
capability:
exposes:
- type: mcp
namespace: jira-ops
port: 8080
tools:
- name: get-ticket-status
description: Given a Jira issue key, return its status, assignee, and priority. Use for quick status checks during standups or incident reviews.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key, e.g. 'BBERG-1234'.
call: jira-lookup.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: priority
type: string
mapping: $.fields.priority.name
consumes:
- type: http
namespace: jira-lookup
baseUri: https://bloomberg.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 an AWS budget threshold is breached, captures cost breakdown, creates a Jira cost investigation ticket, and alerts the cloud operations team on Slack.
naftiko: '0.5'
info:
label: AWS Cost Budget Breach Handler
description: When an AWS budget threshold is breached, captures cost breakdown, creates a Jira cost investigation ticket, and alerts the cloud operations team on Slack.
tags:
- cloud
- aws
- jira
- slack
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-cost-ops
port: 8080
tools:
- name: handle-budget-breach
description: Given an AWS budget breach event, create a Jira investigation ticket and alert cloud ops on Slack.
inputParameters:
- name: budget_name
in: body
type: string
description: The AWS budget name that was breached.
- name: actual_spend
in: body
type: string
description: The actual spend amount.
- name: budget_limit
in: body
type: string
description: The budget limit.
steps:
- name: create-ticket
type: call
call: jira-cloud.create-issue
with:
project: CLOUD
summary: 'AWS budget breach: {{budget_name}} ({{actual_spend}}/{{budget_limit}})'
description: 'Budget {{budget_name}} exceeded. Actual: {{actual_spend}}, Limit: {{budget_limit}}.'
priority: High
- name: alert-team
type: call
call: slack-cloud.post-message
with:
channel: cloud-operations
text: 'AWS BUDGET BREACH: {{budget_name}} at {{actual_spend}} (limit: {{budget_limit}}). Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: jira-cloud
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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-cloud
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates a new Confluence knowledge base article from a structured template when a resolved ServiceNow incident has a post-mortem, ensuring institutional knowledge is captured.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Article Publisher
description: Creates a new Confluence knowledge base article from a structured template when a resolved ServiceNow incident has a post-mortem, ensuring institutional knowledge is captured.
tags:
- itsm
- knowledge-management
- confluence
- servicenow
capability:
exposes:
- type: mcp
namespace: kb-management
port: 8080
tools:
- name: publish-incident-postmortem
description: Given a resolved ServiceNow incident number and Confluence space key, retrieve the incident details and create a post-mortem knowledge article in Confluence. Use after P1/P2 incidents are resolved to capture learnings.
inputParameters:
- name: incident_number
in: body
type: string
description: The resolved ServiceNow incident number, e.g. 'INC0012345'.
- name: confluence_space_key
in: body
type: string
description: The Confluence space key where the article will be created, e.g. 'INFRA'.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: create-article
type: call
call: confluence.create-page
with:
space_key: '{{confluence_space_key}}'
title: 'Post-mortem: {{incident_number}} — {{get-incident.short_description}}'
body: 'Incident: {{incident_number}}
Description: {{get-incident.short_description}}
Resolution: {{get-incident.close_notes}}
Duration: {{get-incident.resolved_at}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: get-incident
method: GET
- type: http
namespace: confluence
baseUri: https://bloomberg.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
Queries Snowflake to detect stale or failed data pipeline runs, and opens a Jira task for the data engineering team when SLA breach is detected.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Health Check
description: Queries Snowflake to detect stale or failed data pipeline runs, and opens a Jira task for the data engineering team when SLA breach is detected.
tags:
- data
- analytics
- snowflake
- jira
- monitoring
- data-quality
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: Given a Snowflake pipeline name and expected SLA in minutes, check if the most recent run completed within SLA. If breached, create a Jira task for the data engineering team. Use for scheduled data pipeline SLA monitoring.
inputParameters:
- name: pipeline_name
in: body
type: string
description: The Snowflake task or pipeline name to check.
- name: sla_minutes
in: body
type: integer
description: The maximum allowed minutes since last successful run.
steps:
- name: check-run
type: call
call: snowflake.query-task-history
with:
task_name: '{{pipeline_name}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: DATA
issuetype: Task
summary: 'Pipeline SLA breach: {{pipeline_name}} exceeded {{sla_minutes}} minutes'
description: 'Pipeline {{pipeline_name}} last successful run: {{check-run.last_success_time}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: task-history
path: /databases/bloomberg/schemas/monitoring/tasks/{{task_name}}/history
inputParameters:
- name: task_name
in: path
operations:
- name: query-task-history
method: GET
- type: http
namespace: jira
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
When a new GitHub release is tagged, generates structured release notes from merged PRs since the last release and publishes them to Confluence and the engineering Slack channel.
naftiko: '0.5'
info:
label: GitHub Release Notes Publisher
description: When a new GitHub release is tagged, generates structured release notes from merged PRs since the last release and publishes them to Confluence and the engineering Slack channel.
tags:
- devops
- github
- confluence
- slack
- release-management
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: publish-release-notes
description: Given a GitHub repository and release tag, fetch merged PRs since the previous tag, compile structured release notes, publish to Confluence, and announce in the engineering Slack channel. Use when a new production release is cut.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository full name, e.g. 'bloomberg/bde'.
- name: release_tag
in: body
type: string
description: The new release tag, e.g. 'v3.2.1'.
- name: confluence_space_key
in: body
type: string
description: The Confluence space key where release notes will be published.
steps:
- name: get-prs
type: call
call: github.list-merged-prs
with:
repo: '{{repo}}'
tag: '{{release_tag}}'
- name: publish-notes
type: call
call: confluence.create-page
with:
space_key: '{{confluence_space_key}}'
title: 'Release Notes: {{repo}} {{release_tag}}'
body: Release {{release_tag}} — {{get-prs.count}} PRs merged.
- name: announce
type: call
call: slack.post-message
with:
channel: engineering-releases
text: '{{repo}} {{release_tag}} released. Release notes: {{publish-notes.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: list-merged-prs
method: GET
- type: http
namespace: confluence
baseUri: https://bloomberg.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: 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 Actions pipeline fails on a protected branch, creates a Jira bug, posts an alert to Slack, and logs a PagerDuty incident for on-call engineers.
naftiko: '0.5'
info:
label: CI/CD Pipeline Failure Handler
description: When a GitHub Actions pipeline fails on a protected branch, creates a Jira bug, posts an alert to Slack, and logs a PagerDuty incident for on-call engineers.
tags:
- devops
- cicd
- github
- jira
- slack
- pagerduty
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions pipeline failure event on a protected branch, create a Jira bug, post a Slack alert to the engineering channel, and trigger a PagerDuty incident. Invoke immediately when a critical pipeline fails.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository name, e.g. 'bloomberg/comdb2'.
- name: branch
in: body
type: string
description: The Git branch where the failure occurred.
- name: run_id
in: body
type: string
description: The GitHub Actions run ID of the failed workflow.
- name: commit_sha
in: body
type: string
description: The full Git commit SHA that triggered the pipeline.
- name: failed_job
in: body
type: string
description: The name of the failed job within the workflow.
steps:
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repo}} / {{branch}} — {{failed_job}}'
description: 'Run: {{run_id}}
Commit: {{commit_sha}}
Branch: {{branch}}'
- name: post-slack
type: call
call: slack.post-message
with:
channel: engineering-alerts
text: 'Pipeline failure in {{repo}} on {{branch}}. Job: {{failed_job}} | Jira: {{create-bug.key}} | Run: {{run_id}}'
- name: trigger-pagerduty
type: call
call: pagerduty.create-incident
with:
title: 'CI Failure: {{repo}} {{branch}} {{failed_job}}'
service_id: $secrets.pagerduty_engineering_service_id
body: 'Jira: {{create-bug.key}} | Run: {{run_id}} | Commit: {{commit_sha}}'
consumes:
- type: http
namespace: jira
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
When a Bloomberg client requests data access, creates a ServiceNow request, triggers manager approval in Slack, and provisions Okta access upon approval.
naftiko: '0.5'
info:
label: Client Data Access Request Workflow
description: When a Bloomberg client requests data access, creates a ServiceNow request, triggers manager approval in Slack, and provisions Okta access upon approval.
tags:
- access-management
- servicenow
- slack
- okta
- data-governance
capability:
exposes:
- type: mcp
namespace: data-access
port: 8080
tools:
- name: process-data-access-request
description: Given a client data access request, create a ServiceNow ticket, notify the data steward for approval, and provision Okta access.
inputParameters:
- name: requester_email
in: body
type: string
description: Email of the person requesting access.
- name: dataset_name
in: body
type: string
description: The Bloomberg dataset being requested.
- name: business_justification
in: body
type: string
description: Business justification for access.
steps:
- name: create-request
type: call
call: snow-access.create-request
with:
short_description: 'Data access request: {{dataset_name}}'
description: 'Requester: {{requester_email}}. Dataset: {{dataset_name}}. Justification: {{business_justification}}'
category: data_access
- name: notify-steward
type: call
call: slack-access.post-message
with:
channel: data-governance-approvals
text: 'New data access request: {{requester_email}} requests access to {{dataset_name}}. SNOW: {{create-request.number}}. Justification: {{business_justification}}'
- name: provision-access
type: call
call: okta-access.add-user-to-group
with:
email: '{{requester_email}}'
group: dataset-{{dataset_name}}-readers
consumes:
- type: http
namespace: snow-access
baseUri: https://bloomberg.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-access
baseUri: 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: okta-access
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: groups
path: /groups/{group_id}/users
operations:
- name: add-user-to-group
method: PUT
When Okta detects a suspicious login, blocks the session, creates a ServiceNow security incident, and alerts the security team on Slack.
naftiko: '0.5'
info:
label: Okta Suspicious Login Response
description: When Okta detects a suspicious login, blocks the session, creates a ServiceNow security incident, and alerts the security team on Slack.
tags:
- security
- okta
- servicenow
- slack
- threat-detection
capability:
exposes:
- type: mcp
namespace: security-response
port: 8080
tools:
- name: handle-suspicious-login
description: Given an Okta suspicious login event, block the session, create a security incident, and notify the security team.
inputParameters:
- name: user_email
in: body
type: string
description: The email of the user with suspicious activity.
- name: event_type
in: body
type: string
description: The type of suspicious event detected.
- name: ip_address
in: body
type: string
description: The source IP address.
steps:
- name: block-session
type: call
call: okta-sec.clear-user-sessions
with:
email: '{{user_email}}'
- name: create-incident
type: call
call: snow-sec.create-incident
with:
short_description: 'Suspicious login: {{user_email}} from {{ip_address}}'
description: 'Event: {{event_type}}. User sessions cleared. IP: {{ip_address}}'
category: security
urgency: '1'
- name: alert-security
type: call
call: slack-sec.post-message
with:
channel: security-alerts
text: 'SUSPICIOUS LOGIN: {{user_email}} from {{ip_address}}. Event: {{event_type}}. Sessions cleared. Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: okta-sec
baseUri: https://bloomberg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: sessions
path: /users/{{email}}/sessions
inputParameters:
- name: email
in: path
operations:
- name: clear-user-sessions
method: DELETE
- type: http
namespace: snow-sec
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: 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-sec
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Checks the payment status of a vendor invoice in SAP to verify whether it has been processed or is pending.
naftiko: '0.5'
info:
label: SAP Vendor Payment Status
description: Checks the payment status of a vendor invoice in SAP to verify whether it has been processed or is pending.
tags:
- erp
- sap
- accounts-payable
- finance
capability:
exposes:
- type: mcp
namespace: ap-ops
port: 8080
tools:
- name: get-payment-status
description: Given a SAP vendor invoice number, return its payment status and date. Use for vendor payment inquiries.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP vendor invoice number.
call: sap-ap.get-invoice-status
with:
invoice: '{{invoice_number}}'
outputParameters:
- name: status
type: string
mapping: $.payment_status
- name: payment_date
type: string
mapping: $.clearing_date
consumes:
- type: http
namespace: sap-ap
baseUri: https://sap.bloomberg.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: invoices
path: /API_SUPPLIER_INVOICE_SRV/A_SupplierInvoice('{{invoice}}')
inputParameters:
- name: invoice
in: path
operations:
- name: get-invoice-status
method: GET
When a new GitHub release is published, triggers a Harness deployment pipeline, updates the Jira release ticket, and posts deployment status to the engineering Slack channel.
naftiko: '0.5'
info:
label: GitHub Release Deployment Tracker
description: When a new GitHub release is published, triggers a Harness deployment pipeline, updates the Jira release ticket, and posts deployment status to the engineering Slack channel.
tags:
- cicd
- github
- harness
- jira
- slack
capability:
exposes:
- type: mcp
namespace: deploy-ops
port: 8080
tools:
- name: track-release-deployment
description: Given a GitHub release tag, trigger the Harness deployment, update Jira, and notify Slack.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository name.
- name: release_tag
in: body
type: string
description: The release tag, e.g. 'v2.5.0'.
- name: jira_release_ticket
in: body
type: string
description: The Jira release ticket key.
steps:
- name: trigger-deploy
type: call
call: harness-deploy.trigger-pipeline
with:
pipeline: '{{repo}}-production'
tag: '{{release_tag}}'
- name: update-jira
type: call
call: jira-release.update-issue
with:
issue_key: '{{jira_release_ticket}}'
status: Deploying
comment: Deployment triggered for {{release_tag}} via Harness.
- name: notify-engineering
type: call
call: slack-eng.post-message
with:
channel: engineering-releases
text: 'Deployment started: {{repo}} {{release_tag}}. Harness pipeline: {{trigger-deploy.execution_url}}. Jira: {{jira_release_ticket}}'
consumes:
- type: http
namespace: harness-deploy
baseUri: https://app.harness.io/gateway/api
authentication:
type: apikey
key: x-api-key
value: $secrets.harness_api_key
placement: header
resources:
- name: pipelines
path: /pipelines/execute
operations:
- name: trigger-pipeline
method: POST
- type: http
namespace: jira-release
baseUri: https://bloomberg.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: update-issue
method: PUT
- type: http
namespace: slack-eng
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Checks whether branch protection rules are enabled on a given GitHub repository's main branch.
naftiko: '0.5'
info:
label: GitHub Repo Branch Protection Check
description: Checks whether branch protection rules are enabled on a given GitHub repository's main branch.
tags:
- security
- github
- compliance
- branch-protection
capability:
exposes:
- type: mcp
namespace: github-security
port: 8080
tools:
- name: check-branch-protection
description: Given a GitHub repository name, return the branch protection settings for the main branch. Use during security audits.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name, e.g. 'bloomberg/memray'.
call: gh-protection.get-branch-protection
with:
repo: '{{repo_name}}'
outputParameters:
- name: enforce_admins
type: boolean
mapping: $.enforce_admins.enabled
- name: required_reviews
type: integer
mapping: $.required_pull_request_reviews.required_approving_review_count
consumes:
- type: http
namespace: gh-protection
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: branch-protection
path: /repos/{{repo}}/branches/main/protection
inputParameters:
- name: repo
in: path
operations:
- name: get-branch-protection
method: GET
Identifies Okta users in a given group who have not enrolled in MFA, sends them a Teams reminder, and escalates to their manager in Workday if enrollment is not completed within 24 hours.
naftiko: '0.5'
info:
label: Okta MFA Enrollment Enforcement
description: Identifies Okta users in a given group who have not enrolled in MFA, sends them a Teams reminder, and escalates to their manager in Workday if enrollment is not completed within 24 hours.
tags:
- identity
- security
- okta
- workday
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: security-compliance
port: 8080
tools:
- name: enforce-mfa-enrollment
description: Given an Okta group ID, find users without MFA enrolled, send them a Teams message requesting enrollment, and identify their Workday managers for escalation. Use for security compliance enforcement cycles.
inputParameters:
- name: okta_group_id
in: body
type: string
description: The Okta group ID to audit for MFA enrollment.
steps:
- name: list-group-users
type: call
call: okta.list-group-members
with:
group_id: '{{okta_group_id}}'
- name: notify-users
type: call
call: msteams.send-message
with:
recipient_upn: '{{list-group-users.email}}'
text: 'Action required: Please enroll in MFA within 24 hours to maintain Bloomberg system access.'
consumes:
- type: http
namespace: okta
baseUri: https://bloomberg.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: list-group-members
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Executes a parameterized query against Bloomberg market data stored in Snowflake and returns the result set for analytics dashboards.
naftiko: '0.5'
info:
label: Snowflake Market Data Query
description: Executes a parameterized query against Bloomberg market data stored in Snowflake and returns the result set for analytics dashboards.
tags:
- snowflake
- market-data
- analytics
- financial-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: query-market-data
description: Given a SQL query template and parameters, execute against the Bloomberg market data warehouse in Snowflake. Use for ad-hoc market data analysis.
inputParameters:
- name: query
in: body
type: string
description: Parameterized SQL query to execute.
- name: warehouse
in: body
type: string
description: Snowflake warehouse name, e.g. 'BLOOMBERG_ANALYTICS'.
call: snowflake-mkt.execute-query
with:
query: '{{query}}'
warehouse: '{{warehouse}}'
outputParameters:
- name: rows
type: array
mapping: $.data
- name: row_count
type: integer
mapping: $.rowCount
consumes:
- type: http
namespace: snowflake-mkt
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: execute-query
method: POST
Lists all published Tableau workbooks in a specified project for dashboard inventory and governance reporting.
naftiko: '0.5'
info:
label: Tableau Workbook List
description: Lists all published Tableau workbooks in a specified project for dashboard inventory and governance reporting.
tags:
- analytics
- tableau
- governance
capability:
exposes:
- type: mcp
namespace: bi-governance
port: 8080
tools:
- name: list-workbooks
description: Given a Tableau project name, return all published workbooks. Use for dashboard inventory audits.
inputParameters:
- name: project_name
in: body
type: string
description: The Tableau project name.
call: tableau-list.get-workbooks
with:
project: '{{project_name}}'
outputParameters:
- name: workbooks
type: array
mapping: $.workbooks.workbook
- name: count
type: integer
mapping: $.pagination.totalAvailable
consumes:
- type: http
namespace: tableau-list
baseUri: https://tableau.bloomberg.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{site_id}/workbooks
operations:
- name: get-workbooks
method: GET
When a new hire starts, provisions their Okta account, creates GitHub org membership, assigns Jira project access, and notifies the hiring manager on Slack.
naftiko: '0.5'
info:
label: New Hire IT Provisioning Orchestrator
description: When a new hire starts, provisions their Okta account, creates GitHub org membership, assigns Jira project access, and notifies the hiring manager on Slack.
tags:
- hr
- onboarding
- okta
- github
- jira
- slack
capability:
exposes:
- type: mcp
namespace: it-provisioning
port: 8080
tools:
- name: provision-new-hire
description: Given new hire details, create Okta account, add to GitHub org, assign Jira access, and notify hiring manager via Slack.
inputParameters:
- name: employee_name
in: body
type: string
description: The new hire's full name.
- name: email
in: body
type: string
description: The new hire's corporate email.
- name: department
in: body
type: string
description: The department the new hire is joining.
- name: manager_slack_id
in: body
type: string
description: Slack user ID of the hiring manager.
steps:
- name: create-okta-user
type: call
call: okta-prov.create-user
with:
email: '{{email}}'
firstName: '{{employee_name}}'
department: '{{department}}'
- name: add-github-member
type: call
call: gh-prov.add-org-member
with:
username: '{{email}}'
role: member
- name: add-jira-access
type: call
call: jira-prov.add-user-to-group
with:
email: '{{email}}'
group: '{{department}}-developers'
- name: notify-manager
type: call
call: slack-prov.post-message
with:
channel: '{{manager_slack_id}}'
text: IT provisioning complete for {{employee_name}} ({{email}}). Okta, GitHub, and Jira access have been configured.
consumes:
- type: http
namespace: okta-prov
baseUri: https://bloomberg.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: gh-prov
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: members
path: /orgs/bloomberg/memberships/{{username}}
inputParameters:
- name: username
in: path
operations:
- name: add-org-member
method: PUT
- type: http
namespace: jira-prov
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: groups
path: /group/user
operations:
- name: add-user-to-group
method: POST
- type: http
namespace: slack-prov
baseUri: 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 earnings data from Bloomberg Company Financials, generates an executive summary via Anthropic, and publishes it to a Confluence page for analyst review.
naftiko: '0.5'
info:
label: Quarterly Earnings Report Assembler
description: Pulls earnings data from Bloomberg Company Financials, generates an executive summary via Anthropic, and publishes it to a Confluence page for analyst review.
tags:
- financial-data
- bloomberg-company-financials
- anthropic
- confluence
- reporting
capability:
exposes:
- type: mcp
namespace: earnings-ops
port: 8080
tools:
- name: assemble-earnings-report
description: Given a company ticker and quarter, pull Bloomberg earnings data, generate an AI summary, and publish to Confluence.
inputParameters:
- name: ticker
in: body
type: string
description: The Bloomberg company ticker, e.g. 'MSFT US Equity'.
- name: quarter
in: body
type: string
description: The fiscal quarter, e.g. 'Q1 2026'.
steps:
- name: pull-earnings
type: call
call: bbg-earn.get-earnings
with:
ticker: '{{ticker}}'
period: '{{quarter}}'
- name: generate-summary
type: call
call: anthropic-earn.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
system: You are a financial analyst. Write a concise earnings summary.
content: 'Summarize these earnings for {{ticker}} {{quarter}}: {{pull-earnings.data}}'
- name: publish-page
type: call
call: confluence-earn.create-page
with:
space: RESEARCH
title: 'Earnings Summary: {{ticker}} {{quarter}}'
body: '{{generate-summary.content}}'
consumes:
- type: http
namespace: bbg-earn
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/data
authentication:
type: bearer
token: $secrets.bloomberg_data_token
resources:
- name: earnings
path: /fields/{{ticker}}/earnings
inputParameters:
- name: ticker
in: path
operations:
- name: get-earnings
method: GET
- type: http
namespace: anthropic-earn
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-earn
baseUri: https://bloomberg.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
Initiates a performance review cycle in Workday for a given department, creates a tracking Jira epic, and notifies HR business partners via Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Kickoff
description: Initiates a performance review cycle in Workday for a given department, creates a tracking Jira epic, and notifies HR business partners via Teams.
tags:
- hr
- performance-management
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: kickoff-review-cycle
description: Given a department ID and review cycle period, initiate the performance review process in Workday, create a Jira tracking epic, and notify relevant HR business partners in Teams. Use at the start of each semi-annual review cycle.
inputParameters:
- name: department_id
in: body
type: string
description: The Workday department ID for which to initiate the review cycle.
- name: review_period
in: body
type: string
description: The review period label, e.g. 'H1-2026'.
steps:
- name: initiate-review
type: call
call: workday.create-review-process
with:
department_id: '{{department_id}}'
period: '{{review_period}}'
- name: create-epic
type: call
call: jira.create-issue
with:
project_key: HR
issuetype: Epic
summary: Performance Review {{review_period}} — Dept {{department_id}}
- name: notify-hrbp
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.hrbp_teams_channel_id
text: 'Performance review cycle {{review_period}} has been initiated for department {{department_id}}. Jira epic: {{create-epic.key}}.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: review-processes
path: /bloomberg/performanceManagement/reviewProcesses
operations:
- name: create-review-process
method: POST
- type: http
namespace: jira
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: 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: post-channel-message
method: POST
When a change request is submitted in ServiceNow for a production system, retrieves the risk assessment and routes to the appropriate Change Advisory Board approvers via Teams.
naftiko: '0.5'
info:
label: Change Management Approval Gate
description: When a change request is submitted in ServiceNow for a production system, retrieves the risk assessment and routes to the appropriate Change Advisory Board approvers via Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: route-change-request
description: Given a ServiceNow change request number, retrieve the risk level and CAB group, notify the appropriate approvers via Teams, and update the change record with routing confirmation. Use when a change request needs CAB review.
inputParameters:
- name: change_number
in: body
type: string
description: The ServiceNow change request number, e.g. 'CHG0001234'.
steps:
- name: get-change
type: call
call: servicenow.get-change
with:
number: '{{change_number}}'
- name: notify-cab
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.cab_teams_channel_id
text: 'CAB Review Required: {{change_number}} — {{get-change.short_description}} | Risk: {{get-change.risk}} | Planned: {{get-change.start_date}}'
- name: update-change
type: call
call: servicenow-update.patch-change
with:
sys_id: '{{get-change.sys_id}}'
state: '2'
consumes:
- type: http
namespace: servicenow
baseUri: https://bloomberg.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: get-change
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: post-channel-message
method: POST
- type: http
namespace: servicenow-update
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change-patch
path: /table/change_request/{{sys_id}}
inputParameters:
- name: sys_id
in: path
operations:
- name: patch-change
method: PATCH
Given a batch of Bloomberg news articles, uses the Anthropic API to generate concise executive summaries and stores the results in Snowflake for downstream analytics.
naftiko: '0.5'
info:
label: AI-Assisted News Article Summarizer
description: Given a batch of Bloomberg news articles, uses the Anthropic API to generate concise executive summaries and stores the results in Snowflake for downstream analytics.
tags:
- ai
- automation
- anthropic
- snowflake
- content
- analytics
capability:
exposes:
- type: mcp
namespace: ai-content
port: 8080
tools:
- name: summarize-articles
description: Given a list of article IDs and a target Snowflake table, retrieve article content, generate executive summaries via Anthropic Claude, and store results in Snowflake. Use for automated editorial summarization pipelines.
inputParameters:
- name: article_ids
in: body
type: string
description: Comma-separated list of Bloomberg article IDs to summarize.
- name: snowflake_table
in: body
type: string
description: The fully-qualified Snowflake table name for storing summaries, e.g. 'BLOOMBERG.CONTENT.ARTICLE_SUMMARIES'.
steps:
- name: generate-summary
type: call
call: anthropic.create-message
with:
model: claude-opus-4-5
max_tokens: 1024
system: You are a financial news summarizer. Provide concise executive summaries.
content: 'Summarize the following Bloomberg articles: {{article_ids}}'
- name: store-results
type: call
call: snowflake.insert-rows
with:
table: '{{snowflake_table}}'
data: '{{generate-summary.content}}'
consumes:
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: create-message
method: POST
- type: http
namespace: snowflake
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: rows
path: /databases/bloomberg/schemas/content/tables/{{table}}/insertRows
inputParameters:
- name: table
in: path
operations:
- name: insert-rows
method: POST
Monitors Bloomberg EMSX for unusual order patterns, creates a ServiceNow investigation, alerts the trading desk on Slack, and logs the anomaly in Snowflake.
naftiko: '0.5'
info:
label: Bloomberg EMSX Order Anomaly Detector
description: Monitors Bloomberg EMSX for unusual order patterns, creates a ServiceNow investigation, alerts the trading desk on Slack, and logs the anomaly in Snowflake.
tags:
- trading
- bloomberg-emsx
- servicenow
- slack
- snowflake
capability:
exposes:
- type: mcp
namespace: emsx-ops
port: 8080
tools:
- name: detect-order-anomaly
description: Given a Bloomberg EMSX order anomaly, create a ServiceNow investigation, alert the trading desk, and log to Snowflake.
inputParameters:
- name: order_id
in: body
type: string
description: The Bloomberg EMSX order ID.
- name: anomaly_type
in: body
type: string
description: The type of order anomaly detected.
- name: security
in: body
type: string
description: The affected security ticker.
steps:
- name: create-investigation
type: call
call: snow-emsx.create-incident
with:
short_description: 'EMSX order anomaly: {{anomaly_type}} on {{security}}'
description: 'Order: {{order_id}}. Anomaly: {{anomaly_type}}. Security: {{security}}'
category: trading_surveillance
urgency: '1'
- name: alert-desk
type: call
call: slack-emsx.post-message
with:
channel: trading-desk
text: 'ORDER ANOMALY: {{anomaly_type}} on {{security}} (Order: {{order_id}}). Investigation: {{create-investigation.number}}'
- name: log-anomaly
type: call
call: snowflake-emsx.insert-rows
with:
table: BLOOMBERG.SURVEILLANCE.ORDER_ANOMALIES
data: '{"order_id": "{{order_id}}", "anomaly_type": "{{anomaly_type}}", "security": "{{security}}"}'
consumes:
- type: http
namespace: snow-emsx
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: 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-emsx
baseUri: 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: snowflake-emsx
baseUri: https://bloomberg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: rows
path: /databases/bloomberg/schemas/surveillance/tables/order_anomalies/insertRows
operations:
- name: insert-rows
method: POST
When a Databricks job fails, captures the error log, creates a Jira ticket for the data engineering team, and posts a failure summary to Slack.
naftiko: '0.5'
info:
label: Databricks Job Failure Response
description: When a Databricks job fails, captures the error log, creates a Jira ticket for the data engineering team, and posts a failure summary to Slack.
tags:
- data-engineering
- databricks
- jira
- slack
- pipeline
capability:
exposes:
- type: mcp
namespace: data-pipeline-ops
port: 8080
tools:
- name: handle-databricks-failure
description: Given a failed Databricks run ID, retrieve the error, create a Jira ticket, and notify the data engineering team on Slack.
inputParameters:
- name: run_id
in: body
type: string
description: The Databricks job run ID that failed.
- name: job_name
in: body
type: string
description: The name of the Databricks job.
steps:
- name: get-run-details
type: call
call: dbx-runs.get-run
with:
run_id: '{{run_id}}'
- name: create-ticket
type: call
call: jira-data.create-issue
with:
project: DATA
summary: 'Databricks job failure: {{job_name}}'
description: 'Run ID: {{run_id}}. Error: {{get-run-details.state.state_message}}'
priority: High
- name: notify-team
type: call
call: slack-data.post-message
with:
channel: data-engineering
text: 'Databricks job failed: {{job_name}} (Run: {{run_id}}). Error: {{get-run-details.state.state_message}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: dbx-runs
baseUri: https://bloomberg.cloud.databricks.com/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: runs
path: /jobs/runs/get
operations:
- name: get-run
method: GET
- type: http
namespace: jira-data
baseUri: https://bloomberg.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-data
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a high-priority ServiceNow incident is raised, looks up the on-call engineer from PagerDuty and assigns the ticket, then posts a Slack alert with full incident context.
naftiko: '0.5'
info:
label: ServiceNow Incident Triage and Escalation
description: When a high-priority ServiceNow incident is raised, looks up the on-call engineer from PagerDuty and assigns the ticket, then posts a Slack alert with full incident context.
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: triage-incident
description: Given a ServiceNow incident number, fetch incident details, look up the current on-call engineer via PagerDuty, assign the ticket to them, and post a Slack alert. Use for P1/P2 incidents requiring immediate triage.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number, e.g. 'INC0012345'.
- name: priority
in: body
type: string
description: 'The incident priority level: 1 (Critical), 2 (High), 3 (Medium).'
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: get-oncall
type: call
call: pagerduty.get-oncall-user
with:
schedule_id: $secrets.pagerduty_it_schedule_id
- name: assign-incident
type: call
call: servicenow-assign.update-incident
with:
sys_id: '{{get-incident.sys_id}}'
assigned_to: '{{get-oncall.user_email}}'
- name: alert-slack
type: call
call: slack.post-message
with:
channel: it-incidents
text: 'P{{priority}} Incident {{incident_number}}: {{get-incident.short_description}} assigned to {{get-oncall.user_name}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: oncalls
path: /oncalls
operations:
- name: get-oncall-user
method: GET
- type: http
namespace: servicenow-assign
baseUri: https://bloomberg.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incident-update
path: /table/incident/{{sys_id}}
inputParameters:
- name: sys_id
in: path
operations:
- name: update-incident
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
Triggers an Apache Spark ETL job on Azure Databricks, monitors completion, validates output in PostgreSQL, and notifies the data team via Azure Event Hubs.
naftiko: '0.5'
info:
label: Spark ETL Job Orchestration
description: Triggers an Apache Spark ETL job on Azure Databricks, monitors completion, validates output in PostgreSQL, and notifies the data team via Azure Event Hubs.
tags:
- data-engineering
- etl
- apache-spark
- azure-databricks
- postgresql
- azure-event-hubs
capability:
exposes:
- type: mcp
namespace: etl-ops
port: 8080
tools:
- name: run-etl-pipeline
description: Run a Spark ETL job on Databricks, validate output data, and notify the data team.
inputParameters:
- name: job_name
in: body
type: string
description: The Databricks job name.
- name: source_table
in: body
type: string
description: The source table for the ETL job.
- name: target_table
in: body
type: string
description: The target PostgreSQL table.
steps:
- name: run-spark-job
type: call
call: databricks.run-job
with:
job_name: '{{job_name}}'
parameters: source={{source_table}}&target={{target_table}}
- name: validate-output
type: call
call: postgresql.run-query
with:
query: SELECT COUNT(*) as row_count FROM {{target_table}} WHERE load_date = CURRENT_DATE
- name: notify-team
type: call
call: eventhubs.send-event
with:
topic: etl-completions
body: 'ETL job {{job_name}} completed. Databricks run: {{run-spark-job.run_id}}. Target: {{target_table}}. Rows loaded: {{validate-output.row_count}}.'
consumes:
- type: http
namespace: databricks
baseUri: https://adb-bnpparibas.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: postgresql
baseUri: https://pgrest.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.pgrest_token
resources:
- name: queries
path: /rpc/execute_query
operations:
- name: run-query
method: POST
- type: http
namespace: eventhubs
baseUri: https://bnpparibas-prod.servicebus.windows.net
authentication:
type: bearer
token: $secrets.eventhubs_sas_token
resources:
- name: events
path: /{{topic}}/messages
inputParameters:
- name: topic
in: path
operations:
- name: send-event
method: POST
On trade execution, captures the trade in Bloomberg AIM, books it in SimCorp Dimension, triggers settlement instruction generation in SAP, and notifies the middle office via ServiceNow.
naftiko: '0.5'
info:
label: Trade Lifecycle Orchestrator
description: On trade execution, captures the trade in Bloomberg AIM, books it in SimCorp Dimension, triggers settlement instruction generation in SAP, and notifies the middle office via ServiceNow.
tags:
- trading
- trade-operations
- bloomberg-aim
- simcorp-dimension
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-lifecycle
port: 8080
tools:
- name: process-trade
description: Given a trade reference, capture it in Bloomberg AIM, book in SimCorp, generate settlement in SAP, and notify middle office.
inputParameters:
- name: trade_ref
in: body
type: string
description: The trade reference identifier from the execution platform.
- name: portfolio_code
in: body
type: string
description: The portfolio code in SimCorp Dimension.
- name: trader_id
in: body
type: string
description: The trader's employee ID.
steps:
- name: capture-trade
type: call
call: bloomberg-aim.get-trade
with:
trade_ref: '{{trade_ref}}'
- name: book-trade
type: call
call: simcorp.create-trade
with:
portfolio_code: '{{portfolio_code}}'
instrument: '{{capture-trade.instrument}}'
quantity: '{{capture-trade.quantity}}'
price: '{{capture-trade.price}}'
trade_date: '{{capture-trade.trade_date}}'
- name: generate-settlement
type: call
call: sap.create-settlement
with:
trade_id: '{{book-trade.trade_id}}'
counterparty: '{{capture-trade.counterparty}}'
settlement_date: '{{capture-trade.settlement_date}}'
amount: '{{capture-trade.net_amount}}'
- name: notify-middle-office
type: call
call: servicenow.create-task
with:
short_description: 'Trade booked: {{trade_ref}} — {{capture-trade.instrument}}'
description: 'Trade {{trade_ref}} booked in SimCorp ({{book-trade.trade_id}}). Settlement {{generate-settlement.settlement_ref}} due {{capture-trade.settlement_date}}. Amount: {{capture-trade.net_amount}} {{capture-trade.currency}}.'
assigned_group: Middle_Office
category: trade_processing
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: trades
path: /trades/{{trade_ref}}
inputParameters:
- name: trade_ref
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: trades
path: /portfolios/{{portfolio_code}}/trades
inputParameters:
- name: portfolio_code
in: path
operations:
- name: create-trade
method: POST
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap/FI_SETTLEMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: settlements
path: /A_Settlement
operations:
- name: create-settlement
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves current positions for a given portfolio from SimCorp Dimension, returning instrument, quantity, market value, and currency.
naftiko: '0.5'
info:
label: SimCorp Dimension Position Lookup
description: Retrieves current positions for a given portfolio from SimCorp Dimension, returning instrument, quantity, market value, and currency.
tags:
- asset-management
- portfolio-management
- simcorp-dimension
capability:
exposes:
- type: mcp
namespace: investment-ops
port: 8080
tools:
- name: get-positions
description: Retrieve current positions for a portfolio from SimCorp Dimension.
inputParameters:
- name: portfolio_code
in: body
type: string
description: The SimCorp portfolio code.
call: simcorp.get-positions
with:
portfolio_code: '{{portfolio_code}}'
outputParameters:
- name: positions
type: string
mapping: $.data.positions
- name: total_market_value
type: number
mapping: $.data.totalMarketValue
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: positions
path: /portfolios/{{portfolio_code}}/positions
inputParameters:
- name: portfolio_code
in: path
operations:
- name: get-positions
method: GET
Retrieves the backlog summary for a Jira project, returning total issues, priority distribution, and sprint velocity.
naftiko: '0.5'
info:
label: Jira Project Backlog Summary
description: Retrieves the backlog summary for a Jira project, returning total issues, priority distribution, and sprint velocity.
tags:
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: jira-backlog
port: 8080
tools:
- name: get-backlog
description: Retrieve backlog summary for a Jira project.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
call: jira-backlog.search-issues
with:
jql: project = {{project_key}} AND sprint is EMPTY
consumes:
- type: http
namespace: jira-backlog
baseUri: https://bnpparibas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
Monitors Kafka payment events, scores transactions via Azure Machine Learning, blocks suspicious payments in Temenos, and alerts via ServiceNow.
naftiko: '0.5'
info:
label: Real-Time Fraud Detection Pipeline
description: Monitors Kafka payment events, scores transactions via Azure Machine Learning, blocks suspicious payments in Temenos, and alerts via ServiceNow.
tags:
- fraud
- apache-kafka
- azure-machine-learning
- temenos-transact
- servicenow
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: detect-fraud
description: Score a transaction for fraud and take action.
inputParameters:
- name: transaction_id
in: body
type: string
description: Transaction identifier.
steps:
- name: get-event
type: call
call: kafka.get-event
with:
topic: payments
key: '{{transaction_id}}'
- name: score-transaction
type: call
call: azure-ml.score
with:
features: '{{get-event.payload}}'
- name: block-payment
type: call
call: temenos.hold-transaction
with:
transaction_id: '{{transaction_id}}'
reason: 'Fraud score: {{score-transaction.score}}'
- name: create-alert
type: call
call: servicenow.create-incident
with:
short_description: 'Fraud alert: {{transaction_id}}'
description: 'Score: {{score-transaction.score}}. Amount: {{get-event.amount}}.'
category: fraud
urgency: '1'
consumes:
- type: http
namespace: kafka
baseUri: https://kafka-rest.bnpparibas.com/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: events
path: /topics/{{topic}}/records/{{key}}
inputParameters:
- name: topic
in: path
- name: key
in: path
operations:
- name: get-event
method: GET
- type: http
namespace: azure-ml
baseUri: https://ml-bnp.azureml.net/api/v1
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: scoring
path: /models/fraud-detector/score
operations:
- name: score
method: POST
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: transactions
path: /transactions/{{transaction_id}}/hold
inputParameters:
- name: transaction_id
in: path
operations:
- name: hold-transaction
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Fetches opportunity details from Salesforce CRM by opportunity ID, returning stage, value, and expected close date.
naftiko: '0.5'
info:
label: Salesforce Client Opportunity Lookup
description: Fetches opportunity details from Salesforce CRM by opportunity ID, returning stage, value, and expected close date.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce-crm
port: 8080
tools:
- name: get-opportunity
description: Retrieve a Salesforce opportunity by ID.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity identifier.
call: salesforce-crm.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
consumes:
- type: http
namespace: salesforce-crm
baseUri: https://bnpparibas.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
Closes accounts in Temenos, archives records in Azure Blob Storage, updates Salesforce CRM, and completes offboarding in ServiceNow.
naftiko: '0.5'
info:
label: Client Offboarding Orchestrator
description: Closes accounts in Temenos, archives records in Azure Blob Storage, updates Salesforce CRM, and completes offboarding in ServiceNow.
tags:
- operations
- temenos-transact
- azure-blob-storage
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: client-offboarding
port: 8080
tools:
- name: offboard-client
description: Close client accounts and archive records.
inputParameters:
- name: client_id
in: body
type: string
description: Salesforce client ID.
steps:
- name: get-client
type: call
call: salesforce.get-account
with:
account_id: '{{client_id}}'
- name: close-accounts
type: call
call: temenos.close-customer
with:
customer_id: '{{get-client.Temenos_ID__c}}'
- name: archive-records
type: call
call: azure-blob.upload
with:
container: client-archives
blob_name: '{{client_id}}/records.json'
- name: complete-offboarding
type: call
call: servicenow.create-task
with:
short_description: 'Client offboarding: {{get-client.Name}}'
description: 'Accounts closed. Records archived. Salesforce: {{client_id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://bnpparibas.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: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: customers
path: /customers/{{customer_id}}/close
inputParameters:
- name: customer_id
in: path
operations:
- name: close-customer
method: POST
- type: http
namespace: azure-blob
baseUri: https://bnpdata.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: upload
method: PUT
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Fetches FX rates from Bloomberg, executes hedging trades via Tradeweb, books in SimCorp Dimension, and confirms via SWIFT.
naftiko: '0.5'
info:
label: FX Hedging Execution Workflow
description: Fetches FX rates from Bloomberg, executes hedging trades via Tradeweb, books in SimCorp Dimension, and confirms via SWIFT.
tags:
- fx
- bloomberg
- tradeweb
- simcorp-dimension
- swift
capability:
exposes:
- type: mcp
namespace: fx-hedging
port: 8080
tools:
- name: execute-hedge
description: Execute an FX hedge across Bloomberg, Tradeweb, SimCorp, and SWIFT.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair (e.g. EUR/USD).
- name: notional
in: body
type: number
description: Notional amount.
- name: portfolio_code
in: body
type: string
description: SimCorp portfolio code.
steps:
- name: get-rate
type: call
call: bloomberg.get-fx-rate
with:
pair: '{{currency_pair}}'
- name: execute-trade
type: call
call: tradeweb.submit-rfq
with:
currency_pair: '{{currency_pair}}'
amount: '{{notional}}'
- name: book-trade
type: call
call: simcorp.create-trade
with:
portfolio_code: '{{portfolio_code}}'
instrument: '{{currency_pair}}'
amount: '{{notional}}'
rate: '{{execute-trade.rate}}'
- name: confirm-trade
type: call
call: swift.send-mt300
with:
trade_ref: '{{book-trade.trade_id}}'
counterparty: '{{execute-trade.counterparty_bic}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: fx
path: /snapshots/{{pair}}
inputParameters:
- name: pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: rfqs
path: /fx/rfq
operations:
- name: submit-rfq
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: trades
path: /portfolios/{{portfolio_code}}/trades
inputParameters:
- name: portfolio_code
in: path
operations:
- name: create-trade
method: POST
- type: http
namespace: swift
baseUri: https://swift.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages/mt300
operations:
- name: send-mt300
method: POST
Orchestrates Know Your Customer onboarding by retrieving client data from Salesforce, running screening against Moody's, creating a compliance case in ServiceNow, and notifying the relationship manager via SharePoint.
naftiko: '0.5'
info:
label: KYC Client Onboarding Pipeline
description: Orchestrates Know Your Customer onboarding by retrieving client data from Salesforce, running screening against Moody's, creating a compliance case in ServiceNow, and notifying the relationship manager via SharePoint.
tags:
- compliance
- know-your-customer
- salesforce
- moodys
- servicenow
- sharepoint
capability:
exposes:
- type: mcp
namespace: kyc-onboarding
port: 8080
tools:
- name: onboard-client
description: Given a Salesforce account ID, run KYC screening, create compliance case, and provision client documentation folder.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the new client.
- name: compliance_officer_id
in: body
type: string
description: The Workday ID of the assigned compliance officer.
steps:
- name: get-client
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: screen-entity
type: call
call: moodys.screen-entity
with:
entity_name: '{{get-client.Name}}'
country: '{{get-client.BillingCountry}}'
- name: get-officer
type: call
call: workday.get-worker
with:
worker_id: '{{compliance_officer_id}}'
- name: create-case
type: call
call: servicenow.create-case
with:
short_description: 'KYC onboarding: {{get-client.Name}}'
description: 'New client KYC screening result: {{screen-entity.risk_level}}. Screening score: {{screen-entity.score}}. Assigned to: {{get-officer.full_name}}.'
assigned_group: Compliance_KYC
category: kyc_onboarding
- name: provision-folder
type: call
call: sharepoint.create-folder
with:
site_id: compliance_kyc_site
folder_path: KYC/{{get-client.Name}}_{{account_id}}
consumes:
- type: http
namespace: salesforce
baseUri: https://bnpparibas.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: moodys
baseUri: https://api.moodys.com/screening/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: entities
path: /screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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: 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
Screens outgoing payments against sanctions lists, logs results in Oracle, holds flagged payments in SAP, and alerts compliance via ServiceNow.
naftiko: '0.5'
info:
label: Payment Sanctions Screening Pipeline
description: Screens outgoing payments against sanctions lists, logs results in Oracle, holds flagged payments in SAP, and alerts compliance via ServiceNow.
tags:
- compliance
- oracle
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: sanctions-screen
port: 8080
tools:
- name: screen-payment
description: Screen a payment against sanctions with hold and alert capabilities.
inputParameters:
- name: payment_ref
in: body
type: string
description: Payment reference.
- name: beneficiary_name
in: body
type: string
description: Beneficiary name.
steps:
- name: run-screening
type: call
call: oracle.screen-payment
with:
payment_ref: '{{payment_ref}}'
name: '{{beneficiary_name}}'
- name: log-result
type: call
call: oracle.log-screening
with:
payment_ref: '{{payment_ref}}'
result: '{{run-screening.result}}'
- name: hold-payment
type: call
call: sap.hold-payment
with:
payment_ref: '{{payment_ref}}'
reason: '{{run-screening.match_details}}'
- name: alert-compliance
type: call
call: servicenow.create-incident
with:
short_description: 'Sanctions hit: {{payment_ref}}'
description: 'Beneficiary: {{beneficiary_name}}. Match: {{run-screening.match_details}}.'
category: sanctions
urgency: '1'
consumes:
- type: http
namespace: oracle
baseUri: https://oracle.bnpparibas.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: screening
path: /sanctions/screen
operations:
- name: screen-payment
method: POST
- name: logs
path: /sanctions/logs
operations:
- name: log-screening
method: POST
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /FI_PAYMENT_SRV/A_Payment
operations:
- name: hold-payment
method: PATCH
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/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 Docker container scans, checks Kubernetes config compliance, logs findings in Elasticsearch, and creates Jira tickets for remediation.
naftiko: '0.5'
info:
label: Infrastructure Security Scan Pipeline
description: Runs Docker container scans, checks Kubernetes config compliance, logs findings in Elasticsearch, and creates Jira tickets for remediation.
tags:
- security
- docker
- kubernetes
- elasticsearch
- jira
capability:
exposes:
- type: mcp
namespace: infra-security
port: 8080
tools:
- name: scan-infrastructure
description: Run security scans across container and Kubernetes infrastructure.
inputParameters:
- name: namespace
in: body
type: string
description: Kubernetes namespace to scan.
steps:
- name: scan-containers
type: call
call: docker.scan-images
with:
namespace: '{{namespace}}'
- name: check-compliance
type: call
call: kubernetes.audit-config
with:
namespace: '{{namespace}}'
- name: log-findings
type: call
call: elasticsearch.index-document
with:
index: security-scans
body: '{{scan-containers.results}}'
- name: create-tickets
type: call
call: jira.create-issue
with:
project: SEC
summary: 'Security scan: {{namespace}} — {{scan-containers.vulnerability_count}} findings'
description: 'Container vulns: {{scan-containers.vulnerability_count}}. Config issues: {{check-compliance.issue_count}}.'
issue_type: Bug
consumes:
- type: http
namespace: docker
baseUri: https://registry.bnpparibas.com/v2
authentication:
type: bearer
token: $secrets.registry_token
resources:
- name: scans
path: /scans
operations:
- name: scan-images
method: POST
- type: http
namespace: kubernetes
baseUri: https://aks.bnpparibas.com/apis/v1
authentication:
type: bearer
token: $secrets.k8s_token
resources:
- name: audit
path: /namespaces/{{namespace}}/audit
inputParameters:
- name: namespace
in: path
operations:
- name: audit-config
method: GET
- type: http
namespace: elasticsearch
baseUri: https://elastic.bnpparibas.com
authentication:
type: basic
username: $secrets.elastic_user
password: $secrets.elastic_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
- type: http
namespace: jira
baseUri: https://bnpparibas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Extracts reporting data from Snowflake, validates via compliance rules in SimCorp Dimension, and submits to regulatory portal with ServiceNow tracking.
naftiko: '0.5'
info:
label: Regulatory Filing Submission Pipeline
description: Extracts reporting data from Snowflake, validates via compliance rules in SimCorp Dimension, and submits to regulatory portal with ServiceNow tracking.
tags:
- compliance
- snowflake
- simcorp-dimension
- servicenow
capability:
exposes:
- type: mcp
namespace: regulatory-filing
port: 8080
tools:
- name: submit-regulatory-filing
description: Extract, validate, and submit a regulatory filing.
inputParameters:
- name: report_code
in: body
type: string
description: Regulatory report code.
- name: reporting_date
in: body
type: string
description: Reporting date YYYY-MM-DD.
steps:
- name: extract-data
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM regulatory.{{report_code}} WHERE reporting_date = '{{reporting_date}}'
- name: validate-positions
type: call
call: simcorp-api.get-positions
with:
report_code: '{{report_code}}'
date: '{{reporting_date}}'
- name: track-submission
type: call
call: servicenow-api.create-incident
with:
short_description: 'Regulatory filing: {{report_code}} for {{reporting_date}}'
description: 'Records: {{extract-data.count}}. Positions validated: {{validate-positions.count}}.'
category: regulatory_filing
consumes:
- type: http
namespace: snowflake-api
baseUri: https://bnpparibas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: simcorp-api
baseUri: https://simcorp.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: positions
path: /portfolios/positions
operations:
- name: get-positions
method: GET
- type: http
namespace: servicenow-api
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
On corporate action announcement from Bloomberg, identifies impacted portfolios in SimCorp Dimension, calculates entitlements, books adjustments in SAP, and notifies portfolio managers.
naftiko: '0.5'
info:
label: Corporate Action Processing Orchestrator
description: On corporate action announcement from Bloomberg, identifies impacted portfolios in SimCorp Dimension, calculates entitlements, books adjustments in SAP, and notifies portfolio managers.
tags:
- corporate-actions
- asset-management
- bloomberg
- simcorp-dimension
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: corporate-actions
port: 8080
tools:
- name: process-corporate-action
description: On corporate action event, identify impacted portfolios, calculate entitlements, book adjustments, and notify managers.
inputParameters:
- name: event_id
in: body
type: string
description: The Bloomberg corporate action event identifier.
- name: isin
in: body
type: string
description: The ISIN of the affected security.
steps:
- name: get-event
type: call
call: bloomberg.get-corporate-action
with:
event_id: '{{event_id}}'
- name: find-portfolios
type: call
call: simcorp.search-holdings
with:
isin: '{{isin}}'
- name: book-adjustment
type: call
call: sap.create-adjustment
with:
event_type: '{{get-event.action_type}}'
isin: '{{isin}}'
ratio: '{{get-event.ratio}}'
ex_date: '{{get-event.ex_date}}'
portfolio_count: '{{find-portfolios.count}}'
- name: notify-managers
type: call
call: servicenow.create-task
with:
short_description: 'Corporate action: {{get-event.action_type}} on {{isin}}'
description: 'Event: {{get-event.description}}. Ex-date: {{get-event.ex_date}}. Ratio: {{get-event.ratio}}. Impacted portfolios: {{find-portfolios.count}}. SAP adjustment ref: {{book-adjustment.adjustment_ref}}.'
assigned_group: Portfolio_Management
category: corporate_action
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: corporate-actions
path: /corporate-actions/{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-corporate-action
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: holdings
path: /holdings/search
operations:
- name: search-holdings
method: POST
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap/FI_CORP_ACTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: adjustments
path: /A_Adjustment
operations:
- name: create-adjustment
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Queries FactSet for current portfolio holdings by portfolio ID, returning asset allocation, top positions, and total NAV.
naftiko: '0.5'
info:
label: FactSet Portfolio Holdings
description: Queries FactSet for current portfolio holdings by portfolio ID, returning asset allocation, top positions, and total NAV.
tags:
- asset-management
- portfolio-management
- factset
capability:
exposes:
- type: mcp
namespace: portfolio
port: 8080
tools:
- name: get-portfolio-holdings
description: Retrieve current holdings for a given portfolio from FactSet, including top positions and net asset value.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The FactSet portfolio identifier.
call: factset.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
outputParameters:
- name: total_nav
type: number
mapping: $.data.totalNAV
- name: holdings_count
type: number
mapping: $.data.holdingsCount
- name: top_positions
type: string
mapping: $.data.topPositions
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/analytics/portfolio/v3
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
Triggers a GitHub Actions deployment pipeline, monitors build status, scans with SonarQube for code quality, deploys to Azure Kubernetes Service, and logs the release in ServiceNow.
naftiko: '0.5'
info:
label: CI/CD Pipeline Deployment Orchestrator
description: Triggers a GitHub Actions deployment pipeline, monitors build status, scans with SonarQube for code quality, deploys to Azure Kubernetes Service, and logs the release in ServiceNow.
tags:
- development
- ci-cd
- github-actions
- sonarqube
- azure-kubernetes-service
- servicenow
capability:
exposes:
- type: mcp
namespace: cicd
port: 8080
tools:
- name: deploy-service
description: Trigger a full CI/CD deployment from GitHub Actions through quality gate to AKS, with ServiceNow change tracking.
inputParameters:
- name: repository
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: branch
in: body
type: string
description: The branch to deploy.
- name: environment
in: body
type: string
description: Target environment (staging, production).
steps:
- name: trigger-build
type: call
call: github.trigger-workflow
with:
repository: '{{repository}}'
workflow: deploy.yml
ref: '{{branch}}'
- name: quality-scan
type: call
call: sonarqube.get-quality-gate
with:
project_key: '{{repository}}'
- name: deploy-to-aks
type: call
call: aks.create-deployment
with:
cluster: bnp-{{environment}}-cluster
namespace: '{{repository}}'
image_tag: '{{trigger-build.sha}}'
- name: log-change
type: call
call: servicenow.create-change
with:
short_description: 'Deployment: {{repository}} to {{environment}}'
description: 'Branch: {{branch}}. Commit: {{trigger-build.sha}}. SonarQube gate: {{quality-scan.status}}. AKS deployment: {{deploy-to-aks.deployment_id}}.'
assigned_group: Platform_Engineering
category: deployment
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /repos/{{repository}}/actions/workflows/{{workflow}}/dispatches
inputParameters:
- name: repository
in: path
- name: workflow
in: path
operations:
- name: trigger-workflow
method: POST
- type: http
namespace: sonarqube
baseUri: https://sonarqube.bnpparibas.net/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: quality-gates
path: /qualitygates/project_status?projectKey={{project_key}}
inputParameters:
- name: project_key
in: path
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: aks
baseUri: https://management.azure.com/subscriptions/{{sub_id}}/resourceGroups/bnp-rg/providers/Microsoft.ContainerService/managedClusters
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: deployments
path: /{{cluster}}/deployments
inputParameters:
- name: cluster
in: path
operations:
- name: create-deployment
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Validates payment in SAP, converts currency via Bloomberg FX, routes through SWIFT, and tracks delivery in ServiceNow.
naftiko: '0.5'
info:
label: Cross-Border Payment Processing Pipeline
description: Validates payment in SAP, converts currency via Bloomberg FX, routes through SWIFT, and tracks delivery in ServiceNow.
tags:
- payments
- sap
- bloomberg
- swift
- servicenow
capability:
exposes:
- type: mcp
namespace: xborder-payment
port: 8080
tools:
- name: process-cross-border-payment
description: Process and track a cross-border payment end-to-end.
inputParameters:
- name: payment_id
in: body
type: string
description: SAP payment instruction ID.
steps:
- name: get-payment
type: call
call: sap.get-payment
with:
payment_id: '{{payment_id}}'
- name: get-fx-rate
type: call
call: bloomberg.get-fx-rate
with:
pair: '{{get-payment.currency_pair}}'
- name: send-swift
type: call
call: swift.send-mt103
with:
payment_ref: '{{payment_id}}'
amount: '{{get-payment.amount}}'
rate: '{{get-fx-rate.mid}}'
- name: track-delivery
type: call
call: servicenow.create-task
with:
short_description: 'Cross-border payment: {{payment_id}}'
description: 'Amount: {{get-payment.amount}}. FX: {{get-fx-rate.mid}}. SWIFT: {{send-swift.uetr}}.'
consumes:
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /FI_PAYMENT_SRV/A_Payment('{{payment_id}}')
inputParameters:
- name: payment_id
in: path
operations:
- name: get-payment
method: GET
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: fx
path: /snapshots/{{pair}}
inputParameters:
- name: pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: swift
baseUri: https://swift.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages/mt103
operations:
- name: send-mt103
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Checks the status of an Azure DevOps build pipeline, returning latest run result, duration, and artifact links.
naftiko: '0.5'
info:
label: Azure DevOps Pipeline Status
description: Checks the status of an Azure DevOps build pipeline, returning latest run result, duration, and artifact links.
tags:
- cicd
- azure-devops
capability:
exposes:
- type: mcp
namespace: azdo-pipelines
port: 8080
tools:
- name: get-pipeline-status
description: Retrieve the latest pipeline run status from Azure DevOps.
inputParameters:
- name: project
in: body
type: string
description: Azure DevOps project name.
- name: pipeline_id
in: body
type: string
description: Pipeline identifier.
call: azdo-pipelines.get-runs
with:
project: '{{project}}'
pipeline_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: azdo-pipelines
baseUri: https://dev.azure.com/bnpparibas
authentication:
type: bearer
token: $secrets.azdo_token
resources:
- name: runs
path: /{{project}}/_apis/pipelines/{{pipeline_id}}/runs
inputParameters:
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: get-runs
method: GET
Triggers a Qlik Sense app reload, exports the report as PDF, uploads to SharePoint for stakeholder access, and notifies recipients via Azure Service Bus.
naftiko: '0.5'
info:
label: Qlik Sense Report Distribution
description: Triggers a Qlik Sense app reload, exports the report as PDF, uploads to SharePoint for stakeholder access, and notifies recipients via Azure Service Bus.
tags:
- analytics
- reporting
- qlik-sense
- sharepoint
- azure-service-bus
capability:
exposes:
- type: mcp
namespace: report-distribution
port: 8080
tools:
- name: distribute-report
description: Reload Qlik Sense app, export PDF, upload to SharePoint, and notify stakeholders.
inputParameters:
- name: app_id
in: body
type: string
description: The Qlik Sense application ID.
- name: report_name
in: body
type: string
description: The report name for file naming.
- name: distribution_list
in: body
type: string
description: Comma-separated list of recipient email addresses.
steps:
- name: reload-app
type: call
call: qlik.reload-app
with:
app_id: '{{app_id}}'
- name: export-pdf
type: call
call: qlik.export-report
with:
app_id: '{{app_id}}'
format: pdf
- name: upload-report
type: call
call: sharepoint.create-file
with:
site_id: reports_distribution
file_path: Reports/{{report_name}}/{{report_name}}_latest.pdf
content_type: application/pdf
- name: notify-recipients
type: call
call: servicebus.send-message
with:
queue: report-notifications
body: 'Report {{report_name}} is ready. Download: {{upload-report.url}}. Recipients: {{distribution_list}}.'
consumes:
- type: http
namespace: qlik
baseUri: https://qlik.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: apps
path: /apps/{{app_id}}/reload
inputParameters:
- name: app_id
in: path
operations:
- name: reload-app
method: POST
- name: exports
path: /apps/{{app_id}}/export/{{format}}
inputParameters:
- name: app_id
in: path
- name: format
in: path
operations:
- name: export-report
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: servicebus
baseUri: https://bnpparibas-prod.servicebus.windows.net
authentication:
type: bearer
token: $secrets.servicebus_sas_token
resources:
- name: queues
path: /{{queue}}/messages
inputParameters:
- name: queue
in: path
operations:
- name: send-message
method: POST
Provisions infrastructure via Terraform, registers resources in ServiceNow CMDB, configures monitoring in Datadog, and notifies the platform team.
naftiko: '0.5'
info:
label: Terraform Cloud Provisioning Pipeline
description: Provisions infrastructure via Terraform, registers resources in ServiceNow CMDB, configures monitoring in Datadog, and notifies the platform team.
tags:
- infrastructure
- terraform
- servicenow
- datadog
capability:
exposes:
- type: mcp
namespace: infra-provision
port: 8080
tools:
- name: provision-infrastructure
description: Provision infrastructure with CMDB registration and monitoring setup.
inputParameters:
- name: workspace_id
in: body
type: string
description: Terraform workspace ID.
- name: environment
in: body
type: string
description: Target environment.
steps:
- name: create-run
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
message: Provision {{environment}}
- name: register-cmdb
type: call
call: servicenow.create-ci
with:
name: '{{workspace_id}}-{{environment}}'
environment: '{{environment}}'
- name: setup-monitoring
type: call
call: datadog.create-monitor
with:
name: 'Infra health: {{workspace_id}}'
type: metric alert
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://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci
operations:
- name: create-ci
method: POST
- 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: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
Collects Tyk gateway metrics, analyzes patterns in Elasticsearch, generates dashboards in Grafana, and alerts on anomalies via Slack.
naftiko: '0.5'
info:
label: API Gateway Traffic Analysis Pipeline
description: Collects Tyk gateway metrics, analyzes patterns in Elasticsearch, generates dashboards in Grafana, and alerts on anomalies via Slack.
tags:
- api-management
- tyk
- elasticsearch
- grafana
capability:
exposes:
- type: mcp
namespace: api-traffic
port: 8080
tools:
- name: analyze-traffic
description: Analyze API gateway traffic with dashboards and anomaly alerting.
inputParameters:
- name: api_id
in: body
type: string
description: Tyk API identifier.
steps:
- name: get-metrics
type: call
call: tyk.get-analytics
with:
api_id: '{{api_id}}'
- name: index-data
type: call
call: elasticsearch.index-document
with:
index: api-traffic
body: '{{get-metrics.data}}'
- name: update-dashboard
type: call
call: grafana.update-dashboard
with:
dashboard_id: api-traffic-{{api_id}}
consumes:
- type: http
namespace: tyk
baseUri: https://tyk.bnpparibas.com/api
authentication:
type: apiKey
name: x-tyk-authorization
in: header
value: $secrets.tyk_api_key
resources:
- name: analytics
path: /apis/{{api_id}}/analytics
inputParameters:
- name: api_id
in: path
operations:
- name: get-analytics
method: GET
- type: http
namespace: elasticsearch
baseUri: https://elastic.bnpparibas.com
authentication:
type: basic
username: $secrets.elastic_user
password: $secrets.elastic_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
- type: http
namespace: grafana
baseUri: https://grafana.bnpparibas.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: dashboards
path: /dashboards/db/{{dashboard_id}}
inputParameters:
- name: dashboard_id
in: path
operations:
- name: update-dashboard
method: POST
Calculates margin requirements from SimCorp, generates collateral calls, sends via SWIFT, and tracks responses in ServiceNow.
naftiko: '0.5'
info:
label: Collateral Call Processing Workflow
description: Calculates margin requirements from SimCorp, generates collateral calls, sends via SWIFT, and tracks responses in ServiceNow.
tags:
- collateral
- simcorp-dimension
- swift
- servicenow
capability:
exposes:
- type: mcp
namespace: collateral-calls
port: 8080
tools:
- name: process-collateral-call
description: Calculate margin and process collateral calls.
inputParameters:
- name: counterparty_id
in: body
type: string
description: Counterparty identifier.
steps:
- name: calculate-margin
type: call
call: simcorp.calculate-margin
with:
counterparty_id: '{{counterparty_id}}'
- name: send-call
type: call
call: swift.send-mt503
with:
counterparty: '{{counterparty_id}}'
amount: '{{calculate-margin.call_amount}}'
- name: track-response
type: call
call: servicenow.create-task
with:
short_description: 'Collateral call: {{counterparty_id}}'
description: 'Amount: {{calculate-margin.call_amount}}. SWIFT: {{send-call.reference}}.'
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: margin
path: /counterparties/{{counterparty_id}}/margin
inputParameters:
- name: counterparty_id
in: path
operations:
- name: calculate-margin
method: POST
- type: http
namespace: swift
baseUri: https://swift.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages/mt503
operations:
- name: send-mt503
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves the current Moody's credit rating for an issuer by entity ID, returning rating, outlook, and last action date.
naftiko: '0.5'
info:
label: Moody Credit Rating Lookup
description: Retrieves the current Moody's credit rating for an issuer by entity ID, returning rating, outlook, and last action date.
tags:
- credit-risk
- moodys
capability:
exposes:
- type: mcp
namespace: moodys
port: 8080
tools:
- name: get-credit-rating
description: Look up the Moody's credit rating for an issuer.
inputParameters:
- name: entity_id
in: body
type: string
description: The Moody's entity identifier.
call: moodys.get-rating
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: moodys
baseUri: https://api.moodys.com/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: ratings
path: /issuers/{{entity_id}}/ratings
inputParameters:
- name: entity_id
in: path
operations:
- name: get-rating
method: GET
Pulls access records from Azure Active Directory, generates a review report in SharePoint, routes approvals via ServiceNow, and revokes stale access.
naftiko: '0.5'
info:
label: Employee Access Review Workflow
description: Pulls access records from Azure Active Directory, generates a review report in SharePoint, routes approvals via ServiceNow, and revokes stale access.
tags:
- security
- azure-active-directory
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: review-access
description: Audit employee access and revoke stale permissions.
inputParameters:
- name: department
in: body
type: string
description: Department to review.
steps:
- name: get-users
type: call
call: azure-ad.list-users
with:
department: '{{department}}'
- name: store-report
type: call
call: sharepoint.create-file
with:
site_id: security
path: AccessReviews/{{department}}/review.json
- name: create-approval
type: call
call: servicenow.create-change-request
with:
short_description: 'Access review: {{department}}'
description: 'Users reviewed: {{get-users.count}}. Report: {{store-report.url}}.'
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
inputParameters:
- name: department
in: query
operations:
- name: list-users
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:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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-request
method: POST
Pulls portfolio positions from SimCorp Dimension, runs Value-at-Risk computation in Azure Databricks, stores results in Azure Data Factory, and publishes to the risk dashboard in Power BI.
naftiko: '0.5'
info:
label: Market Risk VaR Computation Pipeline
description: Pulls portfolio positions from SimCorp Dimension, runs Value-at-Risk computation in Azure Databricks, stores results in Azure Data Factory, and publishes to the risk dashboard in Power BI.
tags:
- market-risk
- risk-management
- simcorp-dimension
- azure-databricks
- azure-data-factory
- power-bi
capability:
exposes:
- type: mcp
namespace: market-risk
port: 8080
tools:
- name: compute-var
description: Run end-of-day VaR computation for a portfolio, store results, and refresh risk dashboard.
inputParameters:
- name: portfolio_code
in: body
type: string
description: The SimCorp portfolio code.
- name: valuation_date
in: body
type: string
description: The valuation date in YYYY-MM-DD format.
- name: confidence_level
in: body
type: number
description: VaR confidence level (e.g. 0.99).
steps:
- name: get-positions
type: call
call: simcorp.get-positions
with:
portfolio_code: '{{portfolio_code}}'
- name: run-var-model
type: call
call: databricks.run-job
with:
job_name: var_computation
parameters: portfolio={{portfolio_code}}&date={{valuation_date}}&confidence={{confidence_level}}&positions_count={{get-positions.total_market_value}}
- name: store-results
type: call
call: adf.trigger-pipeline
with:
pipeline_name: var_results_load
parameters: run_id={{run-var-model.run_id}}&portfolio={{portfolio_code}}&date={{valuation_date}}
- name: refresh-risk-dashboard
type: call
call: powerbi.refresh-dataset
with:
workspace_id: risk_management
dataset_id: market_risk_var
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: positions
path: /portfolios/{{portfolio_code}}/positions
inputParameters:
- name: portfolio_code
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: databricks
baseUri: https://adb-bnpparibas.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: adf
baseUri: https://management.azure.com/subscriptions/{{sub_id}}/resourceGroups/bnp-rg/providers/Microsoft.DataFactory/factories/bnp-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: trigger-pipeline
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Creates a new Kubernetes namespace on AKS with resource quotas, configures Hashicorp Vault secrets injection, and registers the namespace in ServiceNow CMDB.
naftiko: '0.5'
info:
label: Kubernetes Namespace Provisioning
description: Creates a new Kubernetes namespace on AKS with resource quotas, configures Hashicorp Vault secrets injection, and registers the namespace in ServiceNow CMDB.
tags:
- platform-engineering
- kubernetes
- azure-kubernetes-service
- hashicorp-vault
- servicenow
capability:
exposes:
- type: mcp
namespace: k8s-provisioning
port: 8080
tools:
- name: provision-namespace
description: Create AKS namespace with quotas, configure Vault secrets, and register in CMDB.
inputParameters:
- name: namespace_name
in: body
type: string
description: The Kubernetes namespace to create.
- name: team
in: body
type: string
description: The owning team name.
- name: environment
in: body
type: string
description: Target environment (dev, staging, production).
steps:
- name: create-namespace
type: call
call: aks.create-namespace
with:
cluster: bnp-{{environment}}-cluster
namespace: '{{namespace_name}}'
labels: team={{team}},env={{environment}}
- name: configure-vault
type: call
call: vault.create-policy
with:
policy_name: '{{namespace_name}}-{{environment}}'
path: secret/data/{{environment}}/{{namespace_name}}/*
capabilities: read,list
- name: register-cmdb
type: call
call: servicenow.create-ci
with:
name: k8s-ns-{{namespace_name}}-{{environment}}
class: cmdb_ci_kubernetes_namespace
environment: '{{environment}}'
owned_by: '{{team}}'
description: 'Kubernetes namespace {{namespace_name}} on {{environment}} cluster. Vault policy: {{configure-vault.policy_name}}.'
consumes:
- type: http
namespace: aks
baseUri: https://management.azure.com/subscriptions/{{sub_id}}/resourceGroups/bnp-rg/providers/Microsoft.ContainerService/managedClusters
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: namespaces
path: /{{cluster}}/namespaces
inputParameters:
- name: cluster
in: path
operations:
- name: create-namespace
method: POST
- type: http
namespace: vault
baseUri: https://vault.bnpparibas.net/v1
authentication:
type: bearer
token: $secrets.vault_token
resources:
- name: policies
path: /sys/policies/acl/{{policy_name}}
inputParameters:
- name: policy_name
in: path
operations:
- name: create-policy
method: PUT
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci
operations:
- name: create-ci
method: POST
Pulls fund positions from SimCorp Dimension, retrieves market prices from Bloomberg, computes NAV in Azure Databricks, publishes results to Oracle Database, and refreshes the fund reporting dashboard.
naftiko: '0.5'
info:
label: Fund Accounting NAV Calculation Pipeline
description: Pulls fund positions from SimCorp Dimension, retrieves market prices from Bloomberg, computes NAV in Azure Databricks, publishes results to Oracle Database, and refreshes the fund reporting dashboard.
tags:
- fund-accounting
- asset-management
- simcorp-dimension
- bloomberg
- azure-databricks
- oracle-database
- power-bi
capability:
exposes:
- type: mcp
namespace: fund-accounting
port: 8080
tools:
- name: calculate-nav
description: Calculate net asset value for a fund by pulling positions, pricing, computing, and publishing.
inputParameters:
- name: fund_code
in: body
type: string
description: The SimCorp fund/portfolio code.
- name: valuation_date
in: body
type: string
description: The NAV valuation date in YYYY-MM-DD format.
steps:
- name: get-positions
type: call
call: simcorp.get-positions
with:
portfolio_code: '{{fund_code}}'
- name: get-prices
type: call
call: bloomberg.get-bulk-prices
with:
date: '{{valuation_date}}'
universe: fund_{{fund_code}}
- name: compute-nav
type: call
call: databricks.run-job
with:
job_name: nav_calculation
parameters: fund={{fund_code}}&date={{valuation_date}}&positions_value={{get-positions.total_market_value}}
- name: publish-nav
type: call
call: oracle.execute-procedure
with:
procedure: pkg_fund_nav.publish_nav
parameters: fund_code={{fund_code}}&nav_date={{valuation_date}}&nav_value={{compute-nav.nav_value}}
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
workspace_id: fund_reporting
dataset_id: fund_nav_daily
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: positions
path: /portfolios/{{portfolio_code}}/positions
inputParameters:
- name: portfolio_code
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: bulk-prices
path: /universes/{{universe}}/prices?date={{date}}
inputParameters:
- name: universe
in: path
- name: date
in: path
operations:
- name: get-bulk-prices
method: GET
- type: http
namespace: databricks
baseUri: https://adb-bnpparibas.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: oracle
baseUri: https://ords.bnpparibas.net/ords/fund
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: procedures
path: /{{procedure}}
inputParameters:
- name: procedure
in: path
operations:
- name: execute-procedure
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/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Deploys a trained ML model from Azure Machine Learning to a real-time endpoint, validates with SonarQube code quality, and registers the deployment in ServiceNow CMDB.
naftiko: '0.5'
info:
label: Azure Machine Learning Model Deployment
description: Deploys a trained ML model from Azure Machine Learning to a real-time endpoint, validates with SonarQube code quality, and registers the deployment in ServiceNow CMDB.
tags:
- machine-learning
- azure-machine-learning
- sonarqube
- servicenow
capability:
exposes:
- type: mcp
namespace: ml-ops
port: 8080
tools:
- name: deploy-model
description: Deploy an Azure ML model to a managed endpoint, validate quality, and register in CMDB.
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 target managed online endpoint name.
steps:
- name: deploy-endpoint
type: call
call: azureml.create-deployment
with:
model_name: '{{model_name}}'
model_version: '{{model_version}}'
endpoint_name: '{{endpoint_name}}'
- name: quality-check
type: call
call: sonarqube.get-quality-gate
with:
project_key: ml-{{model_name}}
- name: register-cmdb
type: call
call: servicenow.create-ci
with:
name: ml-model-{{model_name}}-v{{model_version}}
class: cmdb_ci_ml_model
description: 'Model {{model_name}} v{{model_version}} deployed to endpoint {{endpoint_name}}. Quality gate: {{quality-check.status}}. Deployment ID: {{deploy-endpoint.deployment_id}}.'
owned_by: Data_Science
consumes:
- type: http
namespace: azureml
baseUri: https://ml.azure.com/api/subscriptions/{{sub_id}}/resourceGroups/bnp-rg/providers/Microsoft.MachineLearningServices/workspaces/bnp-ml
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: deployments
path: /endpoints/{{endpoint_name}}/deployments
inputParameters:
- name: endpoint_name
in: path
operations:
- name: create-deployment
method: POST
- type: http
namespace: sonarqube
baseUri: https://sonarqube.bnpparibas.net/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: quality-gates
path: /qualitygates/project_status?projectKey={{project_key}}
inputParameters:
- name: project_key
in: path
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci
operations:
- name: create-ci
method: POST
Creates a loan application in Temenos, runs credit checks via Moody's, generates documents in Salesforce, and tracks approval in ServiceNow.
naftiko: '0.5'
info:
label: Loan Origination Orchestrator
description: Creates a loan application in Temenos, runs credit checks via Moody's, generates documents in Salesforce, and tracks approval in ServiceNow.
tags:
- lending
- temenos-transact
- moodys
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: loan-origination
port: 8080
tools:
- name: originate-loan
description: Process a loan application end-to-end.
inputParameters:
- name: customer_id
in: body
type: string
description: Temenos customer ID.
- name: loan_amount
in: body
type: number
description: Requested loan amount.
steps:
- name: create-application
type: call
call: temenos.create-loan
with:
customer_id: '{{customer_id}}'
amount: '{{loan_amount}}'
- name: check-credit
type: call
call: moodys.get-rating
with:
entity_id: '{{customer_id}}'
- name: generate-docs
type: call
call: salesforce.create-task
with:
subject: 'Loan docs: {{customer_id}} — {{loan_amount}}'
description: 'Credit rating: {{check-credit.rating}}. Application: {{create-application.loan_id}}.'
- name: track-approval
type: call
call: servicenow.create-change-request
with:
short_description: 'Loan approval: {{create-application.loan_id}}'
description: 'Amount: {{loan_amount}}. Rating: {{check-credit.rating}}.'
consumes:
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: loans
path: /loans
operations:
- name: create-loan
method: POST
- type: http
namespace: moodys
baseUri: https://api.moodys.com/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: ratings
path: /issuers/{{entity_id}}/ratings
inputParameters:
- name: entity_id
in: path
operations:
- name: get-rating
method: GET
- type: http
namespace: salesforce
baseUri: https://bnpparibas.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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-request
method: POST
Retrieves counterparty exposure from SimCorp, checks Moody's rating, routes for approval in ServiceNow, and updates limits in Temenos.
naftiko: '0.5'
info:
label: Credit Limit Approval Orchestrator
description: Retrieves counterparty exposure from SimCorp, checks Moody's rating, routes for approval in ServiceNow, and updates limits in Temenos.
tags:
- credit-risk
- simcorp-dimension
- moodys
- servicenow
- temenos-transact
capability:
exposes:
- type: mcp
namespace: credit-approval
port: 8080
tools:
- name: approve-credit-limit
description: Evaluate and approve a credit limit change.
inputParameters:
- name: counterparty_id
in: body
type: string
description: Counterparty identifier.
- name: requested_limit
in: body
type: number
description: Requested credit limit.
steps:
- name: get-exposure
type: call
call: simcorp.get-counterparty-exposure
with:
counterparty_id: '{{counterparty_id}}'
- name: get-rating
type: call
call: moodys.get-rating
with:
entity_id: '{{counterparty_id}}'
- name: request-approval
type: call
call: servicenow.create-change-request
with:
short_description: 'Credit limit: {{counterparty_id}} — {{requested_limit}}'
description: 'Current exposure: {{get-exposure.total}}. Rating: {{get-rating.rating}}. Requested: {{requested_limit}}.'
- name: update-limit
type: call
call: temenos.update-credit-limit
with:
counterparty_id: '{{counterparty_id}}'
limit: '{{requested_limit}}'
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: exposure
path: /counterparties/{{counterparty_id}}/exposure
inputParameters:
- name: counterparty_id
in: path
operations:
- name: get-counterparty-exposure
method: GET
- type: http
namespace: moodys
baseUri: https://api.moodys.com/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: ratings
path: /issuers/{{entity_id}}/ratings
inputParameters:
- name: entity_id
in: path
operations:
- name: get-rating
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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-request
method: POST
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: limits
path: /counterparties/{{counterparty_id}}/credit-limits
inputParameters:
- name: counterparty_id
in: path
operations:
- name: update-credit-limit
method: PUT
On critical alert from Datadog, creates a ServiceNow incident, retrieves impacted service topology from Dynatrace, and sends an urgent notification to the on-call team via Azure Event Hubs.
naftiko: '0.5'
info:
label: Infrastructure Incident Response Orchestrator
description: On critical alert from Datadog, creates a ServiceNow incident, retrieves impacted service topology from Dynatrace, and sends an urgent notification to the on-call team via Azure Event Hubs.
tags:
- operations
- incident-management
- datadog
- servicenow
- dynatrace
- azure-event-hubs
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: handle-critical-alert
description: On critical Datadog alert, create ServiceNow incident, pull Dynatrace topology, and broadcast to on-call channel.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog alert identifier.
- name: service_name
in: body
type: string
description: The affected service name.
steps:
- name: get-alert
type: call
call: datadog.get-alert
with:
alert_id: '{{alert_id}}'
- name: get-topology
type: call
call: dynatrace.get-service-topology
with:
service_name: '{{service_name}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'CRITICAL: {{service_name}} — {{get-alert.title}}'
description: 'Datadog alert {{alert_id}}: {{get-alert.message}}. Impacted dependencies: {{get-topology.dependencies}}. Triggered: {{get-alert.timestamp}}.'
priority: '1'
assigned_group: SRE_OnCall
category: infrastructure
- name: broadcast-notification
type: call
call: eventhubs.send-event
with:
topic: critical-incidents
body: 'INCIDENT {{create-incident.number}}: {{service_name}} is down. Alert: {{get-alert.title}}. Dependencies: {{get-topology.dependency_count}} services affected.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: dynatrace
baseUri: https://bnpparibas.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: topology
path: /entities?entitySelector=type(SERVICE),entityName({{service_name}})
inputParameters:
- name: service_name
in: path
operations:
- name: get-service-topology
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: eventhubs
baseUri: https://bnpparibas-prod.servicebus.windows.net
authentication:
type: bearer
token: $secrets.eventhubs_sas_token
resources:
- name: events
path: /{{topic}}/messages
inputParameters:
- name: topic
in: path
operations:
- name: send-event
method: POST
Fetches current FX exchange rates from Bloomberg Enterprise Data for a given currency pair, returning bid, ask, and mid rates.
naftiko: '0.5'
info:
label: Bloomberg FX Rate Lookup
description: Fetches current FX exchange rates from Bloomberg Enterprise Data for a given currency pair, returning bid, ask, and mid rates.
tags:
- fx
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: bloomberg-fx
port: 8080
tools:
- name: get-fx-rate
description: Retrieve the current FX rate for a currency pair from Bloomberg.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair ticker (e.g. EURUSD Curncy).
call: bloomberg-fx.get-rate
with:
currency_pair: '{{currency_pair}}'
consumes:
- type: http
namespace: bloomberg-fx
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: rates
path: /snapshots/{{currency_pair}}
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-rate
method: GET
Tracks a SWIFT gpi payment status, enriches with Temenos transaction data, and notifies operations via ServiceNow.
naftiko: '0.5'
info:
label: SWIFT gpi Payment Tracking Pipeline
description: Tracks a SWIFT gpi payment status, enriches with Temenos transaction data, and notifies operations via ServiceNow.
tags:
- payments
- swift
- temenos-transact
- servicenow
capability:
exposes:
- type: mcp
namespace: swift-gpi-tracking
port: 8080
tools:
- name: track-gpi-payment
description: Track SWIFT gpi payment end-to-end and notify on issues.
inputParameters:
- name: uetr
in: body
type: string
description: SWIFT Unique End-to-end Transaction Reference.
steps:
- name: get-gpi-status
type: call
call: swift-api.get-payment-status
with:
uetr: '{{uetr}}'
- name: get-transaction
type: call
call: temenos-api.get-transaction
with:
reference: '{{uetr}}'
- name: notify-ops
type: call
call: servicenow-api.create-incident
with:
short_description: 'SWIFT gpi tracking: {{uetr}}'
description: 'Status: {{get-gpi-status.status}}. Amount: {{get-transaction.amount}} {{get-transaction.currency}}. Beneficiary: {{get-transaction.beneficiary}}.'
category: payment_operations
consumes:
- type: http
namespace: swift-api
baseUri: https://api.swiftnet.sipn.swift.com/swift-apitracker/v5
authentication:
type: bearer
token: $secrets.swift_api_token
resources:
- name: payments
path: /payments/{{uetr}}/transactions
inputParameters:
- name: uetr
in: path
operations:
- name: get-payment-status
method: GET
- type: http
namespace: temenos-api
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: transactions
path: /transactions/{{reference}}
inputParameters:
- name: reference
in: path
operations:
- name: get-transaction
method: GET
- type: http
namespace: servicenow-api
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Plans the upgrade in Azure Kubernetes Service, drains nodes, runs health checks via Datadog, and logs changes in ServiceNow.
naftiko: '0.5'
info:
label: Kubernetes Cluster Upgrade Pipeline
description: Plans the upgrade in Azure Kubernetes Service, drains nodes, runs health checks via Datadog, and logs changes in ServiceNow.
tags:
- infrastructure
- azure-kubernetes-service
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: k8s-upgrade
port: 8080
tools:
- name: upgrade-cluster
description: Plan and execute a Kubernetes cluster upgrade with monitoring.
inputParameters:
- name: cluster_name
in: body
type: string
description: AKS cluster name.
- name: target_version
in: body
type: string
description: Target Kubernetes version.
steps:
- name: start-upgrade
type: call
call: aks.upgrade-cluster
with:
cluster_name: '{{cluster_name}}'
version: '{{target_version}}'
- name: check-health
type: call
call: datadog.query-metrics
with:
query: avg:kubernetes.pods.running{cluster:{{cluster_name}}}
- name: log-change
type: call
call: servicenow.create-change-request
with:
short_description: 'K8s upgrade: {{cluster_name}} to {{target_version}}'
description: 'Cluster: {{cluster_name}}. Target: {{target_version}}. Pods running: {{check-health.value}}.'
consumes:
- type: http
namespace: aks
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: clusters
path: /subscriptions/$secrets.azure_sub_id/resourceGroups/infra/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}
inputParameters:
- name: cluster_name
in: path
operations:
- name: upgrade-cluster
method: PUT
- 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
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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-request
method: POST
Retrieves consumer group lag for a Kafka topic, returning current offset, end offset, and lag per partition.
naftiko: '0.5'
info:
label: Kafka Topic Offset Check
description: Retrieves consumer group lag for a Kafka topic, returning current offset, end offset, and lag per partition.
tags:
- streaming
- apache-kafka
capability:
exposes:
- type: mcp
namespace: kafka-monitor
port: 8080
tools:
- name: get-consumer-lag
description: Check consumer group offset lag for a Kafka topic.
inputParameters:
- name: group_id
in: body
type: string
description: The Kafka consumer group ID.
call: kafka-monitor.get-offsets
with:
group_id: '{{group_id}}'
consumes:
- type: http
namespace: kafka-monitor
baseUri: https://kafka-rest.bnpparibas.com/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: offsets
path: /consumers/{{group_id}}/offsets
inputParameters:
- name: group_id
in: path
operations:
- name: get-offsets
method: GET
Validates a corporate payment against the customer account in Temenos Transact, screens beneficiary through Moody's sanctions list, executes via SAP treasury, and notifies operations via ServiceNow.
naftiko: '0.5'
info:
label: Corporate Payment Processing Pipeline
description: Validates a corporate payment against the customer account in Temenos Transact, screens beneficiary through Moody's sanctions list, executes via SAP treasury, and notifies operations via ServiceNow.
tags:
- payments
- corporate-banking
- temenos-transact
- moodys
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: corporate-payments
port: 8080
tools:
- name: process-corporate-payment
description: Validate account, screen beneficiary, execute payment, and notify operations for a corporate wire transfer.
inputParameters:
- name: debit_account_id
in: body
type: string
description: The Temenos Transact debit account ID.
- name: beneficiary_name
in: body
type: string
description: The beneficiary name for sanctions screening.
- name: beneficiary_country
in: body
type: string
description: The beneficiary country ISO code.
- name: amount
in: body
type: number
description: The payment amount.
- name: currency
in: body
type: string
description: The payment currency ISO code.
steps:
- name: validate-account
type: call
call: temenos.get-balance
with:
account_id: '{{debit_account_id}}'
- name: screen-beneficiary
type: call
call: moodys.screen-entity
with:
entity_name: '{{beneficiary_name}}'
country: '{{beneficiary_country}}'
- name: execute-payment
type: call
call: sap.create-payment
with:
debit_account: '{{debit_account_id}}'
beneficiary: '{{beneficiary_name}}'
amount: '{{amount}}'
currency: '{{currency}}'
- name: notify-ops
type: call
call: servicenow.create-task
with:
short_description: 'Corporate payment executed: {{amount}} {{currency}} to {{beneficiary_name}}'
description: 'Debit account: {{debit_account_id}}. Available balance after: {{validate-account.available_balance}}. Screening result: {{screen-beneficiary.risk_level}}. SAP ref: {{execute-payment.payment_ref}}.'
assigned_group: Payment_Operations
category: payment_processing
consumes:
- type: http
namespace: temenos
baseUri: https://transact.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_id}}/balances
inputParameters:
- name: account_id
in: path
operations:
- name: get-balance
method: GET
- type: http
namespace: moodys
baseUri: https://api.moodys.com/screening/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: entities
path: /screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap/FI_PAYMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /A_PaymentInstruction
operations:
- name: create-payment
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Triggers a dataset refresh in Power BI for a given workspace and dataset, used by finance teams to ensure dashboards reflect the latest data.
naftiko: '0.5'
info:
label: Power BI Report Refresh
description: Triggers a dataset refresh in Power BI for a given workspace and dataset, used by finance teams to ensure dashboards reflect the latest data.
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-dataset
description: Trigger a Power BI dataset refresh for a given workspace and dataset ID.
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.
call: powerbi.refresh-dataset
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: datasets
path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Monitors ServiceNow P1 incidents, escalates via PagerDuty, creates a war room in Microsoft Teams, and posts updates to the operations channel.
naftiko: '0.5'
info:
label: Incident Escalation Pipeline
description: Monitors ServiceNow P1 incidents, escalates via PagerDuty, creates a war room in Microsoft Teams, and posts updates to the operations channel.
tags:
- incident-management
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-escalation
port: 8080
tools:
- name: escalate-incident
description: Escalate a P1 incident with war room and notifications.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: 'P1: {{get-incident.short_description}}'
service_id: '{{get-incident.service_id}}'
urgency: high
- name: create-war-room
type: call
call: msteams.create-channel
with:
team_id: incident-response
name: WAR-{{incident_number}}
description: '{{get-incident.short_description}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: 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: channels
path: /teams/{{team_id}}/channels
inputParameters:
- name: team_id
in: path
operations:
- name: create-channel
method: POST
Fetches market data from Bloomberg, runs valuation models in Azure Databricks, stores results in Snowflake, and updates positions in SimCorp.
naftiko: '0.5'
info:
label: Derivatives Valuation Pipeline
description: Fetches market data from Bloomberg, runs valuation models in Azure Databricks, stores results in Snowflake, and updates positions in SimCorp.
tags:
- derivatives
- bloomberg
- azure-databricks
- snowflake
- simcorp-dimension
capability:
exposes:
- type: mcp
namespace: deriv-valuation
port: 8080
tools:
- name: value-derivatives
description: Run derivative valuations with market data and position updates.
inputParameters:
- name: portfolio_code
in: body
type: string
description: Portfolio code.
- name: valuation_date
in: body
type: string
description: Valuation date YYYY-MM-DD.
steps:
- name: get-market-data
type: call
call: bloomberg.get-curves
with:
date: '{{valuation_date}}'
- name: run-models
type: call
call: databricks.submit-job
with:
job_name: deriv-valuation
parameters: '{{portfolio_code}},{{valuation_date}}'
- name: store-results
type: call
call: snowflake.execute-statement
with:
statement: CALL DERIV.STORE_VALUATIONS('{{portfolio_code}}', '{{valuation_date}}')
- name: update-positions
type: call
call: simcorp.update-valuations
with:
portfolio_code: '{{portfolio_code}}'
date: '{{valuation_date}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: curves
path: /curves
inputParameters:
- name: date
in: query
operations:
- name: get-curves
method: GET
- type: http
namespace: databricks
baseUri: https://adb-bnp.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: submit-job
method: POST
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: valuations
path: /portfolios/{{portfolio_code}}/valuations
inputParameters:
- name: portfolio_code
in: path
operations:
- name: update-valuations
method: PUT
Creates vendor in SAP Ariba, runs due diligence checks, sets up payment terms in Oracle, and tracks onboarding in ServiceNow.
naftiko: '0.5'
info:
label: Vendor Onboarding Orchestrator
description: Creates vendor in SAP Ariba, runs due diligence checks, sets up payment terms in Oracle, and tracks onboarding in ServiceNow.
tags:
- procurement
- sap-ariba
- oracle
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-onboarding
port: 8080
tools:
- name: onboard-vendor
description: Onboard a new vendor across SAP Ariba, Oracle, and ServiceNow.
inputParameters:
- name: vendor_name
in: body
type: string
description: Vendor company name.
- name: tax_id
in: body
type: string
description: Vendor tax ID.
steps:
- name: create-vendor
type: call
call: ariba.create-supplier
with:
name: '{{vendor_name}}'
tax_id: '{{tax_id}}'
- name: setup-payments
type: call
call: oracle.create-supplier
with:
supplier_name: '{{vendor_name}}'
supplier_number: '{{create-vendor.supplier_id}}'
- name: track-onboarding
type: call
call: servicenow.create-task
with:
short_description: 'Vendor onboarding: {{vendor_name}}'
description: 'Ariba: {{create-vendor.supplier_id}}. Oracle: {{setup-payments.supplier_number}}.'
category: procurement
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: suppliers
path: /supplier-management/v2/suppliers
operations:
- name: create-supplier
method: POST
- type: http
namespace: oracle
baseUri: https://oracle.bnpparibas.com/fscmRestApi/resources/v1
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: servicenow
baseUri: https://bnpparibas.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
Extracts position data from SimCorp, computes capital requirements in Snowflake, generates reports in Power BI, and archives in Azure Blob Storage.
naftiko: '0.5'
info:
label: Regulatory Capital Report Pipeline
description: Extracts position data from SimCorp, computes capital requirements in Snowflake, generates reports in Power BI, and archives in Azure Blob Storage.
tags:
- regulatory
- simcorp-dimension
- snowflake
- power-bi
- azure-blob-storage
capability:
exposes:
- type: mcp
namespace: reg-capital
port: 8080
tools:
- name: generate-capital-report
description: Compute and distribute regulatory capital report.
inputParameters:
- name: reporting_date
in: body
type: string
description: Reporting date YYYY-MM-DD.
steps:
- name: get-positions
type: call
call: simcorp.get-positions
with:
as_of_date: '{{reporting_date}}'
- name: compute-capital
type: call
call: snowflake.execute-statement
with:
statement: CALL REG.COMPUTE_CAPITAL_REQUIREMENTS('{{reporting_date}}')
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: regulatory-capital
- name: archive
type: call
call: azure-blob.upload
with:
container: regulatory-reports
blob_name: capital/{{reporting_date}}/report.json
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: positions
path: /positions
inputParameters:
- name: as_of_date
in: query
operations:
- name: get-positions
method: GET
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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: azure-blob
baseUri: https://bnpdata.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: upload
method: PUT
Computes Value at Risk from Snowflake data, generates reports in Qlik Sense, stores in Azure Blob Storage, and distributes via email.
naftiko: '0.5'
info:
label: Market Risk VaR Report Pipeline
description: Computes Value at Risk from Snowflake data, generates reports in Qlik Sense, stores in Azure Blob Storage, and distributes via email.
tags:
- risk-management
- snowflake
- qlik-sense
- azure-blob-storage
capability:
exposes:
- type: mcp
namespace: var-report
port: 8080
tools:
- name: generate-var-report
description: Compute VaR and generate risk reports.
inputParameters:
- name: portfolio_code
in: body
type: string
description: Portfolio code.
- name: confidence_level
in: body
type: number
description: VaR confidence level (e.g. 0.99).
steps:
- name: compute-var
type: call
call: snowflake.execute-statement
with:
statement: CALL RISK.COMPUTE_VAR('{{portfolio_code}}', {{confidence_level}})
- name: refresh-dashboard
type: call
call: qlik.reload-app
with:
app_id: var-dashboard
- name: export-report
type: call
call: azure-blob.upload
with:
container: risk-reports
blob_name: var/{{portfolio_code}}/latest.pdf
consumes:
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: qlik
baseUri: https://qlik.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: apps
path: /apps/{{app_id}}/reload
inputParameters:
- name: app_id
in: path
operations:
- name: reload-app
method: POST
- type: http
namespace: azure-blob
baseUri: https://bnpdata.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: upload
method: PUT
Creates a new user in Keycloak, assigns realm roles based on Workday job profile, configures Azure AD group membership, and logs provisioning in ServiceNow.
naftiko: '0.5'
info:
label: Keycloak Identity Provisioning Pipeline
description: Creates a new user in Keycloak, assigns realm roles based on Workday job profile, configures Azure AD group membership, and logs provisioning in ServiceNow.
tags:
- security
- identity-management
- keycloak
- workday
- azure-active-directory
- servicenow
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: provision-identity
description: Create Keycloak user, assign roles from Workday profile, sync Azure AD groups, and log provisioning.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID of the new user.
- name: realm
in: body
type: string
description: The Keycloak realm to provision into.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
- name: create-user
type: call
call: keycloak.create-user
with:
realm: '{{realm}}'
username: '{{get-employee.work_email}}'
first_name: '{{get-employee.first_name}}'
last_name: '{{get-employee.last_name}}'
email: '{{get-employee.work_email}}'
- name: assign-ad-group
type: call
call: azuread.add-group-member
with:
group_id: '{{get-employee.department}}_users'
user_principal_name: '{{get-employee.work_email}}'
- name: log-provisioning
type: call
call: servicenow.create-task
with:
short_description: 'Identity provisioned: {{get-employee.full_name}}'
description: 'Keycloak user created in realm {{realm}}. Azure AD group: {{get-employee.department}}_users. Worker ID: {{worker_id}}. Department: {{get-employee.department}}.'
assigned_group: IAM_Team
category: identity_provisioning
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: keycloak
baseUri: https://keycloak.bnpparibas.net/admin/realms
authentication:
type: bearer
token: $secrets.keycloak_admin_token
resources:
- name: users
path: /{{realm}}/users
inputParameters:
- name: realm
in: path
operations:
- name: create-user
method: POST
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: groups
path: /groups/{{group_id}}/members/$ref
inputParameters:
- name: group_id
in: path
operations:
- name: add-group-member
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Exports a Qlik Sense report as PDF by app ID and sheet ID for distribution to stakeholders.
naftiko: '0.5'
info:
label: Qlik Sense Report Export
description: Exports a Qlik Sense report as PDF by app ID and sheet ID for distribution to stakeholders.
tags:
- reporting
- qlik-sense
capability:
exposes:
- type: mcp
namespace: qlik-export
port: 8080
tools:
- name: export-report
description: Export a Qlik Sense sheet as PDF.
inputParameters:
- name: app_id
in: body
type: string
description: The Qlik Sense app identifier.
- name: sheet_id
in: body
type: string
description: The sheet identifier.
call: qlik-export.export-pdf
with:
app_id: '{{app_id}}'
sheet_id: '{{sheet_id}}'
consumes:
- type: http
namespace: qlik-export
baseUri: https://qlik.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: exports
path: /apps/{{app_id}}/sheets/{{sheet_id}}/export/pdf
inputParameters:
- name: app_id
in: path
- name: sheet_id
in: path
operations:
- name: export-pdf
method: GET
Tracks a SWIFT MT103 payment message through the payment chain, checking status in SAP treasury and logging delays in ServiceNow for operations follow-up.
naftiko: '0.5'
info:
label: SWIFT Payment Message Tracking
description: Tracks a SWIFT MT103 payment message through the payment chain, checking status in SAP treasury and logging delays in ServiceNow for operations follow-up.
tags:
- payments
- swift
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: swift-tracking
port: 8080
tools:
- name: track-swift-payment
description: Track a SWIFT payment by reference, check SAP status, and log delays for follow-up.
inputParameters:
- name: swift_ref
in: body
type: string
description: The SWIFT UETR or transaction reference.
- name: payment_doc_number
in: body
type: string
description: The SAP payment document number.
steps:
- name: track-message
type: call
call: swift.track-payment
with:
uetr: '{{swift_ref}}'
- name: get-sap-status
type: call
call: sap.get-payment
with:
payment_doc_number: '{{payment_doc_number}}'
- name: log-status
type: call
call: servicenow.create-task
with:
short_description: 'SWIFT tracking: {{swift_ref}}'
description: 'SWIFT status: {{track-message.status}}. Last update: {{track-message.last_update}}. SAP status: {{get-sap-status.status}}. Amount: {{get-sap-status.amount}} {{get-sap-status.currency}}. Value date: {{get-sap-status.value_date}}.'
assigned_group: Payment_Operations
category: swift_tracking
consumes:
- type: http
namespace: swift
baseUri: https://api.swiftnet.sipn.swift.com/gpi/v4
authentication:
type: bearer
token: $secrets.swift_api_key
resources:
- name: tracker
path: /payments/{{uetr}}
inputParameters:
- name: uetr
in: path
operations:
- name: track-payment
method: GET
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap/FI_PAYMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /A_PaymentInstruction('{{payment_doc_number}}')
inputParameters:
- name: payment_doc_number
in: path
operations:
- name: get-payment
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Queries Oracle General Ledger for account balances by ledger, period, and account code, returning debit, credit, and net balance.
naftiko: '0.5'
info:
label: Oracle GL Balance Inquiry
description: Queries Oracle General Ledger for account balances by ledger, period, and account code, returning debit, credit, and net balance.
tags:
- finance
- oracle
capability:
exposes:
- type: mcp
namespace: oracle-gl
port: 8080
tools:
- name: get-gl-balance
description: Retrieve General Ledger balance for a given account and period.
inputParameters:
- name: account_code
in: body
type: string
description: The GL account code.
- name: period
in: body
type: string
description: Accounting period (e.g. JAN-26).
call: oracle-gl.get-balance
with:
account_code: '{{account_code}}'
period: '{{period}}'
consumes:
- type: http
namespace: oracle-gl
baseUri: https://oracle.bnpparibas.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: balances
path: /generalLedgerBalances
inputParameters:
- name: account_code
in: query
- name: period
in: query
operations:
- name: get-balance
method: GET
Extracts data from Oracle Database, transforms it in Azure Databricks, generates the regulatory report in Power BI, and logs submission in ServiceNow for audit trail.
naftiko: '0.5'
info:
label: Regulatory Report Generation Pipeline
description: Extracts data from Oracle Database, transforms it in Azure Databricks, generates the regulatory report in Power BI, and logs submission in ServiceNow for audit trail.
tags:
- compliance
- regulatory
- financial-reporting
- oracle-database
- azure-databricks
- power-bi
- servicenow
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-regulatory-report
description: Extract regulatory data, transform in Databricks, refresh Power BI report, and log submission for audit.
inputParameters:
- name: report_type
in: body
type: string
description: The regulatory report type (e.g. COREP, FINREP, FRTB).
- name: reporting_date
in: body
type: string
description: The reporting period end date in YYYY-MM-DD format.
- name: entity_code
in: body
type: string
description: The legal entity code for the report.
steps:
- name: extract-data
type: call
call: oracle.execute-query
with:
query_name: reg_{{report_type}}_extract
reporting_date: '{{reporting_date}}'
entity_code: '{{entity_code}}'
- name: transform-data
type: call
call: databricks.run-job
with:
job_name: regulatory_{{report_type}}_transform
parameters: reporting_date={{reporting_date}}&entity={{entity_code}}&extract_id={{extract-data.extract_id}}
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
workspace_id: regulatory_reports
dataset_id: '{{report_type}}_{{entity_code}}'
- name: log-submission
type: call
call: servicenow.create-task
with:
short_description: 'Regulatory report generated: {{report_type}} — {{entity_code}} — {{reporting_date}}'
description: 'Extract ID: {{extract-data.extract_id}}. Databricks run: {{transform-data.run_id}}. Report refreshed in Power BI. Ready for supervisory submission.'
assigned_group: Regulatory_Reporting
category: regulatory_submission
consumes:
- type: http
namespace: oracle
baseUri: https://ords.bnpparibas.net/ords/reg
authentication:
type: bearer
token: $secrets.oracle_ords_token
resources:
- name: queries
path: /extracts/{{query_name}}
inputParameters:
- name: query_name
in: path
operations:
- name: execute-query
method: POST
- type: http
namespace: databricks
baseUri: https://adb-bnpparibas.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves nostro balances from Temenos, matches against SWIFT statements, logs breaks in Oracle, and creates ServiceNow tickets for unmatched items.
naftiko: '0.5'
info:
label: Nostro Account Reconciliation Workflow
description: Retrieves nostro balances from Temenos, matches against SWIFT statements, logs breaks in Oracle, and creates ServiceNow tickets for unmatched items.
tags:
- operations
- temenos-transact
- swift
- oracle
- servicenow
capability:
exposes:
- type: mcp
namespace: nostro-recon
port: 8080
tools:
- name: reconcile-nostro
description: Reconcile nostro account balances against SWIFT statements.
inputParameters:
- name: nostro_account
in: body
type: string
description: Nostro account number.
- name: recon_date
in: body
type: string
description: Reconciliation date YYYY-MM-DD.
steps:
- name: get-balance
type: call
call: temenos.get-balance
with:
account_number: '{{nostro_account}}'
- name: get-statement
type: call
call: swift.get-mt950
with:
account: '{{nostro_account}}'
date: '{{recon_date}}'
- name: log-breaks
type: call
call: oracle.insert-breaks
with:
account: '{{nostro_account}}'
book_balance: '{{get-balance.balance}}'
statement_balance: '{{get-statement.closing_balance}}'
- name: create-ticket
type: call
call: servicenow.create-task
with:
short_description: 'Nostro recon: {{nostro_account}} — {{recon_date}}'
description: 'Book: {{get-balance.balance}}. Statement: {{get-statement.closing_balance}}. Breaks logged in Oracle.'
consumes:
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_number}}/balance
inputParameters:
- name: account_number
in: path
operations:
- name: get-balance
method: GET
- type: http
namespace: swift
baseUri: https://api.swift.com/gpi/v4
authentication:
type: bearer
token: $secrets.swift_gpi_token
resources:
- name: statements
path: /statements/mt950
inputParameters:
- name: account
in: query
- name: date
in: query
operations:
- name: get-mt950
method: GET
- type: http
namespace: oracle
baseUri: https://oracle.bnpparibas.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: recon-breaks
path: /reconciliationBreaks
operations:
- name: insert-breaks
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves the real-time account balance from Temenos Transact core banking platform by account number.
naftiko: '0.5'
info:
label: Temenos Account Balance
description: Retrieves the real-time account balance from Temenos Transact core banking platform by account number.
tags:
- core-banking
- temenos-transact
capability:
exposes:
- type: mcp
namespace: temenos
port: 8080
tools:
- name: get-account-balance
description: Retrieve the current balance for a Temenos account by account number.
inputParameters:
- name: account_number
in: body
type: string
description: The Temenos account number.
call: temenos.get-balance
with:
account_number: '{{account_number}}'
consumes:
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_number}}/balance
inputParameters:
- name: account_number
in: path
operations:
- name: get-balance
method: GET
Creates a new bond instrument in Bloomberg AIM, registers in SimCorp Dimension, generates SWIFT messages, and notifies the syndicate desk via ServiceNow.
naftiko: '0.5'
info:
label: Bond Issuance Workflow
description: Creates a new bond instrument in Bloomberg AIM, registers in SimCorp Dimension, generates SWIFT messages, and notifies the syndicate desk via ServiceNow.
tags:
- capital-markets
- bloomberg-aim
- simcorp-dimension
- swift
- servicenow
capability:
exposes:
- type: mcp
namespace: bond-issuance
port: 8080
tools:
- name: issue-bond
description: Register and notify for a new bond issuance.
inputParameters:
- name: isin
in: body
type: string
description: Bond ISIN.
- name: issuer
in: body
type: string
description: Issuer name.
- name: amount
in: body
type: number
description: Issuance amount.
steps:
- name: register-aim
type: call
call: bloomberg-aim.create-instrument
with:
isin: '{{isin}}'
issuer: '{{issuer}}'
- name: register-simcorp
type: call
call: simcorp.create-instrument
with:
isin: '{{isin}}'
name: '{{issuer}} Bond'
- name: send-swift
type: call
call: swift.send-mt564
with:
isin: '{{isin}}'
event_type: NEW_ISSUE
- name: notify-desk
type: call
call: servicenow.create-task
with:
short_description: 'New bond issuance: {{issuer}} {{isin}}'
description: 'Amount: {{amount}}. SWIFT: {{send-swift.reference}}.'
category: capital_markets
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: instruments
path: /instruments
operations:
- name: create-instrument
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: instruments
path: /instruments
operations:
- name: create-instrument
method: POST
- type: http
namespace: swift
baseUri: https://swift.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages/mt564
operations:
- name: send-mt564
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Receives GDPR requests via ServiceNow, searches for personal data in Temenos and Salesforce, generates deletion reports, and logs in Confluence.
naftiko: '0.5'
info:
label: Data Privacy Request Handler
description: Receives GDPR requests via ServiceNow, searches for personal data in Temenos and Salesforce, generates deletion reports, and logs in Confluence.
tags:
- compliance
- servicenow
- temenos-transact
- salesforce
- confluence
capability:
exposes:
- type: mcp
namespace: gdpr-handler
port: 8080
tools:
- name: handle-privacy-request
description: Process a GDPR data subject request.
inputParameters:
- name: request_id
in: body
type: string
description: ServiceNow request ID.
- name: subject_email
in: body
type: string
description: Data subject email.
steps:
- name: get-request
type: call
call: servicenow.get-task
with:
task_id: '{{request_id}}'
- name: search-temenos
type: call
call: temenos.search-customer
with:
email: '{{subject_email}}'
- name: search-salesforce
type: call
call: salesforce.search-contact
with:
email: '{{subject_email}}'
- name: log-report
type: call
call: confluence.create-page
with:
space_key: GDPR
title: 'DSAR: {{request_id}} — {{subject_email}}'
body: 'Temenos records: {{search-temenos.count}}. Salesforce records: {{search-salesforce.count}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task/{{task_id}}
inputParameters:
- name: task_id
in: path
operations:
- name: get-task
method: GET
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: customers
path: /customers/search
inputParameters:
- name: email
in: query
operations:
- name: search-customer
method: GET
- type: http
namespace: salesforce
baseUri: https://bnpparibas.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /parameterizedSearch
inputParameters:
- name: email
in: query
operations:
- name: search-contact
method: GET
- type: http
namespace: confluence
baseUri: https://bnpparibas.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 transaction details from Mastercard by authorization reference, returning amount, merchant, status, and settlement date.
naftiko: '0.5'
info:
label: Mastercard Transaction Lookup
description: Retrieves transaction details from Mastercard by authorization reference, returning amount, merchant, status, and settlement date.
tags:
- payments
- mastercard
- transaction-monitoring
capability:
exposes:
- type: mcp
namespace: card-payments
port: 8080
tools:
- name: get-transaction
description: Look up a Mastercard transaction by authorization reference number.
inputParameters:
- name: auth_ref
in: body
type: string
description: The Mastercard authorization reference number.
call: mastercard.get-transaction
with:
auth_ref: '{{auth_ref}}'
outputParameters:
- name: amount
type: number
mapping: $.transaction.amount
- name: currency
type: string
mapping: $.transaction.currency
- name: merchant
type: string
mapping: $.transaction.merchantName
- name: status
type: string
mapping: $.transaction.status
consumes:
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/transaction/v1
authentication:
type: bearer
token: $secrets.mastercard_api_key
resources:
- name: transactions
path: /authorizations/{{auth_ref}}
inputParameters:
- name: auth_ref
in: path
operations:
- name: get-transaction
method: GET
When a Bloomberg BQL query detects anomalous trading patterns, creates a surveillance case in ServiceNow, enriches with Salesforce client data, and stores evidence in SharePoint.
naftiko: '0.5'
info:
label: Trade Surveillance Alert Pipeline
description: When a Bloomberg BQL query detects anomalous trading patterns, creates a surveillance case in ServiceNow, enriches with Salesforce client data, and stores evidence in SharePoint.
tags:
- compliance
- trade-surveillance
- bloomberg-bql
- servicenow
- salesforce
- sharepoint
capability:
exposes:
- type: mcp
namespace: trade-surveillance
port: 8080
tools:
- name: process-surveillance-alert
description: On anomalous trade detection, create surveillance case, enrich with client data, and store evidence.
inputParameters:
- name: alert_id
in: body
type: string
description: The surveillance alert identifier.
- name: trader_account_id
in: body
type: string
description: The Salesforce account ID of the trader's desk.
- name: instrument
in: body
type: string
description: The instrument ticker involved.
steps:
- name: get-trade-data
type: call
call: bloomberg-bql.run-query
with:
query: get(px_last, volume) for('{{instrument}}') with(dates=range(-5d,0d))
- name: get-desk-info
type: call
call: salesforce.get-account
with:
account_id: '{{trader_account_id}}'
- name: create-case
type: call
call: servicenow.create-case
with:
short_description: 'Surveillance alert: {{alert_id}} — {{instrument}}'
description: 'Anomalous pattern detected for {{instrument}}. Desk: {{get-desk-info.Name}}. RM: {{get-desk-info.Owner.Name}}. 5-day data retrieved for analysis.'
assigned_group: Compliance_Surveillance
category: trade_surveillance
priority: '2'
- name: store-evidence
type: call
call: sharepoint.create-file
with:
site_id: compliance_surveillance
file_path: Evidence/{{alert_id}}/trade_data.json
content_type: application/json
consumes:
- type: http
namespace: bloomberg-bql
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: queries
path: /queries
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: https://bnpparibas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-file
method: PUT
Retrieves the current balance and available balance for a customer account from Temenos Transact core banking system.
naftiko: '0.5'
info:
label: Temenos Core Banking Account Balance
description: Retrieves the current balance and available balance for a customer account from Temenos Transact core banking system.
tags:
- banking
- core-banking
- temenos-transact
capability:
exposes:
- type: mcp
namespace: core-banking
port: 8080
tools:
- name: get-account-balance
description: Retrieve current and available balance for a Temenos Transact customer account.
inputParameters:
- name: account_id
in: body
type: string
description: The Temenos Transact account identifier.
call: temenos.get-balance
with:
account_id: '{{account_id}}'
outputParameters:
- name: current_balance
type: number
mapping: $.body.currentBalance
- name: available_balance
type: number
mapping: $.body.availableBalance
- name: currency
type: string
mapping: $.body.currency
consumes:
- type: http
namespace: temenos
baseUri: https://transact.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_id}}/balances
inputParameters:
- name: account_id
in: path
operations:
- name: get-balance
method: GET
Submits a request-for-quote on Tradeweb for a fixed income security, returning dealer quotes and best execution price.
naftiko: '0.5'
info:
label: Tradeweb RFQ Submission
description: Submits a request-for-quote on Tradeweb for a fixed income security, returning dealer quotes and best execution price.
tags:
- trading
- fixed-income
- tradeweb
capability:
exposes:
- type: mcp
namespace: fixed-income-trading
port: 8080
tools:
- name: submit-rfq
description: Submit a request-for-quote on Tradeweb for a given ISIN and notional amount.
inputParameters:
- name: isin
in: body
type: string
description: The ISIN of the bond.
- name: notional
in: body
type: number
description: The notional amount in the bond currency.
- name: direction
in: body
type: string
description: BUY or SELL.
call: tradeweb.create-rfq
with:
isin: '{{isin}}'
notional: '{{notional}}'
direction: '{{direction}}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v2
authentication:
type: bearer
token: $secrets.tradeweb_api_key
resources:
- name: rfqs
path: /rfqs
operations:
- name: create-rfq
method: POST
Triggers an Alteryx analytics workflow for financial data preparation, validates output row counts in PostgreSQL, and notifies the analytics team via Azure Event Hubs.
naftiko: '0.5'
info:
label: Alteryx Data Preparation Workflow
description: Triggers an Alteryx analytics workflow for financial data preparation, validates output row counts in PostgreSQL, and notifies the analytics team via Azure Event Hubs.
tags:
- analytics
- data-preparation
- alteryx
- postgresql
- azure-event-hubs
capability:
exposes:
- type: mcp
namespace: data-prep
port: 8080
tools:
- name: run-alteryx-workflow
description: Execute an Alteryx workflow, validate output, and notify analytics team.
inputParameters:
- name: workflow_id
in: body
type: string
description: The Alteryx Server workflow ID.
- name: output_table
in: body
type: string
description: The output PostgreSQL table to validate.
steps:
- name: run-workflow
type: call
call: alteryx.run-workflow
with:
workflow_id: '{{workflow_id}}'
- name: validate-output
type: call
call: postgresql.run-query
with:
query: SELECT COUNT(*) as row_count FROM {{output_table}} WHERE updated_at >= NOW() - INTERVAL '1 hour'
- name: notify-team
type: call
call: eventhubs.send-event
with:
topic: analytics-completions
body: 'Alteryx workflow {{workflow_id}} completed. Job ID: {{run-workflow.job_id}}. Output table: {{output_table}}. Rows: {{validate-output.row_count}}.'
consumes:
- type: http
namespace: alteryx
baseUri: https://alteryx.bnpparibas.net/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: postgresql
baseUri: https://pgrest.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.pgrest_token
resources:
- name: queries
path: /rpc/execute_query
operations:
- name: run-query
method: POST
- type: http
namespace: eventhubs
baseUri: https://bnpparibas-prod.servicebus.windows.net
authentication:
type: bearer
token: $secrets.eventhubs_sas_token
resources:
- name: events
path: /{{topic}}/messages
inputParameters:
- name: topic
in: path
operations:
- name: send-event
method: POST
On new OTC derivative trade, retrieves trade details from Bloomberg AIM, generates confirmation document in SharePoint, sends to counterparty via Axway secure file transfer, and logs in ServiceNow.
naftiko: '0.5'
info:
label: Derivatives Trade Confirmation Workflow
description: On new OTC derivative trade, retrieves trade details from Bloomberg AIM, generates confirmation document in SharePoint, sends to counterparty via Axway secure file transfer, and logs in ServiceNow.
tags:
- derivatives
- trade-operations
- bloomberg-aim
- sharepoint
- axway
- servicenow
capability:
exposes:
- type: mcp
namespace: derivatives-confirm
port: 8080
tools:
- name: confirm-otc-trade
description: Generate and send trade confirmation for an OTC derivative, logging the workflow in ServiceNow.
inputParameters:
- name: trade_ref
in: body
type: string
description: The Bloomberg AIM trade reference.
- name: counterparty_id
in: body
type: string
description: The counterparty identifier for secure delivery.
steps:
- name: get-trade
type: call
call: bloomberg-aim.get-trade
with:
trade_ref: '{{trade_ref}}'
- name: create-confirmation
type: call
call: sharepoint.create-file
with:
site_id: derivatives_confirmations
file_path: Confirmations/{{trade_ref}}_confirm.pdf
content_type: application/pdf
- name: send-to-counterparty
type: call
call: axway.send-file
with:
partner_id: '{{counterparty_id}}'
file_url: '{{create-confirmation.url}}'
filename: '{{trade_ref}}_confirm.pdf'
- name: log-confirmation
type: call
call: servicenow.create-task
with:
short_description: 'OTC confirmation sent: {{trade_ref}}'
description: 'Trade: {{get-trade.instrument}} {{get-trade.notional}} {{get-trade.currency}}. Counterparty: {{get-trade.counterparty}}. Confirmation delivered via Axway. Transfer ID: {{send-to-counterparty.transfer_id}}.'
assigned_group: Derivatives_Operations
category: trade_confirmation
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: trades
path: /trades/{{trade_ref}}
inputParameters:
- name: trade_ref
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: axway
baseUri: https://axway.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.axway_token
resources:
- name: transfers
path: /transfers
operations:
- name: send-file
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Calculates NAV in SimCorp, validates in Snowflake, publishes to Bloomberg, and distributes to investors via Salesforce.
naftiko: '0.5'
info:
label: Fund NAV Publication Workflow
description: Calculates NAV in SimCorp, validates in Snowflake, publishes to Bloomberg, and distributes to investors via Salesforce.
tags:
- fund-accounting
- simcorp-dimension
- snowflake
- bloomberg
- salesforce
capability:
exposes:
- type: mcp
namespace: nav-publication
port: 8080
tools:
- name: publish-nav
description: Calculate, validate, and publish fund NAV.
inputParameters:
- name: fund_code
in: body
type: string
description: Fund code.
- name: nav_date
in: body
type: string
description: NAV date YYYY-MM-DD.
steps:
- name: calculate-nav
type: call
call: simcorp.calculate-nav
with:
fund_code: '{{fund_code}}'
date: '{{nav_date}}'
- name: validate
type: call
call: snowflake.execute-statement
with:
statement: CALL NAV.VALIDATE('{{fund_code}}', '{{nav_date}}')
- name: publish
type: call
call: bloomberg.publish-nav
with:
fund_code: '{{fund_code}}'
nav: '{{calculate-nav.nav_per_share}}'
date: '{{nav_date}}'
- name: notify-investors
type: call
call: salesforce.create-task
with:
subject: 'NAV Published: {{fund_code}} — {{nav_date}}'
description: 'NAV: {{calculate-nav.nav_per_share}}. Published to Bloomberg.'
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: nav
path: /funds/{{fund_code}}/nav
inputParameters:
- name: fund_code
in: path
operations:
- name: calculate-nav
method: POST
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: nav
path: /nav/publish
operations:
- name: publish-nav
method: POST
- type: http
namespace: salesforce
baseUri: https://bnpparibas.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
Retrieves suspicious activity from Temenos, enriches with Moody's data, creates investigation cases in ServiceNow, and logs evidence in SharePoint.
naftiko: '0.5'
info:
label: AML Case Investigation Workflow
description: Retrieves suspicious activity from Temenos, enriches with Moody's data, creates investigation cases in ServiceNow, and logs evidence in SharePoint.
tags:
- compliance
- temenos-transact
- moodys
- servicenow
- sharepoint
capability:
exposes:
- type: mcp
namespace: aml-investigation
port: 8080
tools:
- name: investigate-aml-case
description: Investigate an AML alert with enrichment and case management.
inputParameters:
- name: alert_id
in: body
type: string
description: AML alert identifier.
steps:
- name: get-alert
type: call
call: temenos.get-aml-alert
with:
alert_id: '{{alert_id}}'
- name: enrich-data
type: call
call: moodys.get-entity-info
with:
entity_name: '{{get-alert.entity_name}}'
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'AML investigation: {{get-alert.entity_name}}'
description: 'Alert: {{alert_id}}. Risk: {{get-alert.risk_score}}. Moody''s: {{enrich-data.rating}}.'
category: aml
- name: store-evidence
type: call
call: sharepoint.create-file
with:
site_id: compliance
path: AML/{{alert_id}}/evidence.json
consumes:
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: aml
path: /compliance/aml-alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-aml-alert
method: GET
- type: http
namespace: moodys
baseUri: https://api.moodys.com/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: entities
path: /entities/search
inputParameters:
- name: entity_name
in: query
operations:
- name: get-entity-info
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: create-file
method: PUT
Extracts holdings from FactSet, generates performance reports in Power BI, stores in Azure Blob Storage, and distributes to clients via Salesforce.
naftiko: '0.5'
info:
label: Client Portfolio Reporting Pipeline
description: Extracts holdings from FactSet, generates performance reports in Power BI, stores in Azure Blob Storage, and distributes to clients via Salesforce.
tags:
- client-reporting
- factset
- power-bi
- azure-blob-storage
- salesforce
capability:
exposes:
- type: mcp
namespace: portfolio-reporting
port: 8080
tools:
- name: generate-client-report
description: Generate and distribute client portfolio performance reports.
inputParameters:
- name: portfolio_code
in: body
type: string
description: Portfolio code.
- name: client_email
in: body
type: string
description: Client email.
steps:
- name: get-holdings
type: call
call: factset.get-holdings
with:
portfolio_code: '{{portfolio_code}}'
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: client-portfolio-{{portfolio_code}}
- name: store-report
type: call
call: azure-blob.upload
with:
container: client-reports
blob_name: '{{portfolio_code}}/latest.pdf'
- name: notify-client
type: call
call: salesforce.create-task
with:
subject: Portfolio Report — {{portfolio_code}}
description: 'Report generated. Holdings: {{get-holdings.count}}. Download: {{store-report.url}}.'
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/analytics/v3
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_api_key
resources:
- name: holdings
path: /portfolios/{{portfolio_code}}/holdings
inputParameters:
- name: portfolio_code
in: path
operations:
- name: get-holdings
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: azure-blob
baseUri: https://bnpdata.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: upload
method: PUT
- type: http
namespace: salesforce
baseUri: https://bnpparibas.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
Queries Tyk API gateway for endpoint health metrics, retrieves error rates from Datadog, and creates a ServiceNow incident if degradation is detected.
naftiko: '0.5'
info:
label: Tyk API Gateway Health Check
description: Queries Tyk API gateway for endpoint health metrics, retrieves error rates from Datadog, and creates a ServiceNow incident if degradation is detected.
tags:
- api-management
- tyk
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: api-health
port: 8080
tools:
- name: check-api-health
description: Monitor Tyk API gateway endpoint health, correlate with Datadog errors, and alert on degradation.
inputParameters:
- name: api_id
in: body
type: string
description: The Tyk API definition ID.
- name: service_name
in: body
type: string
description: The corresponding Datadog service name.
steps:
- name: get-api-metrics
type: call
call: tyk.get-api-analytics
with:
api_id: '{{api_id}}'
- name: get-error-rate
type: call
call: datadog.get-service-metrics
with:
service_name: '{{service_name}}'
- name: create-alert
type: call
call: servicenow.create-incident
with:
short_description: 'API degradation: {{api_id}}'
description: 'Tyk metrics — requests: {{get-api-metrics.total_requests}}, errors: {{get-api-metrics.error_count}}, avg latency: {{get-api-metrics.avg_latency_ms}}ms. Datadog error rate: {{get-error-rate.error_rate}}%.'
assigned_group: API_Platform
category: api_monitoring
consumes:
- type: http
namespace: tyk
baseUri: https://tyk-dashboard.bnpparibas.net/api
authentication:
type: apiKey
name: Authorization
in: header
value: $secrets.tyk_api_key
resources:
- name: analytics
path: /apis/{{api_id}}/analytics
inputParameters:
- name: api_id
in: path
operations:
- name: get-api-analytics
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: services
path: /services/{{service_name}}/metrics
inputParameters:
- name: service_name
in: path
operations:
- name: get-service-metrics
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Prepares a client portfolio review by pulling holdings from FactSet, account data from Salesforce, risk assessment from Moody's, and assembling a review deck notification in SharePoint.
naftiko: '0.5'
info:
label: Wealth Management Client Review Orchestrator
description: Prepares a client portfolio review by pulling holdings from FactSet, account data from Salesforce, risk assessment from Moody's, and assembling a review deck notification in SharePoint.
tags:
- wealth-management
- client-management
- factset
- salesforce
- moodys
- sharepoint
capability:
exposes:
- type: mcp
namespace: wealth-review
port: 8080
tools:
- name: prepare-client-review
description: Assemble a wealth management client review package from portfolio, CRM, and risk data.
inputParameters:
- name: client_account_id
in: body
type: string
description: The Salesforce account ID for the wealth management client.
- name: portfolio_id
in: body
type: string
description: The FactSet portfolio ID.
steps:
- name: get-client
type: call
call: salesforce.get-account
with:
account_id: '{{client_account_id}}'
- name: get-holdings
type: call
call: factset.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-risk-profile
type: call
call: moodys.get-portfolio-risk
with:
portfolio_id: '{{portfolio_id}}'
- name: create-review-folder
type: call
call: sharepoint.create-folder
with:
site_id: wealth_management_reviews
folder_path: Reviews/{{get-client.Name}}/{{portfolio_id}}
consumes:
- type: http
namespace: salesforce
baseUri: https://bnpparibas.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: factset
baseUri: https://api.factset.com/analytics/portfolio/v3
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: moodys
baseUri: https://api.moodys.com/risk/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: portfolio-risk
path: /portfolios/{{portfolio_id}}/risk
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-portfolio-risk
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
Pulls counterparty financials from Bloomberg, credit rating from Moody's, exposure from SimCorp Dimension, and assembles a risk assessment report stored in SharePoint.
naftiko: '0.5'
info:
label: Credit Risk Counterparty Assessment
description: Pulls counterparty financials from Bloomberg, credit rating from Moody's, exposure from SimCorp Dimension, and assembles a risk assessment report stored in SharePoint.
tags:
- credit-risk
- counterparty-risk
- bloomberg
- moodys
- simcorp-dimension
- sharepoint
capability:
exposes:
- type: mcp
namespace: counterparty-risk
port: 8080
tools:
- name: assess-counterparty
description: Compile counterparty risk assessment from market data, credit rating, and exposure data.
inputParameters:
- name: counterparty_ticker
in: body
type: string
description: The Bloomberg ticker of the counterparty.
- name: counterparty_moodys_id
in: body
type: string
description: The Moody's issuer ID.
- name: portfolio_code
in: body
type: string
description: The portfolio to check exposure against.
steps:
- name: get-financials
type: call
call: bloomberg.get-quote
with:
ticker: '{{counterparty_ticker}}'
- name: get-rating
type: call
call: moodys.get-rating
with:
issuer_id: '{{counterparty_moodys_id}}'
- name: get-exposure
type: call
call: simcorp.get-counterparty-exposure
with:
portfolio_code: '{{portfolio_code}}'
counterparty_ticker: '{{counterparty_ticker}}'
- name: store-report
type: call
call: sharepoint.create-file
with:
site_id: credit_risk_reports
file_path: Assessments/{{counterparty_ticker}}/assessment.json
content_type: application/json
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: quotes
path: /snapshots/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: moodys
baseUri: https://api.moodys.com/credit/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: ratings
path: /issuers/{{issuer_id}}/ratings
inputParameters:
- name: issuer_id
in: path
operations:
- name: get-rating
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: exposure
path: /portfolios/{{portfolio_code}}/exposure/{{counterparty_ticker}}
inputParameters:
- name: portfolio_code
in: path
- name: counterparty_ticker
in: path
operations:
- name: get-counterparty-exposure
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-file
method: PUT
Captures swap terms from Tradeweb, books the trade in Bloomberg AIM, generates confirmations in SimCorp, and notifies middle office via ServiceNow.
naftiko: '0.5'
info:
label: Interest Rate Swap Booking Pipeline
description: Captures swap terms from Tradeweb, books the trade in Bloomberg AIM, generates confirmations in SimCorp, and notifies middle office via ServiceNow.
tags:
- derivatives
- tradeweb
- bloomberg-aim
- simcorp-dimension
- servicenow
capability:
exposes:
- type: mcp
namespace: irs-booking
port: 8080
tools:
- name: book-swap
description: Book an interest rate swap across Tradeweb, Bloomberg AIM, SimCorp, and ServiceNow.
inputParameters:
- name: trade_ref
in: body
type: string
description: Tradeweb trade reference.
- name: portfolio_code
in: body
type: string
description: SimCorp portfolio code.
steps:
- name: get-trade
type: call
call: tradeweb.get-trade
with:
trade_ref: '{{trade_ref}}'
- name: book-aim
type: call
call: bloomberg-aim.create-trade
with:
trade_ref: '{{trade_ref}}'
instrument_type: IRS
- name: confirm-simcorp
type: call
call: simcorp.create-trade
with:
portfolio_code: '{{portfolio_code}}'
instrument: '{{get-trade.instrument}}'
notional: '{{get-trade.notional}}'
- name: notify-mo
type: call
call: servicenow.create-task
with:
short_description: 'IRS booked: {{trade_ref}}'
description: 'Notional: {{get-trade.notional}}. Rate: {{get-trade.fixed_rate}}. SimCorp: {{confirm-simcorp.trade_id}}.'
category: trade_processing
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: trades
path: /trades/{{trade_ref}}
inputParameters:
- name: trade_ref
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg-aim
baseUri: https://aim.bloomberg.com/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: trades
path: /trades
operations:
- name: create-trade
method: POST
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: trades
path: /portfolios/{{portfolio_code}}/trades
inputParameters:
- name: portfolio_code
in: path
operations:
- name: create-trade
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves messages from a RabbitMQ dead letter queue, logs the failure pattern in Elasticsearch, and creates a ServiceNow incident for application support to investigate.
naftiko: '0.5'
info:
label: RabbitMQ Dead Letter Queue Processor
description: Retrieves messages from a RabbitMQ dead letter queue, logs the failure pattern in Elasticsearch, and creates a ServiceNow incident for application support to investigate.
tags:
- messaging
- rabbitmq
- elasticsearch
- servicenow
capability:
exposes:
- type: mcp
namespace: dlq-processor
port: 8080
tools:
- name: process-dead-letters
description: Retrieve DLQ messages, log failure patterns, and create incident for investigation.
inputParameters:
- name: queue_name
in: body
type: string
description: The dead letter queue name.
- name: vhost
in: body
type: string
description: The RabbitMQ virtual host.
steps:
- name: get-messages
type: call
call: rabbitmq.get-messages
with:
vhost: '{{vhost}}'
queue: '{{queue_name}}'
- name: log-pattern
type: call
call: elasticsearch.index-document
with:
index: dlq-failures
body: queue={{queue_name}}&vhost={{vhost}}&count={{get-messages.message_count}}&oldest={{get-messages.oldest_timestamp}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'DLQ accumulation: {{queue_name}} on {{vhost}}'
description: 'Dead letter queue {{queue_name}} has {{get-messages.message_count}} unprocessed messages. Oldest message: {{get-messages.oldest_timestamp}}. Sample error: {{get-messages.sample_error}}.'
assigned_group: Application_Support
category: messaging_failure
consumes:
- type: http
namespace: rabbitmq
baseUri: https://rabbitmq.bnpparibas.net:15672/api
authentication:
type: basic
username: $secrets.rabbitmq_user
password: $secrets.rabbitmq_password
resources:
- name: queues
path: /queues/{{vhost}}/{{queue}}/get
inputParameters:
- name: vhost
in: path
- name: queue
in: path
operations:
- name: get-messages
method: POST
- type: http
namespace: elasticsearch
baseUri: https://elasticsearch.bnpparibas.net:9200
authentication:
type: basic
username: $secrets.elastic_user
password: $secrets.elastic_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/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 trade settlements in SWIFT, matches against SimCorp positions, logs breaks in Snowflake, and alerts operations via ServiceNow.
naftiko: '0.5'
info:
label: Trade Settlement Monitoring Pipeline
description: Monitors trade settlements in SWIFT, matches against SimCorp positions, logs breaks in Snowflake, and alerts operations via ServiceNow.
tags:
- settlement
- swift
- simcorp-dimension
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: settlement-monitor
port: 8080
tools:
- name: monitor-settlements
description: Match SWIFT settlements against booked positions and track breaks.
inputParameters:
- name: settlement_date
in: body
type: string
description: Settlement date YYYY-MM-DD.
steps:
- name: get-swift-settlements
type: call
call: swift.get-settlements
with:
date: '{{settlement_date}}'
- name: get-positions
type: call
call: simcorp.get-expected-settlements
with:
date: '{{settlement_date}}'
- name: log-breaks
type: call
call: snowflake.execute-statement
with:
statement: CALL SETTLEMENT.LOG_BREAKS('{{settlement_date}}')
- name: create-ticket
type: call
call: servicenow.create-task
with:
short_description: 'Settlement breaks: {{settlement_date}}'
description: 'SWIFT settlements: {{get-swift-settlements.count}}. Expected: {{get-positions.count}}. Review breaks in Snowflake.'
category: settlement_ops
consumes:
- type: http
namespace: swift
baseUri: https://api.swift.com/gpi/v4
authentication:
type: bearer
token: $secrets.swift_gpi_token
resources:
- name: settlements
path: /payments/settlements
inputParameters:
- name: date
in: query
operations:
- name: get-settlements
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: settlements
path: /settlements/expected
inputParameters:
- name: date
in: query
operations:
- name: get-expected-settlements
method: GET
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.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://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves an SSL certificate from Azure Key Vault for service authentication or TLS configuration.
naftiko: '0.5'
info:
label: Azure Key Vault Certificate Retrieval
description: Retrieves an SSL certificate from Azure Key Vault for service authentication or TLS configuration.
tags:
- security
- azure-key-vault
capability:
exposes:
- type: mcp
namespace: azure-kv-certs
port: 8080
tools:
- name: get-certificate
description: Retrieve a certificate from Azure Key Vault by name.
inputParameters:
- name: cert_name
in: body
type: string
description: The certificate name in Key Vault.
call: azure-kv-certs.get-cert
with:
cert_name: '{{cert_name}}'
consumes:
- type: http
namespace: azure-kv-certs
baseUri: https://bnp-vault.vault.azure.net
authentication:
type: bearer
token: $secrets.azure_kv_token
resources:
- name: certificates
path: /certificates/{{cert_name}}
inputParameters:
- name: cert_name
in: path
operations:
- name: get-cert
method: GET
Retrieves user profile and group membership from Azure Active Directory for identity management workflows.
naftiko: '0.5'
info:
label: Azure Active Directory User Lookup
description: Retrieves user profile and group membership from Azure Active Directory for identity management workflows.
tags:
- identity
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: azure-ad
port: 8080
tools:
- name: get-user-profile
description: Look up an Azure AD user by principal name.
inputParameters:
- name: user_principal
in: body
type: string
description: Azure AD user principal name.
call: azuread-api.get-user
with:
user_principal: '{{user_principal}}'
consumes:
- type: http
namespace: azuread-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{user_principal}}
inputParameters:
- name: user_principal
in: path
operations:
- name: get-user
method: GET
Fetches end-of-day pricing data for a security from FactSet, returning close price, volume, and VWAP.
naftiko: '0.5'
info:
label: FactSet Security Pricing
description: Fetches end-of-day pricing data for a security from FactSet, returning close price, volume, and VWAP.
tags:
- market-data
- factset
capability:
exposes:
- type: mcp
namespace: factset-pricing
port: 8080
tools:
- name: get-security-price
description: Retrieve end-of-day pricing for a security by ISIN from FactSet.
inputParameters:
- name: isin
in: body
type: string
description: The ISIN of the security.
call: factset-pricing.get-price
with:
isin: '{{isin}}'
consumes:
- type: http
namespace: factset-pricing
baseUri: https://api.factset.com/content/factset-prices/v1
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_api_key
resources:
- name: prices
path: /fixed-income/prices
inputParameters:
- name: isin
in: query
operations:
- name: get-price
method: GET
Scans a Docker container image with Falco for runtime vulnerabilities, checks compliance with Open Policy Agent, and logs findings in ServiceNow for security review.
naftiko: '0.5'
info:
label: Docker Container Security Scan Pipeline
description: Scans a Docker container image with Falco for runtime vulnerabilities, checks compliance with Open Policy Agent, and logs findings in ServiceNow for security review.
tags:
- security
- container-security
- docker
- falco
- open-policy-agent
- servicenow
capability:
exposes:
- type: mcp
namespace: container-security
port: 8080
tools:
- name: scan-container
description: Scan a Docker image for vulnerabilities, check policy compliance, and log security findings.
inputParameters:
- name: image_name
in: body
type: string
description: The Docker image name with tag (e.g. registry.bnpparibas.net/app:v1.2).
- name: namespace
in: body
type: string
description: The Kubernetes namespace where the image runs.
steps:
- name: vulnerability-scan
type: call
call: falco.scan-image
with:
image: '{{image_name}}'
- name: policy-check
type: call
call: opa.evaluate-policy
with:
policy_path: container/security
input: '{{image_name}}'
- name: log-findings
type: call
call: servicenow.create-task
with:
short_description: 'Container scan: {{image_name}}'
description: 'Falco vulnerabilities: critical={{vulnerability-scan.critical_count}}, high={{vulnerability-scan.high_count}}. OPA policy: {{policy-check.decision}}. Namespace: {{namespace}}. Base image: {{vulnerability-scan.base_image}}.'
assigned_group: AppSec_Team
category: container_security
consumes:
- type: http
namespace: falco
baseUri: https://falco.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.falco_token
resources:
- name: scans
path: /scans
operations:
- name: scan-image
method: POST
- type: http
namespace: opa
baseUri: https://opa.bnpparibas.net/v1
authentication:
type: bearer
token: $secrets.opa_token
resources:
- name: policies
path: /data/{{policy_path}}
inputParameters:
- name: policy_path
in: path
operations:
- name: evaluate-policy
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Triggers Informatica data flows, validates quality in Snowflake, publishes metadata to Azure Data Catalog, and notifies data stewards via Microsoft Teams.
naftiko: '0.5'
info:
label: Data Lake Ingestion Pipeline
description: Triggers Informatica data flows, validates quality in Snowflake, publishes metadata to Azure Data Catalog, and notifies data stewards via Microsoft Teams.
tags:
- data-engineering
- informatica
- snowflake
- azure-data-factory
capability:
exposes:
- type: mcp
namespace: data-ingestion
port: 8080
tools:
- name: ingest-data
description: Trigger data ingestion with quality validation and notification.
inputParameters:
- name: source_name
in: body
type: string
description: Data source name.
- name: dataset
in: body
type: string
description: Target dataset.
steps:
- name: trigger-flow
type: call
call: informatica.run-task
with:
task_name: ingest-{{source_name}}
- name: validate-quality
type: call
call: snowflake.execute-statement
with:
statement: CALL DQ.VALIDATE('{{dataset}}')
- name: publish-metadata
type: call
call: adf.trigger-pipeline
with:
pipeline_name: catalog-{{dataset}}
consumes:
- type: http
namespace: informatica
baseUri: https://dm-us.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: tasks
path: /task/run
operations:
- name: run-task
method: POST
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: adf
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: pipelines
path: /subscriptions/$secrets.azure_sub_id/resourceGroups/data/providers/Microsoft.DataFactory/factories/bnp-adf/pipelines/{{pipeline_name}}/createRun
inputParameters:
- name: pipeline_name
in: path
operations:
- name: trigger-pipeline
method: POST
Provisions a new VMware virtual machine, configures networking via Palo Alto Networks firewall rules, registers in ServiceNow CMDB, and sets up Datadog monitoring.
naftiko: '0.5'
info:
label: VMware VM Provisioning Pipeline
description: Provisions a new VMware virtual machine, configures networking via Palo Alto Networks firewall rules, registers in ServiceNow CMDB, and sets up Datadog monitoring.
tags:
- infrastructure
- vmware
- palo-alto-networks
- servicenow
- datadog
capability:
exposes:
- type: mcp
namespace: vm-provisioning
port: 8080
tools:
- name: provision-vm
description: Create a VMware VM, configure firewall rules, register in CMDB, and enable monitoring.
inputParameters:
- name: vm_name
in: body
type: string
description: The virtual machine name.
- name: template
in: body
type: string
description: The VMware template to clone from.
- name: network_zone
in: body
type: string
description: The target network zone (e.g. dmz, internal, restricted).
- name: owner_team
in: body
type: string
description: The owning team name.
steps:
- name: create-vm
type: call
call: vmware.clone-vm
with:
name: '{{vm_name}}'
template: '{{template}}'
cluster: bnp-prod-cluster
- name: configure-firewall
type: call
call: paloalto.create-rule
with:
rule_name: allow-{{vm_name}}
source_zone: '{{network_zone}}'
destination: '{{create-vm.ip_address}}'
- name: register-cmdb
type: call
call: servicenow.create-ci
with:
name: '{{vm_name}}'
class: cmdb_ci_vmware_instance
ip_address: '{{create-vm.ip_address}}'
owned_by: '{{owner_team}}'
description: 'VMware VM from template {{template}}. Zone: {{network_zone}}. Firewall rule: {{configure-firewall.rule_id}}.'
- name: enable-monitoring
type: call
call: datadog.create-monitor
with:
name: '{{vm_name}}-health'
type: metric alert
query: avg(last_5m):avg:system.cpu.idle{host:{{vm_name}}} < 10
consumes:
- type: http
namespace: vmware
baseUri: https://vcenter.bnpparibas.net/api
authentication:
type: bearer
token: $secrets.vcenter_token
resources:
- name: vms
path: /vcenter/vm
operations:
- name: clone-vm
method: POST
- type: http
namespace: paloalto
baseUri: https://panorama.bnpparibas.net/restapi/v10.2
authentication:
type: apiKey
name: X-PAN-KEY
in: header
value: $secrets.paloalto_api_key
resources:
- name: security-rules
path: /Policies/SecurityRules
operations:
- name: create-rule
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci
operations:
- name: create-ci
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v1
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
Queries Elasticsearch for error patterns in application logs, correlates with Datadog traces, and creates a ServiceNow problem record for recurring issues.
naftiko: '0.5'
info:
label: Elasticsearch Log Analysis Pipeline
description: Queries Elasticsearch for error patterns in application logs, correlates with Datadog traces, and creates a ServiceNow problem record for recurring issues.
tags:
- observability
- logging
- elasticsearch
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: log-analysis
port: 8080
tools:
- name: analyze-error-pattern
description: Search for error patterns in Elasticsearch, correlate with Datadog traces, and create a problem record if recurring.
inputParameters:
- name: application
in: body
type: string
description: The application name to search logs for.
- name: error_pattern
in: body
type: string
description: The error pattern regex to search for.
- name: time_range
in: body
type: string
description: Time range for the search (e.g. 24h, 7d).
steps:
- name: search-logs
type: call
call: elasticsearch.search
with:
index: logs-{{application}}-*
query: '{{error_pattern}}'
time_range: '{{time_range}}'
- name: get-traces
type: call
call: datadog.search-traces
with:
service: '{{application}}'
query: status:error
time_range: '{{time_range}}'
- name: create-problem
type: call
call: servicenow.create-problem
with:
short_description: 'Recurring error: {{application}} — {{error_pattern}}'
description: 'Error occurrences: {{search-logs.total_hits}} in last {{time_range}}. Correlated Datadog traces: {{get-traces.trace_count}}. Top error: {{search-logs.top_message}}. First seen: {{search-logs.first_occurrence}}.'
assigned_group: Application_Support
category: application_error
consumes:
- type: http
namespace: elasticsearch
baseUri: https://elasticsearch.bnpparibas.net:9200
authentication:
type: basic
username: $secrets.elastic_user
password: $secrets.elastic_password
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: traces
path: /traces/search
operations:
- name: search-traces
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Checks Apache Kafka cluster health, consumer group lag, and topic throughput, then logs degradation alerts in ServiceNow for platform engineering review.
naftiko: '0.5'
info:
label: Kafka Event Stream Health Monitor
description: Checks Apache Kafka cluster health, consumer group lag, and topic throughput, then logs degradation alerts in ServiceNow for platform engineering review.
tags:
- infrastructure
- streaming
- apache-kafka
- servicenow
capability:
exposes:
- type: mcp
namespace: kafka-ops
port: 8080
tools:
- name: check-kafka-health
description: Monitor Kafka cluster health and consumer group lag, creating ServiceNow alerts for degradation.
inputParameters:
- name: cluster_id
in: body
type: string
description: The Kafka cluster identifier.
- name: consumer_group
in: body
type: string
description: The consumer group to monitor.
steps:
- name: get-cluster-health
type: call
call: kafka.get-cluster
with:
cluster_id: '{{cluster_id}}'
- name: get-consumer-lag
type: call
call: kafka.get-consumer-lag
with:
cluster_id: '{{cluster_id}}'
consumer_group: '{{consumer_group}}'
- name: create-alert
type: call
call: servicenow.create-incident
with:
short_description: 'Kafka lag alert: {{consumer_group}} on {{cluster_id}}'
description: 'Cluster status: {{get-cluster-health.status}}. Broker count: {{get-cluster-health.broker_count}}. Consumer group {{consumer_group}} total lag: {{get-consumer-lag.total_lag}} messages.'
assigned_group: Platform_Engineering
category: kafka_monitoring
consumes:
- type: http
namespace: kafka
baseUri: https://kafka-rest.bnpparibas.net/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: clusters
path: /clusters/{{cluster_id}}
inputParameters:
- name: cluster_id
in: path
operations:
- name: get-cluster
method: GET
- name: consumer-groups
path: /clusters/{{cluster_id}}/consumer-groups/{{consumer_group}}/lags
inputParameters:
- name: cluster_id
in: path
- name: consumer_group
in: path
operations:
- name: get-consumer-lag
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/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 health status and error rate of a given service, used by SRE teams to assess production stability.
naftiko: '0.5'
info:
label: Datadog APM Service Health
description: Queries Datadog for the health status and error rate of a given service, used by SRE teams to assess production stability.
tags:
- monitoring
- observability
- datadog
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-service-health
description: Retrieve the current health status, latency, and error rate for a service from Datadog APM.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog service name.
call: datadog.get-service-metrics
with:
service_name: '{{service_name}}'
outputParameters:
- name: status
type: string
mapping: $.data.attributes.status
- name: error_rate
type: number
mapping: $.data.attributes.errorRate
- name: avg_latency_ms
type: number
mapping: $.data.attributes.avgLatencyMs
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.eu/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: services
path: /services/{{service_name}}/metrics
inputParameters:
- name: service_name
in: path
operations:
- name: get-service-metrics
method: GET
Searches the Workday employee directory by name or department, returning employee profiles and organizational hierarchy.
naftiko: '0.5'
info:
label: Workday Employee Directory Search
description: Searches the Workday employee directory by name or department, returning employee profiles and organizational hierarchy.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: workday-dir
port: 8080
tools:
- name: search-employees
description: Search Workday employee directory by name or department.
inputParameters:
- name: search_query
in: body
type: string
description: Search term for employee name or department.
call: workday-dir.search-workers
with:
query: '{{search_query}}'
consumes:
- type: http
namespace: workday-dir
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers
inputParameters:
- name: query
in: query
operations:
- name: search-workers
method: GET
Checks the status of a payment instruction in SAP, returning execution status, value date, and beneficiary details for treasury operations.
naftiko: '0.5'
info:
label: SAP Payment Instruction Status
description: Checks the status of a payment instruction in SAP, returning execution status, value date, and beneficiary details for treasury operations.
tags:
- payments
- treasury
- sap
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: get-payment-status
description: Retrieve the status of a SAP payment instruction by document number.
inputParameters:
- name: payment_doc_number
in: body
type: string
description: The SAP payment document number.
call: sap.get-payment
with:
payment_doc_number: '{{payment_doc_number}}'
outputParameters:
- name: status
type: string
mapping: $.d.PaymentStatus
- name: value_date
type: string
mapping: $.d.ValueDate
- name: amount
type: number
mapping: $.d.Amount
- name: currency
type: string
mapping: $.d.Currency
consumes:
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap/FI_PAYMENT_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: payments
path: /A_PaymentInstruction('{{payment_doc_number}}')
inputParameters:
- name: payment_doc_number
in: path
operations:
- name: get-payment
method: GET
Triggers Oracle database failover, verifies replication health, checks application connectivity via Datadog, and logs results in ServiceNow.
naftiko: '0.5'
info:
label: Database Failover Test Pipeline
description: Triggers Oracle database failover, verifies replication health, checks application connectivity via Datadog, and logs results in ServiceNow.
tags:
- disaster-recovery
- oracle
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: db-failover
port: 8080
tools:
- name: test-failover
description: Execute and verify a database failover test.
inputParameters:
- name: db_name
in: body
type: string
description: Oracle database name.
steps:
- name: trigger-failover
type: call
call: oracle.initiate-failover
with:
database: '{{db_name}}'
- name: verify-health
type: call
call: datadog.query-metrics
with:
query: avg:oracle.db.connections{db:{{db_name}}}
- name: log-result
type: call
call: servicenow.create-change-request
with:
short_description: 'DR failover test: {{db_name}}'
description: 'Failover status: {{trigger-failover.status}}. Connections: {{verify-health.value}}.'
consumes:
- type: http
namespace: oracle
baseUri: https://oracle.bnpparibas.com/em/api/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: databases
path: /databases/{{database}}/failover
inputParameters:
- name: database
in: path
operations:
- name: initiate-failover
method: POST
- 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
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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-request
method: POST
Checks n8n workflow execution status, retrieves execution logs, and creates ServiceNow tickets for failed automations that require manual intervention.
naftiko: '0.5'
info:
label: n8n Workflow Automation Monitor
description: Checks n8n workflow execution status, retrieves execution logs, and creates ServiceNow tickets for failed automations that require manual intervention.
tags:
- automation
- n8n
- servicenow
capability:
exposes:
- type: mcp
namespace: workflow-monitor
port: 8080
tools:
- name: monitor-workflow
description: Check n8n workflow execution status and create ServiceNow ticket for failures.
inputParameters:
- name: workflow_id
in: body
type: string
description: The n8n workflow ID.
- name: execution_id
in: body
type: string
description: The n8n execution ID to check.
steps:
- name: get-execution
type: call
call: n8n.get-execution
with:
workflow_id: '{{workflow_id}}'
execution_id: '{{execution_id}}'
- name: create-ticket
type: call
call: servicenow.create-task
with:
short_description: 'n8n workflow failure: {{workflow_id}} — execution {{execution_id}}'
description: 'Workflow status: {{get-execution.status}}. Error node: {{get-execution.error_node}}. Error message: {{get-execution.error_message}}. Started: {{get-execution.started_at}}. Failed: {{get-execution.finished_at}}.'
assigned_group: Automation_Support
category: workflow_failure
consumes:
- type: http
namespace: n8n
baseUri: https://n8n.bnpparibas.net/api/v1
authentication:
type: bearer
token: $secrets.n8n_api_key
resources:
- name: executions
path: /workflows/{{workflow_id}}/executions/{{execution_id}}
inputParameters:
- name: workflow_id
in: path
- name: execution_id
in: path
operations:
- name: get-execution
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Aggregates subsidiary balances from Temenos, optimizes allocation in Oracle, executes sweeps via SWIFT, and reports to treasury via Power BI.
naftiko: '0.5'
info:
label: Treasury Cash Pooling Pipeline
description: Aggregates subsidiary balances from Temenos, optimizes allocation in Oracle, executes sweeps via SWIFT, and reports to treasury via Power BI.
tags:
- treasury
- temenos-transact
- oracle
- swift
- power-bi
capability:
exposes:
- type: mcp
namespace: cash-pooling
port: 8080
tools:
- name: execute-cash-pooling
description: Aggregate balances and execute intercompany cash sweeps.
inputParameters:
- name: pool_id
in: body
type: string
description: Cash pool identifier.
steps:
- name: get-balances
type: call
call: temenos.get-pool-balances
with:
pool_id: '{{pool_id}}'
- name: optimize
type: call
call: oracle.calculate-sweeps
with:
pool_id: '{{pool_id}}'
balances: '{{get-balances.accounts}}'
- name: execute-sweeps
type: call
call: swift.send-mt202
with:
sweeps: '{{optimize.sweep_instructions}}'
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: cash-pooling
consumes:
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: pools
path: /treasury/pools/{{pool_id}}/balances
inputParameters:
- name: pool_id
in: path
operations:
- name: get-pool-balances
method: GET
- type: http
namespace: oracle
baseUri: https://oracle.bnpparibas.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: sweeps
path: /treasury/sweeps/calculate
operations:
- name: calculate-sweeps
method: POST
- type: http
namespace: swift
baseUri: https://swift.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.swift_token
resources:
- name: messages
path: /messages/mt202/batch
operations:
- name: send-mt202
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
Calculates margin requirements from SimCorp Dimension, matches against available collateral in SAP, and triggers margin call notifications through ServiceNow and Bloomberg messaging.
naftiko: '0.5'
info:
label: Collateral Management Orchestrator
description: Calculates margin requirements from SimCorp Dimension, matches against available collateral in SAP, and triggers margin call notifications through ServiceNow and Bloomberg messaging.
tags:
- collateral-management
- simcorp-dimension
- sap
- servicenow
- bloomberg
capability:
exposes:
- type: mcp
namespace: collateral-mgmt
port: 8080
tools:
- name: process-margin-call
description: Calculate margin requirements, check collateral availability, and issue margin call notifications.
inputParameters:
- name: agreement_id
in: body
type: string
description: The collateral agreement identifier.
- name: counterparty_code
in: body
type: string
description: The counterparty code.
steps:
- name: get-margin-requirement
type: call
call: simcorp.get-margin
with:
agreement_id: '{{agreement_id}}'
- name: get-available-collateral
type: call
call: sap.get-collateral-pool
with:
counterparty: '{{counterparty_code}}'
- name: create-margin-call
type: call
call: servicenow.create-task
with:
short_description: 'Margin call: {{counterparty_code}} — Agreement {{agreement_id}}'
description: 'Required margin: {{get-margin-requirement.required_amount}} {{get-margin-requirement.currency}}. Available collateral: {{get-available-collateral.total_value}}. Shortfall: {{get-margin-requirement.shortfall}}.'
assigned_group: Collateral_Management
category: margin_call
priority: '2'
consumes:
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: margins
path: /agreements/{{agreement_id}}/margin
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-margin
method: GET
- type: http
namespace: sap
baseUri: https://bnp-s4.sap.com/sap/opu/odata/sap/FI_COLLATERAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: collateral
path: /A_CollateralPool(Counterparty='{{counterparty}}')
inputParameters:
- name: counterparty
in: path
operations:
- name: get-collateral-pool
method: GET
- type: http
namespace: servicenow
baseUri: https://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves the status of a SWIFT payment message by reference number, returning delivery status, acknowledgments, and timestamps.
naftiko: '0.5'
info:
label: SWIFT Message Status Check
description: Retrieves the status of a SWIFT payment message by reference number, returning delivery status, acknowledgments, and timestamps.
tags:
- payments
- swift
capability:
exposes:
- type: mcp
namespace: swift-gpi
port: 8080
tools:
- name: get-message-status
description: Check the delivery status of a SWIFT payment message by reference.
inputParameters:
- name: reference
in: body
type: string
description: The SWIFT UETR or reference number.
call: swift-gpi.get-status
with:
reference: '{{reference}}'
consumes:
- type: http
namespace: swift-gpi
baseUri: https://api.swift.com/gpi/v4
authentication:
type: bearer
token: $secrets.swift_gpi_token
resources:
- name: tracking
path: /payments/{{reference}}/status
inputParameters:
- name: reference
in: path
operations:
- name: get-status
method: GET
Retrieves vendor details from SAP Ariba, screens through Moody's risk database, assesses IT risk via Fortinet vulnerability scan, and creates a risk review in ServiceNow.
naftiko: '0.5'
info:
label: Vendor Risk Assessment Orchestrator
description: Retrieves vendor details from SAP Ariba, screens through Moody's risk database, assesses IT risk via Fortinet vulnerability scan, and creates a risk review in ServiceNow.
tags:
- third-party-risk
- vendor-management
- sap-ariba
- moodys
- fortinet
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: Compile vendor risk assessment from procurement, credit, and security data sources.
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP Ariba vendor identifier.
- name: vendor_domain
in: body
type: string
description: The vendor's primary domain for security scanning.
steps:
- name: get-vendor
type: call
call: ariba.get-vendor
with:
vendor_id: '{{vendor_id}}'
- name: screen-vendor
type: call
call: moodys.screen-entity
with:
entity_name: '{{get-vendor.company_name}}'
country: '{{get-vendor.country}}'
- name: scan-security
type: call
call: fortinet.scan-domain
with:
domain: '{{vendor_domain}}'
- name: create-review
type: call
call: servicenow.create-task
with:
short_description: 'Vendor risk review: {{get-vendor.company_name}}'
description: 'Ariba vendor: {{vendor_id}}. Moody''s risk level: {{screen-vendor.risk_level}}. Score: {{screen-vendor.score}}. Security scan: {{scan-security.risk_grade}}. Vulnerabilities: {{scan-security.vuln_count}}. Contract value: {{get-vendor.contract_value}}.'
assigned_group: Third_Party_Risk
category: vendor_risk_assessment
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: vendors
path: /vendors/{{vendor_id}}
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: moodys
baseUri: https://api.moodys.com/screening/v1
authentication:
type: bearer
token: $secrets.moodys_api_key
resources:
- name: entities
path: /screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: fortinet
baseUri: https://fortiguard.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.fortinet_token
resources:
- name: scans
path: /scans/domain
operations:
- name: scan-domain
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Validates a Terraform plan, checks policy compliance with Open Policy Agent, requests approval via ServiceNow change request, and applies the infrastructure change on Azure.
naftiko: '0.5'
info:
label: Terraform Infrastructure Provisioning with Approval
description: Validates a Terraform plan, checks policy compliance with Open Policy Agent, requests approval via ServiceNow change request, and applies the infrastructure change on Azure.
tags:
- infrastructure
- terraform
- open-policy-agent
- servicenow
- azure
capability:
exposes:
- type: mcp
namespace: infra-provision
port: 8080
tools:
- name: provision-infrastructure
description: Validate Terraform plan, check OPA policy, create change request, and apply infrastructure on Azure.
inputParameters:
- name: workspace_name
in: body
type: string
description: The Terraform Cloud workspace name.
- name: run_id
in: body
type: string
description: The Terraform plan run ID.
- name: requestor_email
in: body
type: string
description: The email of the infrastructure requestor.
steps:
- name: get-plan
type: call
call: terraform.get-run
with:
workspace: '{{workspace_name}}'
run_id: '{{run_id}}'
- name: check-policy
type: call
call: opa.evaluate-policy
with:
policy_path: infrastructure/azure
input: '{{get-plan.plan_json}}'
- name: create-change-request
type: call
call: servicenow.create-change
with:
short_description: 'Terraform apply: {{workspace_name}}'
description: 'Run: {{run_id}}. Resources to add: {{get-plan.resources_to_add}}. Resources to change: {{get-plan.resources_to_change}}. OPA policy result: {{check-policy.decision}}. Requestor: {{requestor_email}}.'
assigned_group: Cloud_Engineering
category: infrastructure_change
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /workspaces/{{workspace}}/runs/{{run_id}}
inputParameters:
- name: workspace
in: path
- name: run_id
in: path
operations:
- name: get-run
method: GET
- type: http
namespace: opa
baseUri: https://opa.bnpparibas.net/v1
authentication:
type: bearer
token: $secrets.opa_token
resources:
- name: policies
path: /data/{{policy_path}}
inputParameters:
- name: policy_path
in: path
operations:
- name: evaluate-policy
method: POST
- type: http
namespace: servicenow
baseUri: https://bnpparibas.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
Aggregates cash positions from Temenos, monitors intraday limits, generates alerts in Datadog, and reports to treasury via Power BI.
naftiko: '0.5'
info:
label: Liquidity Monitoring Pipeline
description: Aggregates cash positions from Temenos, monitors intraday limits, generates alerts in Datadog, and reports to treasury via Power BI.
tags:
- treasury
- temenos-transact
- datadog
- power-bi
capability:
exposes:
- type: mcp
namespace: liquidity-monitor
port: 8080
tools:
- name: monitor-liquidity
description: Monitor intraday liquidity positions with alerting and reporting.
inputParameters:
- name: entity_code
in: body
type: string
description: Legal entity code.
steps:
- name: get-positions
type: call
call: temenos.get-cash-positions
with:
entity: '{{entity_code}}'
- name: check-limits
type: call
call: datadog.query-metrics
with:
query: sum:treasury.liquidity{entity:{{entity_code}}}
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: liquidity-{{entity_code}}
consumes:
- type: http
namespace: temenos
baseUri: https://temenos.bnpparibas.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: cash
path: /treasury/cash-positions
inputParameters:
- name: entity
in: query
operations:
- name: get-cash-positions
method: GET
- 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
- 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
Detects anomalies in Bloomberg trade data, runs pattern analysis in Snowflake, creates cases in ServiceNow, and alerts compliance via Microsoft Teams.
naftiko: '0.5'
info:
label: Trade Surveillance Investigation Pipeline
description: Detects anomalies in Bloomberg trade data, runs pattern analysis in Snowflake, creates cases in ServiceNow, and alerts compliance via Microsoft Teams.
tags:
- surveillance
- bloomberg
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-surveillance
port: 8080
tools:
- name: investigate-anomaly
description: Investigate a trade surveillance alert with analysis and case creation.
inputParameters:
- name: alert_id
in: body
type: string
description: Surveillance alert identifier.
steps:
- name: get-trade-data
type: call
call: bloomberg.get-trade-history
with:
alert_id: '{{alert_id}}'
- name: analyze-patterns
type: call
call: snowflake.execute-statement
with:
statement: CALL SURVEILLANCE.ANALYZE_PATTERN('{{alert_id}}')
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'Trade surveillance: {{alert_id}}'
description: 'Pattern: {{analyze-patterns.pattern_type}}. Confidence: {{analyze-patterns.confidence}}.'
category: surveillance
- name: notify-compliance
type: call
call: msteams.send-message
with:
recipient_upn: compliance@bnpparibas.com
text: 'Surveillance alert {{alert_id}}: {{analyze-patterns.pattern_type}}. Case: {{create-case.number}}.'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: trades
path: /trades/history
inputParameters:
- name: alert_id
in: query
operations:
- name: get-trade-history
method: GET
- type: http
namespace: snowflake
baseUri: https://bnpparibas.snowflakecomputing.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://bnpparibas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Queries Oracle Enterprise Manager for database instance status, tablespace usage, and active sessions for a given database SID.
naftiko: '0.5'
info:
label: Oracle Database Health Check
description: Queries Oracle Enterprise Manager for database instance status, tablespace usage, and active sessions for a given database SID.
tags:
- databases
- oracle
- oracle-enterprise-manager
- monitoring
capability:
exposes:
- type: mcp
namespace: db-ops
port: 8080
tools:
- name: get-db-health
description: Retrieve health metrics for an Oracle database instance including status, tablespace usage, and active session count.
inputParameters:
- name: db_sid
in: body
type: string
description: The Oracle database SID.
call: oem.get-db-status
with:
db_sid: '{{db_sid}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: tablespace_pct
type: number
mapping: $.tablespaceUsedPct
- name: active_sessions
type: number
mapping: $.activeSessions
consumes:
- type: http
namespace: oem
baseUri: https://oem.bnpparibas.net/em/websvcs/restful/emws/db
authentication:
type: basic
username: $secrets.oem_user
password: $secrets.oem_password
resources:
- name: databases
path: /targets/{{db_sid}}/health
inputParameters:
- name: db_sid
in: path
operations:
- name: get-db-status
method: GET
Detects corporate actions from Bloomberg, updates positions in SimCorp, notifies portfolio managers via email, and logs in Confluence.
naftiko: '0.5'
info:
label: Corporate Event Notification Pipeline
description: Detects corporate actions from Bloomberg, updates positions in SimCorp, notifies portfolio managers via email, and logs in Confluence.
tags:
- corporate-actions
- bloomberg
- simcorp-dimension
- confluence
capability:
exposes:
- type: mcp
namespace: corp-events
port: 8080
tools:
- name: process-corporate-event
description: Process a corporate action event across systems.
inputParameters:
- name: event_id
in: body
type: string
description: Bloomberg corporate action event ID.
steps:
- name: get-event
type: call
call: bloomberg.get-corporate-action
with:
event_id: '{{event_id}}'
- name: update-positions
type: call
call: simcorp.apply-corporate-action
with:
isin: '{{get-event.isin}}'
action_type: '{{get-event.action_type}}'
- name: log-action
type: call
call: confluence.create-page
with:
space_key: OPS
title: 'Corporate Action: {{get-event.action_type}} — {{get-event.isin}}'
body: 'Event: {{get-event.description}}. Portfolios affected: {{update-positions.count}}.'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_api_key
resources:
- name: corporate-actions
path: /corporate-actions/{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-corporate-action
method: GET
- type: http
namespace: simcorp
baseUri: https://simcorp.bnpparibas.net/api/v2
authentication:
type: bearer
token: $secrets.simcorp_token
resources:
- name: corporate-actions
path: /corporate-actions/apply
operations:
- name: apply-corporate-action
method: POST
- type: http
namespace: confluence
baseUri: https://bnpparibas.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 a travel request status from SAP Concur.
naftiko: '0.5'
info:
label: SAP Concur Travel Request Lookup
description: Retrieves a travel request status from SAP Concur.
tags:
- finance
- sap-concur
capability:
exposes:
- type: mcp
namespace: travel-requests
port: 8080
tools:
- name: get-travel-request
description: Look up SAP Concur travel request status.
inputParameters:
- name: request_id
in: body
type: string
description: Concur travel request ID.
call: concur.get-request
with:
request_id: '{{request_id}}'
outputParameters:
- name: status
type: string
mapping: $.ApprovalStatusName
- name: total_cost
type: number
mapping: $.TotalPostedAmount
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: requests
path: /travelrequest/requests/{{request_id}}
inputParameters:
- name: request_id
in: path
operations:
- name: get-request
method: GET
Routes customer complaints from Salesforce to ServiceNow, assigns priority, and notifies the resolution team via Slack.
naftiko: '0.5'
info:
label: Customer Complaint Routing Orchestrator
description: Routes customer complaints from Salesforce to ServiceNow, assigns priority, and notifies the resolution team via Slack.
tags:
- support
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: customer-complaint-routing
port: 8080
tools:
- name: customer-complaint-routing
description: Routes customer complaints from Salesforce to ServiceNow.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Customer Complaint Routing for {{entity_id}}
- name: update-sf
type: call
call: salesforce.update-opp
with:
entity_id: '{{entity_id}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Customer Complaint Routing processed for {{entity_id}}
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: salesforce
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: objects
path: /sobjects
operations:
- name: get-lead
method: GET
- name: create-lead
method: POST
- name: update-opp
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
Compiles regulatory data from Snowflake, validates compliance, and publishes reports to Confluence.
naftiko: '0.5'
info:
label: Regulatory Reporting Submission Orchestrator
description: Compiles regulatory data from Snowflake, validates compliance, and publishes reports to Confluence.
tags:
- compliance
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: regulatory-reporting-submissio
port: 8080
tools:
- name: regulatory-reporting-submission
description: Compiles regulatory data from Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Regulatory Reporting Submission
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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
Pulls a headcount snapshot from Workday by cost center and department, returning employee count and full-time equivalent figures for workforce planning.
naftiko: '0.5'
info:
label: Workday Headcount Snapshot
description: Pulls a headcount snapshot from Workday by cost center and department, returning employee count and full-time equivalent figures for workforce planning.
tags:
- hr
- reporting
- workday
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Given a Workday cost center ID and optional department, return total headcount and FTE count. Use for workforce planning dashboards or period-end reporting.
inputParameters:
- name: cost_center_id
in: body
type: string
description: The Workday cost center ID to filter headcount.
- name: department
in: body
type: string
description: Optional department name to further filter results.
call: workday-hc.get-headcount
with:
costCenterId: '{{cost_center_id}}'
department: '{{department}}'
outputParameters:
- name: total_headcount
type: integer
mapping: $.data.totalHeadcount
- name: fte_count
type: number
mapping: $.data.fteCount
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: headcount
path: /headcount
inputParameters:
- name: costCenterId
in: query
- name: department
in: query
operations:
- name: get-headcount
method: GET
Assesses vendor security posture, logs findings in ServiceNow, and publishes results to Confluence.
naftiko: '0.5'
info:
label: Vendor Security Assessment Orchestrator
description: Assesses vendor security posture, logs findings in ServiceNow, and publishes results to Confluence.
tags:
- security
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: vendor-security-assessment
port: 8080
tools:
- name: vendor-security-assessment
description: Assesses vendor security posture.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Vendor Security Assessment for {{entity_id}}
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Vendor Security Assessment
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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 AML alerts by enriching with Snowflake data, creating ServiceNow cases, and notifying compliance via Slack.
naftiko: '0.5'
info:
label: Anti-Money Laundering Alert Orchestrator
description: Processes AML alerts by enriching with Snowflake data, creating ServiceNow cases, and notifying compliance via Slack.
tags:
- compliance
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: anti-money-laundering-alert
port: 8080
tools:
- name: anti-money-laundering-alert
description: Processes AML alerts by enriching with Snowflake data.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Anti-Money Laundering Alert for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Anti-Money Laundering Alert processed for {{entity_id}}
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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 the member count for a Slack channel.
naftiko: '0.5'
info:
label: Slack Channel Membership Lookup
description: Retrieves the member count for a Slack channel.
tags:
- collaboration
- slack
capability:
exposes:
- type: mcp
namespace: slack-info
port: 8080
tools:
- name: get-channel-members
description: Look up Slack channel member count.
inputParameters:
- name: channel_id
in: body
type: string
description: Slack channel ID.
call: slack.get-channel-info
with:
channel: '{{channel_id}}'
outputParameters:
- name: member_count
type: number
mapping: $.channel.num_members
- name: name
type: string
mapping: $.channel.name
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: channels
path: /conversations.info?channel={{channel_id}}
operations:
- name: get-channel-info
method: GET
Monitors branch network via SolarWinds, creates ServiceNow incidents for outages, and notifies IT.
naftiko: '0.5'
info:
label: Branch Network Performance Orchestrator
description: Monitors branch network via SolarWinds, creates ServiceNow incidents for outages, and notifies IT.
tags:
- network
- solarwinds
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: branch-network-performance
port: 8080
tools:
- name: branch-network-performance
description: Monitors branch network via SolarWinds.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Branch Network Performance for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Branch Network Performance processed for {{entity_id}}
- name: get-alerts
type: call
call: solarwinds.get-alerts
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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
- type: http
namespace: solarwinds
baseUri: https://solarwinds.capitalone.com/api/v2
authentication:
type: basic
username: $secrets.solarwinds_user
password: $secrets.solarwinds_password
resources:
- name: alerts
path: /alerts
operations:
- name: get-alerts
method: GET
Fetches market rate and benchmark index data from Bloomberg Data License and loads the snapshot into a Snowflake staging table for risk and treasury analytics.
naftiko: '0.5'
info:
label: Bloomberg Market Data Feed to Snowflake
description: Fetches market rate and benchmark index data from Bloomberg Data License and loads the snapshot into a Snowflake staging table for risk and treasury analytics.
tags:
- finance
- bloomberg
- snowflake
- market-data
- treasury
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: load-bloomberg-market-data
description: Given a Bloomberg field set and security list, fetch current market data and insert a snapshot row into Snowflake. Use for daily treasury mark-to-market updates.
inputParameters:
- name: securities
in: body
type: string
description: Comma-separated Bloomberg security identifiers.
- name: fields
in: body
type: string
description: Comma-separated Bloomberg field names (e.g., PX_LAST,YLD_YTM_MID).
- name: target_table
in: body
type: string
description: Fully qualified Snowflake target table for the data load.
steps:
- name: fetch-market-data
type: call
call: bloomberg.get-reference-data
with:
securities: '{{securities}}'
fields: '{{fields}}'
- name: load-to-snowflake
type: call
call: snowflake-mkt.execute-statement
with:
statement: INSERT INTO {{target_table}} SELECT PARSE_JSON('{{fetch-market-data.data}}')
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/fields
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: reference-data
path: /requests/referenceData
inputParameters:
- name: securities
in: body
- name: fields
in: body
operations:
- name: get-reference-data
method: POST
- type: http
namespace: snowflake-mkt
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statement
path: /statements
inputParameters:
- name: statement
in: body
operations:
- name: execute-statement
method: POST
When a Coupa purchase requisition is submitted, creates a ServiceNow approval task for the budget owner and sends an approval link via Microsoft Teams.
naftiko: '0.5'
info:
label: Coupa Purchase Requisition Approval
description: When a Coupa purchase requisition is submitted, creates a ServiceNow approval task for the budget owner and sends an approval link via Microsoft Teams.
tags:
- procurement
- coupa
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: trigger-po-approval
description: Given a Coupa requisition ID and budget owner email, open a ServiceNow approval task and notify the owner via Teams. Invoke when a new procurement requisition is awaiting budget approval.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Coupa purchase requisition ID.
- name: budget_owner_email
in: body
type: string
description: Email of the budget owner responsible for approval.
steps:
- name: get-requisition
type: call
call: coupa.get-requisition
with:
requisitionId: '{{requisition_id}}'
- name: create-approval-task
type: call
call: servicenow-po.create-approval-task
with:
description: PO requisition {{requisition_id}} for ${{get-requisition.total}} pending approval.
assignedTo: '{{budget_owner_email}}'
- name: notify-owner
type: call
call: msteams-po.send-message
with:
recipient: '{{budget_owner_email}}'
message: 'Coupa requisition {{requisition_id}} for ${{get-requisition.total}} requires your approval. Task: {{create-approval-task.taskId}}.'
consumes:
- type: http
namespace: coupa
baseUri: https://capitalone.coupahost.com/api
authentication:
type: apikey
key: X-COUPA-API-KEY
value: $secrets.coupa_api_key
placement: header
resources:
- name: requisition
path: /requisitions/{requisitionId}
inputParameters:
- name: requisitionId
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: servicenow-po
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: approval-task
path: /table/sc_task
inputParameters:
- name: description
in: body
- name: assignedTo
in: body
operations:
- name: create-approval-task
method: POST
- type: http
namespace: msteams-po
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Pulls actuals from Oracle EBS and budget data from Oracle Hyperion, computes variance by cost center, and publishes a Power BI dashboard refresh.
naftiko: '0.5'
info:
label: Oracle Hyperion Budget Variance Report
description: Pulls actuals from Oracle EBS and budget data from Oracle Hyperion, computes variance by cost center, and publishes a Power BI dashboard refresh.
tags:
- finance
- budgeting
- oracle-hyperion
- oracle-ebs
- power-bi
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: publish-budget-variance-report
description: Given a fiscal period and cost center, fetch actuals from Oracle EBS, compare to Hyperion budget targets, and trigger a Power BI dataset refresh. Use for monthly close reporting.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period in YYYY-MM format.
- name: cost_center
in: body
type: string
description: The cost center code to report on.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
steps:
- name: get-actuals
type: call
call: oracle-ebs.get-actuals
with:
fiscalPeriod: '{{fiscal_period}}'
costCenter: '{{cost_center}}'
- name: get-budget
type: call
call: oracle-hyperion.get-budget
with:
fiscalPeriod: '{{fiscal_period}}'
costCenter: '{{cost_center}}'
- name: refresh-dataset
type: call
call: powerbi.trigger-refresh
with:
datasetId: '{{dataset_id}}'
consumes:
- type: http
namespace: oracle-ebs
baseUri: https://capitalone-ebs.oraclecloud.com/fscmRestApi/resources/11.13.18.05
authentication:
type: bearer
token: $secrets.oracle_ebs_token
resources:
- name: actuals
path: /generalLedgerJournalEntries
inputParameters:
- name: fiscalPeriod
in: query
- name: costCenter
in: query
operations:
- name: get-actuals
method: GET
- type: http
namespace: oracle-hyperion
baseUri: https://capitalone-hyperion.oraclecloud.com/HyperionPlanning/rest/v3
authentication:
type: bearer
token: $secrets.hyperion_token
resources:
- name: budget
path: /applications/Planning/plans
inputParameters:
- name: fiscalPeriod
in: query
- name: costCenter
in: query
operations:
- name: get-budget
method: GET
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refresh
path: /datasets/{datasetId}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: trigger-refresh
method: POST
Analyzes Snowflake warehouse utilization, identifies savings, and creates Jira implementation tickets.
naftiko: '0.5'
info:
label: Data Lake Cost Optimization Orchestrator
description: Analyzes Snowflake warehouse utilization, identifies savings, and creates Jira implementation tickets.
tags:
- finops
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: data-lake-cost-optimization
port: 8080
tools:
- name: data-lake-cost-optimization
description: Analyzes Snowflake warehouse utilization.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-issue
type: call
call: jira.create-issue
with:
project: OPS
summary: Data Lake Cost Optimization - {{entity_id}}
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/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 benefits enrollment status for an employee in Workday.
naftiko: '0.5'
info:
label: Workday Benefits Enrollment Lookup
description: Retrieves benefits enrollment status for an employee in Workday.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: benefits-info
port: 8080
tools:
- name: get-benefits-enrollment
description: Look up benefits enrollment status.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID.
call: workday.get-benefits
with:
worker_id: '{{employee_id}}'
outputParameters:
- name: plan_name
type: string
mapping: $.benefits.current_plan
- name: status
type: string
mapping: $.benefits.enrollment_status
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: /capitalone/workers/{{worker_id}}/benefits
inputParameters:
- name: worker_id
in: path
operations:
- name: get-benefits
method: GET
When a GitHub Actions workflow fails, opens a Jira incident ticket, posts a Datadog event for observability, and notifies the on-call engineer via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub CI/CD Pipeline Failure Responder
description: When a GitHub Actions workflow fails, opens a Jira incident ticket, posts a Datadog event for observability, and notifies the on-call engineer via Microsoft Teams.
tags:
- devops
- cicd
- github
- jira
- datadog
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions run ID and repository name, retrieve failure details, open a Jira ticket, post a Datadog event, and notify the on-call engineer via Teams. Invoke on any failed workflow run.
inputParameters:
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
- name: repo
in: body
type: string
description: The repository name in owner/repo format.
- name: oncall_email
in: body
type: string
description: Email of the on-call engineer to notify.
steps:
- name: get-run-details
type: call
call: github.get-workflow-run
with:
runId: '{{run_id}}'
repo: '{{repo}}'
- name: open-jira-ticket
type: call
call: jira.create-issue
with:
summary: 'Pipeline failure: {{repo}} run {{run_id}}'
description: Workflow {{get-run-details.name}} failed at {{get-run-details.updated_at}}.
project: DEVOPS
issuetype: Bug
- name: post-datadog-event
type: call
call: datadog.create-event
with:
title: 'Pipeline failure: {{repo}}'
text: 'Run {{run_id}} failed. Jira: {{open-jira-ticket.issueKey}}'
alert_type: error
- name: notify-oncall
type: call
call: msteams-ci.send-message
with:
recipient: '{{oncall_email}}'
message: 'Pipeline failure in {{repo}}. Jira: {{open-jira-ticket.issueKey}}. Datadog event logged.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-run
path: /repos/{repo}/actions/runs/{runId}
inputParameters:
- name: repo
in: path
- name: runId
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issue
path: /issue
inputParameters:
- name: summary
in: body
- name: description
in: body
- name: project
in: body
- name: issuetype
in: body
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: event
path: /events
inputParameters:
- name: title
in: body
- name: text
in: body
- name: alert_type
in: body
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: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Evaluates credit limit changes using Databricks ML models, updates customer records, and notifies via email.
naftiko: '0.5'
info:
label: Credit Limit Adjustment Orchestrator
description: Evaluates credit limit changes using Databricks ML models, updates customer records, and notifies via email.
tags:
- banking
- databricks
- email
capability:
exposes:
- type: mcp
namespace: credit-limit-adjustment
port: 8080
tools:
- name: credit-limit-adjustment
description: Evaluates credit limit changes using Databricks ML models.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: send-email
type: call
call: email.send-message
with:
to: team@capitalone.com
subject: Credit Limit Adjustment
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: email
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.graph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-message
method: POST
Creates a ServiceNow change request for a planned infrastructure change, routes it through the CAB approval workflow, and notifies the change owner via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Management Approval
description: Creates a ServiceNow change request for a planned infrastructure change, routes it through the CAB approval workflow, and notifies the change owner via Microsoft Teams.
tags:
- itsm
- servicenow
- change-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-change-request
description: Given a change description, risk level, and implementation window, create a ServiceNow change request and notify the change owner via Teams. Use before deploying infrastructure changes.
inputParameters:
- name: description
in: body
type: string
description: Description of the planned change.
- name: risk_level
in: body
type: string
description: 'Risk level: low, medium, high.'
- name: start_date
in: body
type: string
description: Planned implementation start in ISO 8601 format.
- name: owner_email
in: body
type: string
description: Email of the change owner for Teams notification.
steps:
- name: create-change-request
type: call
call: servicenow-chg.create-change
with:
description: '{{description}}'
risk: '{{risk_level}}'
start_date: '{{start_date}}'
- name: notify-owner
type: call
call: msteams-chg.send-message
with:
recipient: '{{owner_email}}'
message: 'Change request {{create-change-request.changeNumber}} created for {{start_date}}. Risk: {{risk_level}}.'
consumes:
- type: http
namespace: servicenow-chg
baseUri: https://capitalone.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: description
in: body
- name: risk
in: body
- name: start_date
in: body
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-chg
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Retrieves code scanning alert count for a GitHub repository.
naftiko: '0.5'
info:
label: GitHub Code Scan Findings Lookup
description: Retrieves code scanning alert count for a GitHub repository.
tags:
- security
- github
capability:
exposes:
- type: mcp
namespace: code-scanning
port: 8080
tools:
- name: get-scan-findings
description: Look up GitHub code scanning alerts.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository (org/repo).
call: github.get-alerts
with:
repo: '{{repo_name}}'
outputParameters:
- name: alert_count
type: number
mapping: $.length
- name: critical_count
type: number
mapping: $.critical
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: alerts
path: /repos/{{repo}}/code-scanning/alerts
inputParameters:
- name: repo
in: path
operations:
- name: get-alerts
method: GET
Retrieves configuration item details from ServiceNow CMDB.
naftiko: '0.5'
info:
label: ServiceNow CMDB CI Lookup
description: Retrieves configuration item details from ServiceNow CMDB.
tags:
- infrastructure
- servicenow
capability:
exposes:
- type: mcp
namespace: cmdb-lookup
port: 8080
tools:
- name: get-ci-details
description: Look up ServiceNow CMDB configuration item.
inputParameters:
- name: ci_name
in: body
type: string
description: CI name.
call: servicenow.get-ci
with:
ci_name: '{{ci_name}}'
outputParameters:
- name: sys_id
type: string
mapping: $.result.sys_id
- name: category
type: string
mapping: $.result.category
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci?sysparm_query=name={{ci_name}}
operations:
- name: get-ci
method: GET
Analyzes reward program data in Snowflake, identifies optimization opportunities, and publishes to Confluence.
naftiko: '0.5'
info:
label: Card Reward Program Analysis Orchestrator
description: Analyzes reward program data in Snowflake, identifies optimization opportunities, and publishes to Confluence.
tags:
- banking
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: card-reward-program-analysis
port: 8080
tools:
- name: card-reward-program-analysis
description: Analyzes reward program data in Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Card Reward Program Analysis
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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 firewall rule details from Palo Alto Networks Panorama.
naftiko: '0.5'
info:
label: Palo Alto Firewall Rule Lookup
description: Retrieves firewall rule details from Palo Alto Networks Panorama.
tags:
- security
- palo-alto-networks
capability:
exposes:
- type: mcp
namespace: firewall-rules
port: 8080
tools:
- name: get-rule-details
description: Look up Palo Alto firewall rule.
inputParameters:
- name: rule_name
in: body
type: string
description: Firewall rule name.
call: paloalto.get-rule
with:
rule_name: '{{rule_name}}'
outputParameters:
- name: action
type: string
mapping: $.result.action
- name: source_zones
type: string
mapping: $.result.from
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.capitalone.com/restapi/v10.1
authentication:
type: bearer
token: $secrets.paloalto_token
resources:
- name: rules
path: /Policies/SecurityRules
operations:
- name: get-rule
method: GET
Queries Microsoft Graph for users in a given security group, cross-references with Workday to identify terminated employees, and disables stale accounts to enforce access recertification.
naftiko: '0.5'
info:
label: Azure AD Access Recertification
description: Queries Microsoft Graph for users in a given security group, cross-references with Workday to identify terminated employees, and disables stale accounts to enforce access recertification.
tags:
- identity
- security
- microsoft-graph
- workday
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: recertify-group-access
description: Given an Azure AD group ID, list all members, check each against Workday for active status, and disable accounts for terminated employees. Use for quarterly access recertification campaigns.
inputParameters:
- name: group_id
in: body
type: string
description: The Azure AD security group object ID to recertify.
steps:
- name: get-group-members
type: call
call: msgraph-id.get-group-members
with:
groupId: '{{group_id}}'
- name: check-workday-status
type: call
call: workday-id.get-worker-status
with:
email: '{{get-group-members.userPrincipalName}}'
- name: disable-stale-account
type: call
call: msgraph-disable.disable-user
with:
userPrincipalName: '{{get-group-members.userPrincipalName}}'
accountEnabled: 'false'
consumes:
- type: http
namespace: msgraph-id
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: group-members
path: /groups/{groupId}/members
inputParameters:
- name: groupId
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: workday-id
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: worker-status
path: /workers
inputParameters:
- name: email
in: query
operations:
- name: get-worker-status
method: GET
- type: http
namespace: msgraph-disable
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: user
path: /users/{userPrincipalName}
inputParameters:
- name: userPrincipalName
in: path
- name: accountEnabled
in: body
operations:
- name: disable-user
method: PATCH
Audits AWS security groups, identifies overly permissive rules, and creates Jira remediation tickets.
naftiko: '0.5'
info:
label: AWS Security Group Audit Orchestrator
description: Audits AWS security groups, identifies overly permissive rules, and creates Jira remediation tickets.
tags:
- security
- aws
- jira
capability:
exposes:
- type: mcp
namespace: aws-security-group-audit
port: 8080
tools:
- name: aws-security-group-audit
description: Audits AWS security groups.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-issue
type: call
call: jira.create-issue
with:
project: OPS
summary: AWS Security Group Audit - {{entity_id}}
- name: get-resources
type: call
call: aws.list-resources
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: aws
baseUri: https://ec2.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_token
resources:
- name: resources
path: /
operations:
- name: list-resources
method: GET
Processes loan applications by running credit models in Databricks, updating Snowflake, and notifying via email.
naftiko: '0.5'
info:
label: Loan Origination Pipeline Orchestrator
description: Processes loan applications by running credit models in Databricks, updating Snowflake, and notifying via email.
tags:
- banking
- databricks
- snowflake
- email
capability:
exposes:
- type: mcp
namespace: loan-origination-pipeline
port: 8080
tools:
- name: loan-origination-pipeline
description: Processes loan applications by running credit models in Databricks.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: send-email
type: call
call: email.send-message
with:
to: team@capitalone.com
subject: Loan Origination Pipeline
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: email
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.graph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-message
method: POST
Investigates flagged transactions by enriching with Snowflake risk data, creating a ServiceNow case, and alerting the fraud team via Slack.
naftiko: '0.5'
info:
label: Credit Card Fraud Investigation Orchestrator
description: Investigates flagged transactions by enriching with Snowflake risk data, creating a ServiceNow case, and alerting the fraud team via Slack.
tags:
- fraud
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: credit-card-fraud-investigatio
port: 8080
tools:
- name: credit-card-fraud-investigation
description: Investigates flagged transactions by enriching with Snowflake risk data.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Credit Card Fraud Investigation for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Credit Card Fraud Investigation processed for {{entity_id}}
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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 customer analytics dashboard data from Tableau.
naftiko: '0.5'
info:
label: Tableau Customer Analytics Lookup
description: Retrieves customer analytics dashboard data from Tableau.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: customer-analytics
port: 8080
tools:
- name: get-analytics-view
description: Look up customer analytics from Tableau.
inputParameters:
- name: view_id
in: body
type: string
description: Tableau view ID.
call: tableau.get-view-data
with:
view_id: '{{view_id}}'
outputParameters:
- name: active_customers
type: number
mapping: $.data[0].active
- name: churn_rate
type: number
mapping: $.data[0].churn_pct
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.capitalone.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/{{site_id}}/views/{{view_id}}/data
inputParameters:
- name: view_id
in: path
operations:
- name: get-view-data
method: GET
Monitors open banking API performance via Datadog, detects anomalies, and creates ServiceNow incidents.
naftiko: '0.5'
info:
label: Open Banking API Monitoring Orchestrator
description: Monitors open banking API performance via Datadog, detects anomalies, and creates ServiceNow incidents.
tags:
- banking
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: open-banking-api-monitoring
port: 8080
tools:
- name: open-banking-api-monitoring
description: Monitors open banking API performance via Datadog.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Open Banking API Monitoring for {{entity_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
operations:
- name: get-monitors
method: GET
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
Detects Terraform state drift, creates ServiceNow change requests, and notifies platform team via Slack.
naftiko: '0.5'
info:
label: Cloud Infrastructure Drift Detection Orchestrator
description: Detects Terraform state drift, creates ServiceNow change requests, and notifies platform team via Slack.
tags:
- infrastructure
- terraform
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: cloud-infrastructure-drift-det
port: 8080
tools:
- name: cloud-infrastructure-drift-detection
description: Detects Terraform state drift.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Cloud Infrastructure Drift Detection for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Cloud Infrastructure Drift Detection processed for {{entity_id}}
- name: check-state
type: call
call: terraform.get-state
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: workspaces
path: /workspaces
operations:
- name: get-state
method: GET
Retrieves execution metrics for an AWS Lambda function.
naftiko: '0.5'
info:
label: AWS Lambda Function Status Lookup
description: Retrieves execution metrics for an AWS Lambda function.
tags:
- cloud
- aws-lambda
capability:
exposes:
- type: mcp
namespace: lambda-ops
port: 8080
tools:
- name: get-lambda-status
description: Look up Lambda function metrics.
inputParameters:
- name: function_name
in: body
type: string
description: Lambda function name.
call: lambda.get-function
with:
function_name: '{{function_name}}'
outputParameters:
- name: last_invocation
type: string
mapping: $.Configuration.LastModified
- name: state
type: string
mapping: $.Configuration.State
consumes:
- type: http
namespace: lambda
baseUri: https://lambda.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_lambda_token
resources:
- name: functions
path: /2015-03-31/functions/{{function_name}}
inputParameters:
- name: function_name
in: path
operations:
- name: get-function
method: GET
Triggers a Looker Look or dashboard tile refresh for a given content ID and posts the updated embed URL to a Teams channel for executive reporting.
naftiko: '0.5'
info:
label: Looker Embedded Report Refresh
description: Triggers a Looker Look or dashboard tile refresh for a given content ID and posts the updated embed URL to a Teams channel for executive reporting.
tags:
- data
- looker
- microsoft-teams
- reporting
- analytics
capability:
exposes:
- type: mcp
namespace: embedded-analytics
port: 8080
tools:
- name: refresh-looker-report
description: Given a Looker Look ID, run the query and post the refreshed embed URL to a Teams channel. Use for scheduled executive dashboard updates.
inputParameters:
- name: look_id
in: body
type: string
description: The Looker Look ID to refresh.
- name: teams_channel_email
in: body
type: string
description: Teams channel recipient email for embed URL notification.
steps:
- name: run-look
type: call
call: looker.run-look
with:
lookId: '{{look_id}}'
result_format: json
- name: notify-teams
type: call
call: msteams-looker.send-message
with:
recipient: '{{teams_channel_email}}'
message: 'Looker report {{look_id}} has been refreshed. View at: {{run-look.embedUrl}}'
consumes:
- type: http
namespace: looker
baseUri: https://capitalone.cloud.looker.com/api/4.0
authentication:
type: bearer
token: $secrets.looker_token
resources:
- name: look
path: /looks/{lookId}/run/{result_format}
inputParameters:
- name: lookId
in: path
- name: result_format
in: path
operations:
- name: run-look
method: GET
- type: http
namespace: msteams-looker
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Monitors Cloudflare for active DDoS attack events and automatically creates a ServiceNow security incident and posts an alert to the SOC Slack channel.
naftiko: '0.5'
info:
label: Cloudflare DDoS Alert to SOC
description: Monitors Cloudflare for active DDoS attack events and automatically creates a ServiceNow security incident and posts an alert to the SOC Slack channel.
tags:
- security
- cloudflare
- servicenow
- slack
- ddos
- network-security
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: handle-cloudflare-ddos-alert
description: Given a Cloudflare zone ID, check for active DDoS events, open a ServiceNow security incident, and alert the SOC Slack channel. Use for automated DDoS detection and response.
inputParameters:
- name: zone_id
in: body
type: string
description: The Cloudflare zone ID to check for DDoS activity.
- name: soc_slack_channel
in: body
type: string
description: The SOC Slack channel ID for alert notification.
steps:
- name: check-ddos-events
type: call
call: cloudflare.get-security-events
with:
zoneId: '{{zone_id}}'
eventType: ddos
- name: create-security-incident
type: call
call: servicenow-ddos.create-security-incident
with:
short_description: Cloudflare DDoS attack detected on zone {{zone_id}}
description: 'DDoS event: {{check-ddos-events.ruleId}} started at {{check-ddos-events.occurred_at}}.'
category: Network Security
urgency: '1'
- name: alert-soc
type: call
call: slack-soc.post-message
with:
channel: '{{soc_slack_channel}}'
text: 'DDOS ALERT: Zone {{zone_id}} under attack. Incident: {{create-security-incident.incidentNumber}}.'
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: security-events
path: /zones/{zoneId}/security/events
inputParameters:
- name: zoneId
in: path
- name: eventType
in: query
operations:
- name: get-security-events
method: GET
- type: http
namespace: servicenow-ddos
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: security-incident
path: /table/sn_si_incident
inputParameters:
- name: short_description
in: body
- name: description
in: body
- name: category
in: body
- name: urgency
in: body
operations:
- name: create-security-incident
method: POST
- type: http
namespace: slack-soc
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: message
path: /chat.postMessage
inputParameters:
- name: channel
in: body
- name: text
in: body
operations:
- name: post-message
method: POST
Retrieves payroll summary data from ADP for a pay period.
naftiko: '0.5'
info:
label: ADP Payroll Summary Lookup
description: Retrieves payroll summary data from ADP for a pay period.
tags:
- hr
- adp
capability:
exposes:
- type: mcp
namespace: payroll-info
port: 8080
tools:
- name: get-payroll-summary
description: Look up ADP payroll summary.
inputParameters:
- name: pay_period
in: body
type: string
description: Pay period identifier.
call: adp.get-payroll
with:
pay_period: '{{pay_period}}'
outputParameters:
- name: total_gross
type: number
mapping: $.payrollSummary.totalGross
- name: headcount
type: number
mapping: $.payrollSummary.employeeCount
consumes:
- type: http
namespace: adp
baseUri: https://api.adp.com/hr/v2
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: payroll
path: /payroll/pay-periods/{{pay_period}}/summary
inputParameters:
- name: pay_period
in: path
operations:
- name: get-payroll
method: GET
Monitors payment transactions via Datadog, triggers fraud model in Databricks, and alerts operations via Slack.
naftiko: '0.5'
info:
label: Real-Time Payment Fraud Detection Orchestrator
description: Monitors payment transactions via Datadog, triggers fraud model in Databricks, and alerts operations via Slack.
tags:
- fraud
- datadog
- databricks
- slack
capability:
exposes:
- type: mcp
namespace: real-time-payment-fraud-detect
port: 8080
tools:
- name: real-time-payment-fraud-detection
description: Monitors payment transactions via Datadog.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Real-Time Payment Fraud Detection processed for {{entity_id}}
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor
operations:
- name: get-monitors
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
Detects Snowflake data quality issues, creates Jira tickets, and alerts data stewards via Slack.
naftiko: '0.5'
info:
label: Data Quality Remediation Orchestrator
description: Detects Snowflake data quality issues, creates Jira tickets, and alerts data stewards via Slack.
tags:
- data
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: data-quality-remediation
port: 8080
tools:
- name: data-quality-remediation
description: Detects Snowflake data quality issues.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-issue
type: call
call: jira.create-issue
with:
project: OPS
summary: Data Quality Remediation - {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Data Quality Remediation processed for {{entity_id}}
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: 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 GitHub Advanced Security for high-severity code scanning alerts and creates Jira tickets for each unresolved finding to enforce remediation SLAs.
naftiko: '0.5'
info:
label: GitHub Security Scan to Jira
description: Queries GitHub Advanced Security for high-severity code scanning alerts and creates Jira tickets for each unresolved finding to enforce remediation SLAs.
tags:
- devops
- security
- github
- jira
- devsecops
capability:
exposes:
- type: mcp
namespace: devsecops
port: 8080
tools:
- name: sync-security-alerts-to-jira
description: Given a repository name and severity level, fetch unresolved GitHub code scanning alerts and create a Jira ticket for each finding. Use for daily security remediation triage.
inputParameters:
- name: repo
in: body
type: string
description: Repository in owner/repo format to scan.
- name: severity
in: body
type: string
description: Minimum severity to capture (critical, high, medium, low).
steps:
- name: get-alerts
type: call
call: github-sec.list-code-scanning-alerts
with:
repo: '{{repo}}'
severity: '{{severity}}'
state: open
- name: create-jira-tickets
type: call
call: jira-sec.create-issue
with:
summary: 'Security alert: {{get-alerts.rule.description}} in {{repo}}'
description: '{{get-alerts.most_recent_instance.message.text}}'
project: SECDEP
issuetype: Security
consumes:
- type: http
namespace: github-sec
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: code-scanning-alerts
path: /repos/{repo}/code-scanning/alerts
inputParameters:
- name: repo
in: path
- name: severity
in: query
- name: state
in: query
operations:
- name: list-code-scanning-alerts
method: GET
- type: http
namespace: jira-sec
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issue
path: /issue
inputParameters:
- name: summary
in: body
- name: description
in: body
- name: project
in: body
- name: issuetype
in: body
operations:
- name: create-issue
method: POST
Processes account closure by validating balances in Snowflake, creating a ServiceNow request, and sending confirmation via email.
naftiko: '0.5'
info:
label: Customer Account Closure Orchestrator
description: Processes account closure by validating balances in Snowflake, creating a ServiceNow request, and sending confirmation via email.
tags:
- banking
- snowflake
- servicenow
- email
capability:
exposes:
- type: mcp
namespace: customer-account-closure
port: 8080
tools:
- name: customer-account-closure
description: Processes account closure by validating balances in Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Customer Account Closure for {{entity_id}}
- name: send-email
type: call
call: email.send-message
with:
to: team@capitalone.com
subject: Customer Account Closure
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: email
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.graph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-message
method: POST
Queries Palo Alto Networks for firewall rules modified in the last 24 hours, cross-references with ServiceNow approved changes, and flags unauthorized modifications.
naftiko: '0.5'
info:
label: Palo Alto Firewall Policy Audit
description: Queries Palo Alto Networks for firewall rules modified in the last 24 hours, cross-references with ServiceNow approved changes, and flags unauthorized modifications.
tags:
- security
- palo-alto-networks
- servicenow
- compliance
- audit
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-firewall-policy-changes
description: Retrieve recent Palo Alto firewall rule changes and compare against ServiceNow approved change requests. Create a ServiceNow security incident for any unauthorized modifications.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours to look back for firewall rule changes.
steps:
- name: get-fw-changes
type: call
call: paloalto-audit.get-config-audit
with:
hoursBack: '{{hours_back}}'
- name: check-change-approval
type: call
call: servicenow-audit.get-approved-changes
with:
timeWindow: '{{hours_back}}'
- name: create-security-incident
type: call
call: servicenow-si.create-security-incident
with:
short_description: Unauthorized firewall change detected
description: Firewall rule {{get-fw-changes.ruleName}} modified without matching approved change.
category: Security
urgency: '1'
consumes:
- type: http
namespace: paloalto-audit
baseUri: https://capitalone-pa.example.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: config-audit
path: /Objects/SecurityRules
inputParameters:
- name: hoursBack
in: query
operations:
- name: get-config-audit
method: GET
- type: http
namespace: servicenow-audit
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: approved-changes
path: /table/change_request
inputParameters:
- name: timeWindow
in: query
- name: state
in: query
operations:
- name: get-approved-changes
method: GET
- type: http
namespace: servicenow-si
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: security-incident
path: /table/sn_si_incident
inputParameters:
- name: short_description
in: body
- name: description
in: body
- name: category
in: body
- name: urgency
in: body
operations:
- name: create-security-incident
method: POST
Queries Splunk for fraud detection events matching a transaction pattern.
naftiko: '0.5'
info:
label: Splunk Fraud Event Lookup
description: Queries Splunk for fraud detection events matching a transaction pattern.
tags:
- security
- splunk
capability:
exposes:
- type: mcp
namespace: fraud-events
port: 8080
tools:
- name: search-fraud-events
description: Search Splunk for fraud events.
inputParameters:
- name: transaction_pattern
in: body
type: string
description: Transaction pattern query.
call: splunk.search-events
with:
query: '{{transaction_pattern}}'
outputParameters:
- name: event_count
type: number
mapping: $.results.length
- name: risk_level
type: string
mapping: $.results[0].risk_level
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.capitalone.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs/export
operations:
- name: search-events
method: GET
Collects Datadog service metrics, validates SLOs, and publishes health report to Confluence.
naftiko: '0.5'
info:
label: Microservice Health Dashboard Orchestrator
description: Collects Datadog service metrics, validates SLOs, and publishes health report to Confluence.
tags:
- observability
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: microservice-health-dashboard
port: 8080
tools:
- name: microservice-health-dashboard
description: Collects Datadog service metrics.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Microservice Health Dashboard
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
operations:
- name: get-monitors
method: GET
- type: http
namespace: confluence
baseUri: https://capitalone.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
Initiates DR test, validates recovery metrics, and publishes test results to Confluence.
naftiko: '0.5'
info:
label: Disaster Recovery Test Orchestrator
description: Initiates DR test, validates recovery metrics, and publishes test results to Confluence.
tags:
- infrastructure
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: disaster-recovery-test
port: 8080
tools:
- name: disaster-recovery-test
description: Initiates DR test.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Disaster Recovery Test for {{entity_id}}
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Disaster Recovery Test
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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 credit risk score for a customer segment from Snowflake.
naftiko: '0.5'
info:
label: Snowflake Credit Risk Score Lookup
description: Retrieves credit risk score for a customer segment from Snowflake.
tags:
- risk
- snowflake
capability:
exposes:
- type: mcp
namespace: credit-risk
port: 8080
tools:
- name: get-risk-score
description: Look up credit risk score by customer segment.
inputParameters:
- name: segment_id
in: body
type: string
description: Customer segment ID.
call: snowflake.run-query
with:
segment_id: '{{segment_id}}'
outputParameters:
- name: risk_score
type: number
mapping: $.data[0][0]
- name: confidence
type: number
mapping: $.data[0][1]
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
When a new job requisition is opened in Workday, automatically posts the role to LinkedIn Jobs to accelerate talent sourcing.
naftiko: '0.5'
info:
label: Recruiting Pipeline to LinkedIn Job Post
description: When a new job requisition is opened in Workday, automatically posts the role to LinkedIn Jobs to accelerate talent sourcing.
tags:
- hr
- recruiting
- workday
- linkedin
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: publish-job-to-linkedin
description: Given a Workday job requisition ID, fetch the job details and post the opening to LinkedIn Jobs. Invoke when a new Capital One requisition needs external sourcing.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
steps:
- name: get-requisition
type: call
call: workday-req.get-job-requisition
with:
requisitionId: '{{requisition_id}}'
- name: post-linkedin-job
type: call
call: linkedin.create-job-posting
with:
title: '{{get-requisition.title}}'
description: '{{get-requisition.description}}'
location: '{{get-requisition.location}}'
company: Capital One
consumes:
- type: http
namespace: workday-req
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisition
path: /jobRequisitions/{requisitionId}
inputParameters:
- name: requisitionId
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-posting
path: /jobPostings
inputParameters:
- name: title
in: body
- name: description
in: body
- name: location
in: body
- name: company
in: body
operations:
- name: create-job-posting
method: POST
Uses Anthropic to summarize new regulatory guidance documents stored in SharePoint and publishes a digest to a Microsoft Teams compliance channel.
naftiko: '0.5'
info:
label: Regulatory Compliance Document Summarizer
description: Uses Anthropic to summarize new regulatory guidance documents stored in SharePoint and publishes a digest to a Microsoft Teams compliance channel.
tags:
- ai
- compliance
- anthropic
- sharepoint
- microsoft-teams
- financial-services
capability:
exposes:
- type: mcp
namespace: compliance-ai
port: 8080
tools:
- name: summarize-regulatory-document
description: Given a SharePoint document ID containing regulatory guidance, fetch the document text, send it to Anthropic for summarization, and post the summary to a Teams compliance channel. Use when new regulatory documents need rapid review.
inputParameters:
- name: document_id
in: body
type: string
description: The SharePoint document ID to summarize.
- name: teams_channel_id
in: body
type: string
description: The Microsoft Teams channel ID for posting the compliance summary.
steps:
- name: get-document
type: call
call: sharepoint.get-file-content
with:
documentId: '{{document_id}}'
- name: summarize-document
type: call
call: anthropic-comp.create-message
with:
model: claude-3-5-sonnet-20241022
max_tokens: 800
messages: '[{"role": "user", "content": "Summarize this regulatory document for a compliance officer: {{get-document.content}}"}]'
- name: post-to-teams
type: call
call: msteams-comp.post-channel-message
with:
channelId: '{{teams_channel_id}}'
message: 'Regulatory Summary: {{summarize-document.content}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: file-content
path: /sites/root/drive/items/{documentId}/content
inputParameters:
- name: documentId
in: path
operations:
- name: get-file-content
method: GET
- type: http
namespace: anthropic-comp
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
inputParameters:
- name: model
in: body
- name: max_tokens
in: body
- name: messages
in: body
operations:
- name: create-message
method: POST
- type: http
namespace: msteams-comp
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-message
path: /teams/{channelId}/channels/{channelId}/messages
inputParameters:
- name: channelId
in: path
- name: message
in: body
operations:
- name: post-channel-message
method: POST
Aggregates customer feedback, runs sentiment analysis in Databricks, and publishes insights to Confluence.
naftiko: '0.5'
info:
label: Customer Feedback Analysis Orchestrator
description: Aggregates customer feedback, runs sentiment analysis in Databricks, and publishes insights to Confluence.
tags:
- analytics
- databricks
- confluence
capability:
exposes:
- type: mcp
namespace: customer-feedback-analysis
port: 8080
tools:
- name: customer-feedback-analysis
description: Aggregates customer feedback.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Customer Feedback Analysis
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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 MFA enrollment status for a user in Okta.
naftiko: '0.5'
info:
label: Okta MFA Status Lookup
description: Retrieves MFA enrollment status for a user in Okta.
tags:
- identity
- okta
capability:
exposes:
- type: mcp
namespace: mfa-status
port: 8080
tools:
- name: get-mfa-status
description: Look up Okta MFA enrollment status.
inputParameters:
- name: user_email
in: body
type: string
description: User email address.
call: okta.get-user-factors
with:
email: '{{user_email}}'
outputParameters:
- name: factor_count
type: number
mapping: $.length
- name: enrolled
type: string
mapping: $.enrolled
consumes:
- type: http
namespace: okta
baseUri: https://capitalone.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: factors
path: /users/{{email}}/factors
inputParameters:
- name: email
in: path
operations:
- name: get-user-factors
method: GET
Syncs communication preferences between Salesforce and marketing platforms, validates consent, and logs in ServiceNow.
naftiko: '0.5'
info:
label: Customer Communication Preference Orchestrator
description: Syncs communication preferences between Salesforce and marketing platforms, validates consent, and logs in ServiceNow.
tags:
- marketing
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-communication-prefere
port: 8080
tools:
- name: customer-communication-preference
description: Syncs communication preferences between Salesforce and marketing platforms.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Customer Communication Preference for {{entity_id}}
- name: update-sf
type: call
call: salesforce.update-opp
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: salesforce
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: objects
path: /sobjects
operations:
- name: get-lead
method: GET
- name: create-lead
method: POST
- name: update-opp
method: PATCH
Runs automated data quality checks on a Snowflake table and opens a Jira ticket if row count anomalies or null rate violations are detected.
naftiko: '0.5'
info:
label: Snowflake Data Quality Monitor
description: Runs automated data quality checks on a Snowflake table and opens a Jira ticket if row count anomalies or null rate violations are detected.
tags:
- data
- snowflake
- jira
- data-quality
- monitoring
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-snowflake-quality-check
description: Given a Snowflake table name and quality thresholds, execute a row count and null-rate check and create a Jira issue if thresholds are breached. Use for daily data pipeline health monitoring.
inputParameters:
- name: table_name
in: body
type: string
description: The fully qualified Snowflake table name (database.schema.table).
- name: min_row_count
in: body
type: integer
description: Minimum expected row count; alert if actual is lower.
- name: max_null_rate
in: body
type: number
description: Maximum acceptable null rate as a decimal (0.0–1.0).
steps:
- name: check-row-count
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) AS row_count FROM {{table_name}}
- name: check-null-rate
type: call
call: snowflake-null.execute-statement
with:
statement: SELECT AVG(CASE WHEN key_col IS NULL THEN 1.0 ELSE 0.0 END) AS null_rate FROM {{table_name}}
- name: create-jira-issue
type: call
call: jira-dq.create-issue
with:
summary: Data quality violation in {{table_name}}
description: 'Row count: {{check-row-count.row_count}}, null rate: {{check-null-rate.null_rate}}'
project: DATA
issuetype: Bug
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statement
path: /statements
inputParameters:
- name: statement
in: body
operations:
- name: execute-statement
method: POST
- type: http
namespace: snowflake-null
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statement
path: /statements
inputParameters:
- name: statement
in: body
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira-dq
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issue
path: /issue
inputParameters:
- name: summary
in: body
- name: description
in: body
- name: project
in: body
- name: issuetype
in: body
operations:
- name: create-issue
method: POST
Queries Informatica Intelligent Cloud Services for failed mapping tasks in a given time window and creates Jira tickets for each failure requiring investigation.
naftiko: '0.5'
info:
label: Informatica Data Pipeline Health Check
description: Queries Informatica Intelligent Cloud Services for failed mapping tasks in a given time window and creates Jira tickets for each failure requiring investigation.
tags:
- data
- informatica
- jira
- data-pipeline
- monitoring
capability:
exposes:
- type: mcp
namespace: data-pipeline-ops
port: 8080
tools:
- name: check-informatica-pipeline-health
description: Given a time window in hours, list failed Informatica mapping tasks and create a Jira ticket for each failure. Use for daily ETL health reviews.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours back to look for failed tasks.
- name: project_key
in: body
type: string
description: Jira project key for creating failure tickets.
steps:
- name: list-failed-tasks
type: call
call: informatica.list-activity-log
with:
status: FAILED
hoursBack: '{{hours_back}}'
- name: create-jira-ticket
type: call
call: jira-etl.create-issue
with:
summary: 'Informatica task failure: {{list-failed-tasks.objectName}}'
description: Task {{list-failed-tasks.objectName}} failed at {{list-failed-tasks.startTime}}.
project: '{{project_key}}'
issuetype: Bug
consumes:
- type: http
namespace: informatica
baseUri: https://dm-us.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: activity-log
path: /activity/activityLog
inputParameters:
- name: status
in: query
- name: hoursBack
in: query
operations:
- name: list-activity-log
method: GET
- type: http
namespace: jira-etl
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issue
path: /issue
inputParameters:
- name: summary
in: body
- name: description
in: body
- name: project
in: body
- name: issuetype
in: body
operations:
- name: create-issue
method: POST
Queries Boomi AtomSphere for failed integration process executions in the last 24 hours and creates Jira tickets for each failure requiring investigation.
naftiko: '0.5'
info:
label: Boomi Integration Health Check
description: Queries Boomi AtomSphere for failed integration process executions in the last 24 hours and creates Jira tickets for each failure requiring investigation.
tags:
- integration
- boomi
- jira
- monitoring
capability:
exposes:
- type: mcp
namespace: integration-ops
port: 8080
tools:
- name: check-boomi-integration-health
description: Given a Boomi account ID and failure lookback window, list failed process executions and create a Jira ticket for each. Use for daily integration monitoring and SLA tracking.
inputParameters:
- name: account_id
in: body
type: string
description: The Boomi AtomSphere account ID.
- name: hours_back
in: body
type: integer
description: Number of hours back to check for failed executions.
steps:
- name: list-failed-executions
type: call
call: boomi.list-process-executions
with:
accountId: '{{account_id}}'
status: ERROR
hoursBack: '{{hours_back}}'
- name: create-jira-ticket
type: call
call: jira-int.create-issue
with:
summary: 'Boomi integration failure: {{list-failed-executions.processName}}'
description: Process {{list-failed-executions.processName}} failed at {{list-failed-executions.executionTime}}.
project: INTEG
issuetype: Bug
consumes:
- type: http
namespace: boomi
baseUri: https://api.boomi.com/api/rest/v1
authentication:
type: basic
username: $secrets.boomi_user
password: $secrets.boomi_token
resources:
- name: process-executions
path: /{accountId}/ExecutionRecord/query
inputParameters:
- name: accountId
in: path
- name: status
in: body
- name: hoursBack
in: body
operations:
- name: list-process-executions
method: POST
- type: http
namespace: jira-int
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issue
path: /issue
inputParameters:
- name: summary
in: body
- name: description
in: body
- name: project
in: body
- name: issuetype
in: body
operations:
- name: create-issue
method: POST
Manages feature flags by evaluating Datadog metrics, updating configurations, and notifying product teams.
naftiko: '0.5'
info:
label: Digital Banking Feature Flag Orchestrator
description: Manages feature flags by evaluating Datadog metrics, updating configurations, and notifying product teams.
tags:
- product
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: digital-banking-feature-flag
port: 8080
tools:
- name: digital-banking-feature-flag
description: Manages feature flags by evaluating Datadog metrics.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Digital Banking Feature Flag processed for {{entity_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
operations:
- name: get-monitors
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
Evaluates third-party risk using Snowflake data, creates assessment records in ServiceNow, and notifies stakeholders.
naftiko: '0.5'
info:
label: Third-Party Risk Assessment Orchestrator
description: Evaluates third-party risk using Snowflake data, creates assessment records in ServiceNow, and notifies stakeholders.
tags:
- risk
- snowflake
- servicenow
- email
capability:
exposes:
- type: mcp
namespace: third-party-risk-assessment
port: 8080
tools:
- name: third-party-risk-assessment
description: Evaluates third-party risk using Snowflake data.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Third-Party Risk Assessment for {{entity_id}}
- name: send-email
type: call
call: email.send-message
with:
to: team@capitalone.com
subject: Third-Party Risk Assessment
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: email
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.graph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-message
method: POST
Queries AWS Cost Explorer for spend anomalies exceeding a daily threshold and notifies the FinOps team via Microsoft Teams with a Jira cost review ticket.
naftiko: '0.5'
info:
label: AWS Cloud Cost Anomaly Responder
description: Queries AWS Cost Explorer for spend anomalies exceeding a daily threshold and notifies the FinOps team via Microsoft Teams with a Jira cost review ticket.
tags:
- cloud
- aws
- finops
- cost-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: respond-to-aws-cost-anomaly
description: Given a cost threshold in USD and a date range, check AWS Cost Explorer for anomalies and create a Jira ticket and Teams alert if thresholds are exceeded. Use for daily FinOps monitoring.
inputParameters:
- name: threshold_usd
in: body
type: number
description: Daily spend threshold in USD that triggers an alert when exceeded.
- name: start_date
in: body
type: string
description: Start date for cost query in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date for cost query in YYYY-MM-DD format.
- name: finops_email
in: body
type: string
description: FinOps team email for Teams notification.
steps:
- name: get-cost-anomaly
type: call
call: aws-cost.get-cost-and-usage
with:
startDate: '{{start_date}}'
endDate: '{{end_date}}'
- name: create-jira-cost-ticket
type: call
call: jira-finops.create-issue
with:
summary: 'AWS cost anomaly: ${{get-cost-anomaly.totalCost}} exceeds threshold ${{threshold_usd}}'
description: Cost spike detected between {{start_date}} and {{end_date}}.
project: FINOPS
issuetype: Task
- name: notify-finops
type: call
call: msteams-cost.send-message
with:
recipient: '{{finops_email}}'
message: 'AWS cost anomaly detected: ${{get-cost-anomaly.totalCost}}. Jira: {{create-jira-cost-ticket.issueKey}}.'
consumes:
- type: http
namespace: aws-cost
baseUri: https://ce.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_cost_token
resources:
- name: cost-and-usage
path: /getCostAndUsage
inputParameters:
- name: startDate
in: body
- name: endDate
in: body
operations:
- name: get-cost-and-usage
method: POST
- type: http
namespace: jira-finops
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issue
path: /issue
inputParameters:
- name: summary
in: body
- name: description
in: body
- name: project
in: body
- name: issuetype
in: body
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-cost
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Orchestrates KYC verification by pulling data from Snowflake, running identity checks, and updating Salesforce.
naftiko: '0.5'
info:
label: Customer Onboarding KYC Orchestrator
description: Orchestrates KYC verification by pulling data from Snowflake, running identity checks, and updating Salesforce.
tags:
- banking
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-onboarding-kyc
port: 8080
tools:
- name: customer-onboarding-kyc
description: Orchestrates KYC verification by pulling data from Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: update-sf
type: call
call: salesforce.update-opp
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: salesforce
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: objects
path: /sobjects
operations:
- name: get-lead
method: GET
- name: create-lead
method: POST
- name: update-opp
method: PATCH
Monitors transaction patterns via Datadog, triggers risk scoring in Databricks, and alerts fraud ops.
naftiko: '0.5'
info:
label: Real-Time Transaction Monitoring Orchestrator
description: Monitors transaction patterns via Datadog, triggers risk scoring in Databricks, and alerts fraud ops.
tags:
- fraud
- datadog
- databricks
- slack
capability:
exposes:
- type: mcp
namespace: real-time-transaction-monitori
port: 8080
tools:
- name: real-time-transaction-monitoring
description: Monitors transaction patterns via Datadog.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Real-Time Transaction Monitoring processed for {{entity_id}}
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor
operations:
- name: get-monitors
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
Enriches customer profiles by aggregating data from Snowflake, Salesforce, and publishing to Databricks feature store.
naftiko: '0.5'
info:
label: Customer 360 Enrichment Orchestrator
description: Enriches customer profiles by aggregating data from Snowflake, Salesforce, and publishing to Databricks feature store.
tags:
- data
- snowflake
- salesforce
- databricks
capability:
exposes:
- type: mcp
namespace: customer-360-enrichment
port: 8080
tools:
- name: customer-360-enrichment
description: Enriches customer profiles by aggregating data from Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: update-sf
type: call
call: salesforce.update-opp
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: salesforce
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: objects
path: /sobjects
operations:
- name: get-lead
method: GET
- name: create-lead
method: POST
- name: update-opp
method: PATCH
Collects SOC2 compliance evidence from ServiceNow, GitHub, and Okta, then publishes to Confluence.
naftiko: '0.5'
info:
label: SOC2 Evidence Collection Orchestrator
description: Collects SOC2 compliance evidence from ServiceNow, GitHub, and Okta, then publishes to Confluence.
tags:
- compliance
- servicenow
- github
- okta
- confluence
capability:
exposes:
- type: mcp
namespace: soc2-evidence-collection
port: 8080
tools:
- name: soc2-evidence-collection
description: Collects SOC2 compliance evidence from ServiceNow.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: SOC2 Evidence Collection for {{entity_id}}
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: SOC2 Evidence Collection
- name: check-access
type: call
call: okta.get-user
with:
entity_id: '{{entity_id}}'
- name: check-repo
type: call
call: github.get-alerts
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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: okta
baseUri: https://capitalone.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users
operations:
- name: get-user
method: GET
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: repos
path: /repos
operations:
- name: get-alerts
method: GET
Retrieves AWS cost data, allocates to business units in Snowflake, and publishes reports to Google Sheets.
naftiko: '0.5'
info:
label: AWS Cost Allocation Orchestrator
description: Retrieves AWS cost data, allocates to business units in Snowflake, and publishes reports to Google Sheets.
tags:
- finops
- aws
- snowflake
- google-sheets
capability:
exposes:
- type: mcp
namespace: aws-cost-allocation
port: 8080
tools:
- name: aws-cost-allocation
description: Retrieves AWS cost data.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: get-resources
type: call
call: aws.list-resources
with:
entity_id: '{{entity_id}}'
- name: update-sheet
type: call
call: sheets.update-spreadsheet
with:
spreadsheet_id: report
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: aws
baseUri: https://ec2.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_token
resources:
- name: resources
path: /
operations:
- name: list-resources
method: GET
- type: http
namespace: sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: spreadsheets
path: /spreadsheets/{{spreadsheet_id}}/values:batchUpdate
operations:
- name: update-spreadsheet
method: POST
Aggregates campaign data from Google Ads, analyzes in Snowflake, and publishes insights to Confluence.
naftiko: '0.5'
info:
label: Marketing Campaign Performance Orchestrator
description: Aggregates campaign data from Google Ads, analyzes in Snowflake, and publishes insights to Confluence.
tags:
- marketing
- google-ads
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: marketing-campaign-performance
port: 8080
tools:
- name: marketing-campaign-performance
description: Aggregates campaign data from Google Ads.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Marketing Campaign Performance
- name: get-campaign
type: call
call: google-ads.get-campaign
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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: google-ads
baseUri: https://googleads.googleapis.com/v14
authentication:
type: bearer
token: $secrets.google_ads_token
resources:
- name: campaigns
path: /customers/{{customer_id}}/campaigns
operations:
- name: get-campaign
method: GET
Aggregates KPIs from Snowflake, creates executive slides, and distributes via email.
naftiko: '0.5'
info:
label: Quarterly Business Review Orchestrator
description: Aggregates KPIs from Snowflake, creates executive slides, and distributes via email.
tags:
- analytics
- snowflake
- email
capability:
exposes:
- type: mcp
namespace: quarterly-business-review
port: 8080
tools:
- name: quarterly-business-review
description: Aggregates KPIs from Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: send-email
type: call
call: email.send-message
with:
to: team@capitalone.com
subject: Quarterly Business Review
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: email
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.graph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-message
method: POST
Retrieves browser performance metrics from New Relic.
naftiko: '0.5'
info:
label: New Relic Browser Performance Lookup
description: Retrieves browser performance metrics from New Relic.
tags:
- observability
- new-relic
capability:
exposes:
- type: mcp
namespace: browser-perf
port: 8080
tools:
- name: get-browser-metrics
description: Look up New Relic browser performance.
inputParameters:
- name: app_id
in: body
type: string
description: New Relic browser app ID.
call: newrelic.get-browser-app
with:
app_id: '{{app_id}}'
outputParameters:
- name: page_load_time
type: number
mapping: $.browser_application.browser_summary.page_load_time
- name: ajax_response_time
type: number
mapping: $.browser_application.browser_summary.ajax_response_time
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apikey
key: X-Api-Key
value: $secrets.newrelic_api_key
placement: header
resources:
- name: browser
path: /browser_applications/{{app_id}}.json
inputParameters:
- name: app_id
in: path
operations:
- name: get-browser-app
method: GET
Rotates application secrets, updates configurations, and logs rotation events in ServiceNow.
naftiko: '0.5'
info:
label: Secrets Rotation Orchestrator
description: Rotates application secrets, updates configurations, and logs rotation events in ServiceNow.
tags:
- security
- servicenow
capability:
exposes:
- type: mcp
namespace: secrets-rotation
port: 8080
tools:
- name: secrets-rotation
description: Rotates application secrets.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Secrets Rotation for {{entity_id}}
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
Maps application dependencies from ServiceNow CMDB, validates in Datadog, and publishes to Confluence.
naftiko: '0.5'
info:
label: Application Dependency Mapping Orchestrator
description: Maps application dependencies from ServiceNow CMDB, validates in Datadog, and publishes to Confluence.
tags:
- infrastructure
- servicenow
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: application-dependency-mapping
port: 8080
tools:
- name: application-dependency-mapping
description: Maps application dependencies from ServiceNow CMDB.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Application Dependency Mapping for {{entity_id}}
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Application Dependency Mapping
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
operations:
- name: get-monitors
method: GET
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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 budget data from Oracle Hyperion for a cost center.
naftiko: '0.5'
info:
label: Oracle Hyperion Budget Lookup
description: Retrieves budget data from Oracle Hyperion for a cost center.
tags:
- finance
- oracle-hyperion
capability:
exposes:
- type: mcp
namespace: budget-data
port: 8080
tools:
- name: get-budget-data
description: Look up Oracle Hyperion budget for a cost center.
inputParameters:
- name: cost_center
in: body
type: string
description: Cost center code.
call: hyperion.get-budget
with:
cost_center: '{{cost_center}}'
outputParameters:
- name: budget_amount
type: number
mapping: $.data.budget
- name: actual_amount
type: number
mapping: $.data.actual
consumes:
- type: http
namespace: hyperion
baseUri: https://hyperion.capitalone.com/api/v1
authentication:
type: bearer
token: $secrets.hyperion_token
resources:
- name: budgets
path: /planning/budget/{{cost_center}}
inputParameters:
- name: cost_center
in: path
operations:
- name: get-budget
method: GET
Retrieves the execution log from a Databricks credit risk scoring job and publishes a structured audit record to a Confluence model governance page.
naftiko: '0.5'
info:
label: Credit Risk Model Audit Log to Confluence
description: Retrieves the execution log from a Databricks credit risk scoring job and publishes a structured audit record to a Confluence model governance page.
tags:
- compliance
- databricks
- confluence
- model-governance
- financial-services
capability:
exposes:
- type: mcp
namespace: model-governance
port: 8080
tools:
- name: publish-model-audit-log
description: Given a Databricks job run ID and Confluence page ID, fetch the run execution details and append an audit record to the model governance page. Use for monthly model risk management reporting.
inputParameters:
- name: run_id
in: body
type: string
description: The Databricks job run ID for the credit risk model execution.
- name: confluence_page_id
in: body
type: string
description: The Confluence page ID to append the audit record to.
steps:
- name: get-run-details
type: call
call: databricks-audit.get-run
with:
runId: '{{run_id}}'
- name: update-confluence-page
type: call
call: confluence.update-page
with:
pageId: '{{confluence_page_id}}'
body: Run {{run_id}} completed at {{get-run-details.endTime}} with status {{get-run-details.state.resultState}}.
consumes:
- type: http
namespace: databricks-audit
baseUri: https://adb-capitalone.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: run
path: /jobs/runs/get
inputParameters:
- name: runId
in: query
operations:
- name: get-run
method: GET
- type: http
namespace: confluence
baseUri: https://capitalone.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: page
path: /content/{pageId}
inputParameters:
- name: pageId
in: path
- name: body
in: body
operations:
- name: update-page
method: PUT
Queries Jira for completed sprint stories across a project, computes velocity, and posts a summary to a Microsoft Teams engineering channel.
naftiko: '0.5'
info:
label: Jira Sprint Velocity Report
description: Queries Jira for completed sprint stories across a project, computes velocity, and posts a summary to a Microsoft Teams engineering channel.
tags:
- agile
- jira
- microsoft-teams
- reporting
- engineering
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: publish-sprint-velocity-report
description: Given a Jira project key and board ID, retrieve the last completed sprint's story points and post a velocity digest to Teams. Use for sprint review preparation or engineering metrics.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key (e.g., CAPTECH).
- name: board_id
in: body
type: string
description: The Jira board ID for sprint data.
- name: teams_channel
in: body
type: string
description: The Teams channel email or ID for the engineering digest.
steps:
- name: get-sprint-data
type: call
call: jira-sprint.get-sprint-report
with:
boardId: '{{board_id}}'
state: closed
- name: post-velocity
type: call
call: msteams-agile.send-message
with:
recipient: '{{teams_channel}}'
message: 'Sprint {{get-sprint-data.sprintName}} velocity: {{get-sprint-data.completedPoints}} story points completed.'
consumes:
- type: http
namespace: jira-sprint
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: sprint-report
path: /board/{boardId}/sprint
inputParameters:
- name: boardId
in: path
- name: state
in: query
operations:
- name: get-sprint-report
method: GET
- type: http
namespace: msteams-agile
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Checks the latest Databricks job run status for a given ML pipeline and opens a ServiceNow incident if the run failed or exceeded the SLA window.
naftiko: '0.5'
info:
label: Databricks ML Pipeline Monitor
description: Checks the latest Databricks job run status for a given ML pipeline and opens a ServiceNow incident if the run failed or exceeded the SLA window.
tags:
- data
- databricks
- servicenow
- ml-ops
- monitoring
capability:
exposes:
- type: mcp
namespace: mlops
port: 8080
tools:
- name: monitor-databricks-pipeline
description: Given a Databricks job ID and SLA window in minutes, check the latest run status and open a ServiceNow incident if it failed or ran over SLA. Invoke for scheduled ML model training jobs.
inputParameters:
- name: job_id
in: body
type: string
description: The Databricks job ID to monitor.
- name: sla_minutes
in: body
type: integer
description: Maximum expected run duration in minutes before SLA breach.
steps:
- name: get-latest-run
type: call
call: databricks.get-job-run
with:
jobId: '{{job_id}}'
- name: open-incident
type: call
call: servicenow-ml.create-incident
with:
short_description: Databricks job {{job_id}} failed or exceeded SLA of {{sla_minutes}} minutes.
category: Data Engineering
urgency: '2'
consumes:
- type: http
namespace: databricks
baseUri: https://adb-capitalone.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: job-run
path: /jobs/runs/get-latest-by-name
inputParameters:
- name: jobId
in: query
operations:
- name: get-job-run
method: GET
- type: http
namespace: servicenow-ml
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: incident
path: /table/incident
inputParameters:
- name: short_description
in: body
- name: category
in: body
- name: urgency
in: body
operations:
- name: create-incident
method: POST
Tracks compliance training completion in Workday, identifies gaps, and creates ServiceNow tickets for overdue items.
naftiko: '0.5'
info:
label: Compliance Training Tracking Orchestrator
description: Tracks compliance training completion in Workday, identifies gaps, and creates ServiceNow tickets for overdue items.
tags:
- compliance
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance-training-tracking
port: 8080
tools:
- name: compliance-training-tracking
description: Tracks compliance training completion in Workday.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Compliance Training Tracking for {{entity_id}}
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{entity_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
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: /capitalone/workers
operations:
- name: get-worker
method: GET
Retrieves pipeline execution status from Informatica.
naftiko: '0.5'
info:
label: Informatica Data Pipeline Status Lookup
description: Retrieves pipeline execution status from Informatica.
tags:
- data
- informatica
capability:
exposes:
- type: mcp
namespace: data-pipelines
port: 8080
tools:
- name: get-pipeline-status
description: Look up Informatica pipeline execution status.
inputParameters:
- name: pipeline_id
in: body
type: string
description: Informatica pipeline ID.
call: informatica.get-run
with:
pipeline_id: '{{pipeline_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: rows_processed
type: number
mapping: $.rowsProcessed
consumes:
- type: http
namespace: informatica
baseUri: https://dm-us.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: runs
path: /activity/activityMonitor/{{pipeline_id}}
inputParameters:
- name: pipeline_id
in: path
operations:
- name: get-run
method: GET
When a new lead is created in Salesforce CRM, automatically enriches the record with firmographic data from ZoomInfo and updates the lead score.
naftiko: '0.5'
info:
label: Salesforce Lead Enrichment via ZoomInfo
description: When a new lead is created in Salesforce CRM, automatically enriches the record with firmographic data from ZoomInfo and updates the lead score.
tags:
- crm
- sales
- salesforce
- zoominfo
- lead-enrichment
capability:
exposes:
- type: mcp
namespace: crm-enrichment
port: 8080
tools:
- name: enrich-salesforce-lead
description: Given a Salesforce lead ID, look up the contact in ZoomInfo and update the CRM record with company size, revenue, and industry data. Invoke when a new lead record lacks firmographic details.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID to enrich.
steps:
- name: get-lead
type: call
call: salesforce-read.get-lead
with:
leadId: '{{lead_id}}'
- name: lookup-zoominfo
type: call
call: zoominfo.search-contact
with:
email: '{{get-lead.email}}'
company: '{{get-lead.company}}'
- name: update-lead
type: call
call: salesforce-write.update-lead
with:
leadId: '{{lead_id}}'
annualRevenue: '{{lookup-zoominfo.revenue}}'
numberOfEmployees: '{{lookup-zoominfo.employeeCount}}'
industry: '{{lookup-zoominfo.industry}}'
consumes:
- type: http
namespace: salesforce-read
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: lead
path: /sobjects/Lead/{leadId}
inputParameters:
- name: leadId
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: contact
path: /contact
inputParameters:
- name: email
in: body
- name: company
in: body
operations:
- name: search-contact
method: POST
- type: http
namespace: salesforce-write
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: lead
path: /sobjects/Lead/{leadId}
inputParameters:
- name: leadId
in: path
- name: annualRevenue
in: body
- name: numberOfEmployees
in: body
- name: industry
in: body
operations:
- name: update-lead
method: PATCH
Retrieves customer profile data from DynamoDB.
naftiko: '0.5'
info:
label: DynamoDB Customer Profile Lookup
description: Retrieves customer profile data from DynamoDB.
tags:
- data
- dynamodb
capability:
exposes:
- type: mcp
namespace: customer-data
port: 8080
tools:
- name: get-customer-profile
description: Look up customer profile from DynamoDB.
inputParameters:
- name: customer_id
in: body
type: string
description: Customer ID.
call: dynamodb.get-item
with:
customer_id: '{{customer_id}}'
outputParameters:
- name: name
type: string
mapping: $.Item.name.S
- name: tier
type: string
mapping: $.Item.tier.S
consumes:
- type: http
namespace: dynamodb
baseUri: https://dynamodb.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_dynamodb_token
resources:
- name: items
path: /
operations:
- name: get-item
method: POST
When a new Salesforce Service Cloud case is opened, uses OpenAI to draft an initial customer response based on the case description and relevant knowledge base articles.
naftiko: '0.5'
info:
label: OpenAI Customer Support Response Drafter
description: When a new Salesforce Service Cloud case is opened, uses OpenAI to draft an initial customer response based on the case description and relevant knowledge base articles.
tags:
- ai
- customer-support
- openai
- salesforce
capability:
exposes:
- type: mcp
namespace: support-ai
port: 8080
tools:
- name: draft-customer-support-response
description: Given a Salesforce case ID, fetch the case details and use OpenAI to generate a draft customer response. Update the case with the draft for agent review. Use for first-response SLA optimization.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce Service Cloud case ID.
steps:
- name: get-case
type: call
call: salesforce-case.get-case
with:
caseId: '{{case_id}}'
- name: draft-response
type: call
call: openai.create-completion
with:
model: gpt-4o
messages: '[{"role": "system", "content": "You are a Capital One customer support agent."}, {"role": "user", "content": "Draft a professional response to this customer case: {{get-case.description}}"}]'
- name: update-case
type: call
call: salesforce-case-update.update-case
with:
caseId: '{{case_id}}'
internalComments: 'AI Draft: {{draft-response.choices.0.message.content}}'
consumes:
- type: http
namespace: salesforce-case
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: case
path: /sobjects/Case/{caseId}
inputParameters:
- name: caseId
in: path
operations:
- name: get-case
method: GET
- type: http
namespace: openai
baseUri: https://api.openai.com/v1
authentication:
type: bearer
token: $secrets.openai_api_key
resources:
- name: completion
path: /chat/completions
inputParameters:
- name: model
in: body
- name: messages
in: body
operations:
- name: create-completion
method: POST
- type: http
namespace: salesforce-case-update
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: case
path: /sobjects/Case/{caseId}
inputParameters:
- name: caseId
in: path
- name: internalComments
in: body
operations:
- name: update-case
method: PATCH
When a Priority 1 incident is raised in ServiceNow, enriches the ticket with Datadog monitor details, assigns to the on-call team, and sends a Slack alert to the incident bridge channel.
naftiko: '0.5'
info:
label: ServiceNow P1 Incident Triage
description: When a Priority 1 incident is raised in ServiceNow, enriches the ticket with Datadog monitor details, assigns to the on-call team, and sends a Slack alert to the incident bridge channel.
tags:
- itsm
- servicenow
- datadog
- slack
- incident-response
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: triage-p1-incident
description: Given a ServiceNow P1 incident number, fetch details, query Datadog for correlated monitor states, and post a Slack alert to the incident bridge channel. Invoke for all Priority 1 incidents.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
- name: slack_channel
in: body
type: string
description: The Slack channel ID for incident bridge notifications.
steps:
- name: get-incident
type: call
call: servicenow-p1.get-incident
with:
number: '{{incident_number}}'
- name: get-dd-monitors
type: call
call: datadog-p1.get-monitors
with:
tags: service:{{get-incident.cmdb_ci}}
- name: post-slack-alert
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'P1 INCIDENT: {{incident_number}} - {{get-incident.short_description}}. Datadog monitors: {{get-dd-monitors.count}} alerting.'
consumes:
- type: http
namespace: servicenow-p1
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: incident
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: datadog-p1
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor
inputParameters:
- name: tags
in: query
operations:
- name: get-monitors
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: message
path: /chat.postMessage
inputParameters:
- name: channel
in: body
- name: text
in: body
operations:
- name: post-message
method: POST
Runs PCI compliance scans, logs findings in ServiceNow, and creates Jira remediation tickets.
naftiko: '0.5'
info:
label: PCI Compliance Scan Orchestrator
description: Runs PCI compliance scans, logs findings in ServiceNow, and creates Jira remediation tickets.
tags:
- compliance
- servicenow
- jira
capability:
exposes:
- type: mcp
namespace: pci-compliance-scan
port: 8080
tools:
- name: pci-compliance-scan
description: Runs PCI compliance scans.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: PCI Compliance Scan for {{entity_id}}
- name: create-issue
type: call
call: jira.create-issue
with:
project: OPS
summary: PCI Compliance Scan - {{entity_id}}
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/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 ADP Workforce Now for payroll-active employees by legal entity and department, returning headcount and total base salary for finance period-close reporting.
naftiko: '0.5'
info:
label: ADP Payroll Headcount Snapshot
description: Queries ADP Workforce Now for payroll-active employees by legal entity and department, returning headcount and total base salary for finance period-close reporting.
tags:
- hr
- finance
- adp
- payroll
- reporting
capability:
exposes:
- type: mcp
namespace: payroll-reporting
port: 8080
tools:
- name: get-payroll-headcount
description: Given an ADP legal entity code and department, return total payroll headcount and aggregate base salary. Use for period-close financial reporting and workforce cost analysis.
inputParameters:
- name: legal_entity_code
in: body
type: string
description: The ADP legal entity code for the reporting entity.
- name: department
in: body
type: string
description: Optional department filter for headcount data.
call: adp.get-payroll-employees
with:
legalEntityCode: '{{legal_entity_code}}'
department: '{{department}}'
outputParameters:
- name: headcount
type: integer
mapping: $.data.totalEmployees
- name: total_salary
type: number
mapping: $.data.totalBaseSalary
consumes:
- type: http
namespace: adp
baseUri: https://api.adp.com
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: payroll-employees
path: /hr/v2/workers
inputParameters:
- name: legalEntityCode
in: query
- name: department
in: query
operations:
- name: get-payroll-employees
method: GET
Checks health status of a Databricks model serving endpoint.
naftiko: '0.5'
info:
label: Databricks Model Serving Health Lookup
description: Checks health status of a Databricks model serving endpoint.
tags:
- ml
- databricks
capability:
exposes:
- type: mcp
namespace: model-serving
port: 8080
tools:
- name: get-endpoint-health
description: Look up Databricks model serving endpoint health.
inputParameters:
- name: endpoint_name
in: body
type: string
description: Model serving endpoint name.
call: databricks.get-endpoint
with:
endpoint_name: '{{endpoint_name}}'
outputParameters:
- name: state
type: string
mapping: $.state.ready
- name: config_version
type: number
mapping: $.config.served_models[0].model_version
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: endpoints
path: /serving-endpoints/{{endpoint_name}}
inputParameters:
- name: endpoint_name
in: path
operations:
- name: get-endpoint
method: GET
When Splunk raises a security alert, enriches the event with Palo Alto Networks threat intelligence and opens a ServiceNow security incident for the SOC team.
naftiko: '0.5'
info:
label: Splunk Security Incident Triage
description: When Splunk raises a security alert, enriches the event with Palo Alto Networks threat intelligence and opens a ServiceNow security incident for the SOC team.
tags:
- security
- splunk
- palo-alto-networks
- servicenow
- incident-response
capability:
exposes:
- type: mcp
namespace: soc-ops
port: 8080
tools:
- name: triage-splunk-security-alert
description: Given a Splunk alert ID and source IP, fetch alert details, query Palo Alto for threat context, and open a ServiceNow security incident. Use for automated SOC Level 1 triage.
inputParameters:
- name: alert_id
in: body
type: string
description: The Splunk alert search ID or SID.
- name: source_ip
in: body
type: string
description: The source IP address involved in the alert.
steps:
- name: get-alert-details
type: call
call: splunk.get-alert
with:
alertId: '{{alert_id}}'
- name: get-threat-intel
type: call
call: paloalto.get-threat-intel
with:
sourceIp: '{{source_ip}}'
- name: create-security-incident
type: call
call: servicenow-soc.create-security-incident
with:
short_description: 'Security alert {{alert_id}}: {{get-alert-details.name}}'
description: 'Source IP {{source_ip}} threat score: {{get-threat-intel.threatScore}}'
category: Security
urgency: '1'
consumes:
- type: http
namespace: splunk
baseUri: https://capitalone-splunk.splunkcloud.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: alert
path: /search/jobs/{alertId}/results
inputParameters:
- name: alertId
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: paloalto
baseUri: https://capitalone-pa.example.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: threat-intel
path: /Objects/Addresses
inputParameters:
- name: sourceIp
in: query
operations:
- name: get-threat-intel
method: GET
- type: http
namespace: servicenow-soc
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: security-incident
path: /table/sn_si_incident
inputParameters:
- name: short_description
in: body
- name: description
in: body
- name: category
in: body
- name: urgency
in: body
operations:
- name: create-security-incident
method: POST
When an expense report is submitted in SAP Concur exceeding a policy threshold, creates a ServiceNow approval task and notifies the approver via Microsoft Teams.
naftiko: '0.5'
info:
label: Expense Report Approval via SAP Concur
description: When an expense report is submitted in SAP Concur exceeding a policy threshold, creates a ServiceNow approval task and notifies the approver via Microsoft Teams.
tags:
- finance
- expense-management
- sap-concur
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-expense
port: 8080
tools:
- name: trigger-expense-approval-workflow
description: Given a Concur expense report ID and approval threshold, create a ServiceNow approval task and send a Teams notification to the approver. Use when high-value expense reports need manager review.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: approver_email
in: body
type: string
description: The approver's email address for Teams notification.
- name: threshold
in: body
type: number
description: The dollar threshold above which approval is required.
steps:
- name: get-expense-report
type: call
call: concur.get-expense-report
with:
reportId: '{{report_id}}'
- name: create-approval-task
type: call
call: servicenow-exp.create-approval-task
with:
description: Expense report {{report_id}} totaling {{get-expense-report.total}} requires approval.
assignedTo: '{{approver_email}}'
- name: notify-approver
type: call
call: msteams-exp.send-message
with:
recipient: '{{approver_email}}'
message: 'Expense report {{report_id}} of ${{get-expense-report.total}} requires your approval. ServiceNow task: {{create-approval-task.taskId}}.'
consumes:
- type: http
namespace: concur
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-report
path: /expense/reports/{reportId}
inputParameters:
- name: reportId
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: servicenow-exp
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: approval-task
path: /table/sc_task
inputParameters:
- name: description
in: body
- name: assignedTo
in: body
operations:
- name: create-approval-task
method: POST
- type: http
namespace: msteams-exp
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /users/{recipient}/sendMail
inputParameters:
- name: recipient
in: path
- name: message
in: body
operations:
- name: send-message
method: POST
Retrieves revenue metrics from a Power BI dataset.
naftiko: '0.5'
info:
label: Power BI Revenue Dashboard Lookup
description: Retrieves revenue metrics from a Power BI dataset.
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: get-revenue-metrics
description: Look up revenue metrics from Power BI.
inputParameters:
- name: dataset_id
in: body
type: string
description: Power BI dataset ID.
call: powerbi.get-dataset-value
with:
dataset_id: '{{dataset_id}}'
outputParameters:
- name: total_revenue
type: number
mapping: $.value[0].total_revenue
- name: yoy_growth
type: number
mapping: $.value[0].yoy_growth_pct
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}}/executeQueries
operations:
- name: get-dataset-value
method: POST
Checks the execution status of an Amazon Redshift query.
naftiko: '0.5'
info:
label: Amazon Redshift Query Status Lookup
description: Checks the execution status of an Amazon Redshift query.
tags:
- data
- amazon-redshift
capability:
exposes:
- type: mcp
namespace: redshift-ops
port: 8080
tools:
- name: get-query-status
description: Look up Redshift query status.
inputParameters:
- name: query_id
in: body
type: string
description: Redshift query ID.
call: redshift.get-statement
with:
query_id: '{{query_id}}'
outputParameters:
- name: status
type: string
mapping: $.Status
- name: rows_affected
type: number
mapping: $.ResultRows
consumes:
- type: http
namespace: redshift
baseUri: https://redshift-data.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_redshift_token
resources:
- name: statements
path: /
operations:
- name: get-statement
method: POST
Verifies customer identity using Snowflake data, updates verification status, and notifies compliance.
naftiko: '0.5'
info:
label: Customer Identity Verification Orchestrator
description: Verifies customer identity using Snowflake data, updates verification status, and notifies compliance.
tags:
- banking
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-identity-verification
port: 8080
tools:
- name: customer-identity-verification
description: Verifies customer identity using Snowflake data.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Customer Identity Verification for {{entity_id}}
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
Validates schema changes in Snowflake, creates ServiceNow change requests, and notifies DBAs via Slack.
naftiko: '0.5'
info:
label: Database Schema Migration Orchestrator
description: Validates schema changes in Snowflake, creates ServiceNow change requests, and notifies DBAs via Slack.
tags:
- data
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: database-schema-migration
port: 8080
tools:
- name: database-schema-migration
description: Validates schema changes in Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Database Schema Migration for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Database Schema Migration processed for {{entity_id}}
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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
Detects mobile app crashes via Datadog, creates Jira bugs, and notifies the mobile team via Slack.
naftiko: '0.5'
info:
label: Mobile App Crash Response Orchestrator
description: Detects mobile app crashes via Datadog, creates Jira bugs, and notifies the mobile team via Slack.
tags:
- mobile
- datadog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: mobile-app-crash-response
port: 8080
tools:
- name: mobile-app-crash-response
description: Detects mobile app crashes via Datadog.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: create-issue
type: call
call: jira.create-issue
with:
project: OPS
summary: Mobile App Crash Response - {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Mobile App Crash Response processed for {{entity_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
operations:
- name: get-monitors
method: GET
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: 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 purchase order status from Coupa.
naftiko: '0.5'
info:
label: Coupa Purchase Order Status Lookup
description: Retrieves purchase order status from Coupa.
tags:
- procurement
- coupa
capability:
exposes:
- type: mcp
namespace: po-status
port: 8080
tools:
- name: get-po-status
description: Look up Coupa purchase order status.
inputParameters:
- name: po_number
in: body
type: string
description: Coupa PO number.
call: coupa.get-po
with:
po_number: '{{po_number}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: total_amount
type: number
mapping: $.total
consumes:
- type: http
namespace: coupa
baseUri: https://capitalone.coupahost.com/api
authentication:
type: bearer
token: $secrets.coupa_token
resources:
- name: purchase-orders
path: /purchase_orders/{{po_number}}
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Collects incident data from ServiceNow, gathers metrics from Datadog, and publishes postmortem to Confluence.
naftiko: '0.5'
info:
label: Incident Postmortem Orchestrator
description: Collects incident data from ServiceNow, gathers metrics from Datadog, and publishes postmortem to Confluence.
tags:
- operations
- servicenow
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: incident-postmortem
port: 8080
tools:
- name: incident-postmortem
description: Collects incident data from ServiceNow.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Incident Postmortem for {{entity_id}}
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Incident Postmortem
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
operations:
- name: get-monitors
method: GET
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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
When a transaction fraud alert is logged, uses Anthropic to summarize the alert context and risk signals, then creates a ServiceNow security incident for the fraud operations team.
naftiko: '0.5'
info:
label: Fraud Alert Triage with Anthropic AI
description: When a transaction fraud alert is logged, uses Anthropic to summarize the alert context and risk signals, then creates a ServiceNow security incident for the fraud operations team.
tags:
- ai
- fraud-detection
- anthropic
- servicenow
- financial-services
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: triage-fraud-alert
description: Given a fraud alert payload with transaction details, send the context to Anthropic for risk summarization and open a ServiceNow security incident with the AI-generated summary. Use for automated fraud triage.
inputParameters:
- name: alert_payload
in: body
type: string
description: JSON string containing fraud alert details including transaction ID, amount, and risk signals.
- name: account_id
in: body
type: string
description: The customer account ID associated with the fraud alert.
steps:
- name: summarize-alert
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
max_tokens: 500
messages: '[{"role": "user", "content": "Summarize this fraud alert and assess risk level: {{alert_payload}}"}]'
- name: create-fraud-incident
type: call
call: servicenow-fraud.create-security-incident
with:
short_description: Fraud alert for account {{account_id}}
description: '{{summarize-alert.content}}'
category: Fraud
urgency: '1'
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
inputParameters:
- name: model
in: body
- name: max_tokens
in: body
- name: messages
in: body
operations:
- name: create-message
method: POST
- type: http
namespace: servicenow-fraud
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_pass
resources:
- name: security-incident
path: /table/sn_si_incident
inputParameters:
- name: short_description
in: body
- name: description
in: body
- name: category
in: body
- name: urgency
in: body
operations:
- name: create-security-incident
method: POST
Validates ML model performance in Databricks, logs governance events in ServiceNow, and notifies data science team.
naftiko: '0.5'
info:
label: ML Model Governance Orchestrator
description: Validates ML model performance in Databricks, logs governance events in ServiceNow, and notifies data science team.
tags:
- ml
- databricks
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: ml-model-governance
port: 8080
tools:
- name: ml-model-governance
description: Validates ML model performance in Databricks.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: ML Model Governance for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: ML Model Governance processed for {{entity_id}}
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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
Queries New Relic for application transaction error rates and Apdex scores across a service tier, then publishes a daily performance summary to the engineering Slack channel.
naftiko: '0.5'
info:
label: New Relic APM Performance Digest
description: Queries New Relic for application transaction error rates and Apdex scores across a service tier, then publishes a daily performance summary to the engineering Slack channel.
tags:
- observability
- new-relic
- slack
- apm
- reporting
capability:
exposes:
- type: mcp
namespace: apm-reporting
port: 8080
tools:
- name: digest-apm-performance
description: Given a New Relic application name and time window, retrieve error rate and Apdex scores and post a performance digest to Slack. Use for daily engineering health reviews.
inputParameters:
- name: app_name
in: body
type: string
description: The New Relic application name to report on.
- name: time_window_hours
in: body
type: integer
description: Number of hours to include in the performance digest.
- name: slack_channel
in: body
type: string
description: Slack channel ID for the digest notification.
steps:
- name: get-app-metrics
type: call
call: newrelic.get-metric-data
with:
appName: '{{app_name}}'
timeWindowHours: '{{time_window_hours}}'
- name: post-digest
type: call
call: slack-apm.post-message
with:
channel: '{{slack_channel}}'
text: 'APM Digest for {{app_name}}: Error rate {{get-app-metrics.errorRate}}%, Apdex {{get-app-metrics.apdexScore}} over last {{time_window_hours}}h.'
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apikey
key: X-Api-Key
value: $secrets.newrelic_api_key
placement: header
resources:
- name: metric-data
path: /applications.json
inputParameters:
- name: appName
in: query
- name: timeWindowHours
in: query
operations:
- name: get-metric-data
method: GET
- type: http
namespace: slack-apm
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: message
path: /chat.postMessage
inputParameters:
- name: channel
in: body
- name: text
in: body
operations:
- name: post-message
method: POST
Pulls Workday headcount data, forecasts hiring needs in Snowflake, and publishes plan to Confluence.
naftiko: '0.5'
info:
label: Workforce Planning Forecast Orchestrator
description: Pulls Workday headcount data, forecasts hiring needs in Snowflake, and publishes plan to Confluence.
tags:
- hr
- workday
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: workforce-planning-forecast
port: 8080
tools:
- name: workforce-planning-forecast
description: Pulls Workday headcount data.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Workforce Planning Forecast
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{entity_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /capitalone/workers
operations:
- name: get-worker
method: GET
Processes penetration test findings, creates Jira remediation tickets, and notifies security team via Slack.
naftiko: '0.5'
info:
label: Automated Pen Test Findings Orchestrator
description: Processes penetration test findings, creates Jira remediation tickets, and notifies security team via Slack.
tags:
- security
- jira
- slack
capability:
exposes:
- type: mcp
namespace: automated-pen-test-findings
port: 8080
tools:
- name: automated-pen-test-findings
description: Processes penetration test findings.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-issue
type: call
call: jira.create-issue
with:
project: OPS
summary: Automated Pen Test Findings - {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Automated Pen Test Findings processed for {{entity_id}}
consumes:
- type: http
namespace: jira
baseUri: https://capitalone.atlassian.net/rest/api/3
authentication:
type: 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
Monitors payment latency via Datadog, creates ServiceNow incidents for SLA breaches, and alerts operations.
naftiko: '0.5'
info:
label: Payment Processing Latency Orchestrator
description: Monitors payment latency via Datadog, creates ServiceNow incidents for SLA breaches, and alerts operations.
tags:
- banking
- datadog
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: payment-processing-latency
port: 8080
tools:
- name: payment-processing-latency
description: Monitors payment latency via Datadog.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Payment Processing Latency for {{entity_id}}
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: Payment Processing Latency processed for {{entity_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
operations:
- name: get-monitors
method: GET
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
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
Queries Salesforce for open opportunities by stage and owner, then publishes a Power BI pipeline digest report for sales leadership review.
naftiko: '0.5'
info:
label: Salesforce Opportunity Pipeline Digest
description: Queries Salesforce for open opportunities by stage and owner, then publishes a Power BI pipeline digest report for sales leadership review.
tags:
- crm
- sales
- salesforce
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: sales-reporting
port: 8080
tools:
- name: digest-opportunity-pipeline
description: Given a sales stage filter and date range, retrieve open Salesforce opportunities and trigger a Power BI dataset refresh. Use for weekly pipeline reviews or executive dashboards.
inputParameters:
- name: stage
in: body
type: string
description: The opportunity stage to filter by (e.g., Proposal, Negotiation).
- name: close_date_before
in: body
type: string
description: Filter opportunities closing before this date (ISO 8601).
- name: dataset_id
in: body
type: string
description: Power BI dataset ID to refresh after query.
steps:
- name: query-opportunities
type: call
call: salesforce-opp.query-opportunities
with:
stage: '{{stage}}'
closeDateBefore: '{{close_date_before}}'
- name: refresh-powerbi
type: call
call: powerbi-sales.trigger-refresh
with:
datasetId: '{{dataset_id}}'
consumes:
- type: http
namespace: salesforce-opp
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /query
inputParameters:
- name: q
in: query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: powerbi-sales
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refresh
path: /datasets/{datasetId}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: trigger-refresh
method: POST
Runs churn prediction models in Databricks, identifies at-risk customers, and creates Salesforce retention campaigns.
naftiko: '0.5'
info:
label: Customer Churn Prediction Orchestrator
description: Runs churn prediction models in Databricks, identifies at-risk customers, and creates Salesforce retention campaigns.
tags:
- analytics
- databricks
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-churn-prediction
port: 8080
tools:
- name: customer-churn-prediction
description: Runs churn prediction models in Databricks.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
entity_id: '{{entity_id}}'
- name: update-sf
type: call
call: salesforce.update-opp
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: databricks
baseUri: https://capitalone.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: salesforce
baseUri: https://capitalone.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: objects
path: /sobjects
operations:
- name: get-lead
method: GET
- name: create-lead
method: POST
- name: update-opp
method: PATCH
Monitors API gateway metrics via Datadog, adjusts rate limits, and notifies developers via Slack.
naftiko: '0.5'
info:
label: API Gateway Rate Limit Orchestrator
description: Monitors API gateway metrics via Datadog, adjusts rate limits, and notifies developers via Slack.
tags:
- infrastructure
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: api-gateway-rate-limit
port: 8080
tools:
- name: api-gateway-rate-limit
description: Monitors API gateway metrics via Datadog.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: check-metrics
type: call
call: datadog.get-monitors
with:
entity_id: '{{entity_id}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#ops'
text: API Gateway Rate Limit processed for {{entity_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
operations:
- name: get-monitors
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
Runs stress test scenarios in Snowflake, compiles results, and publishes reports to Confluence.
naftiko: '0.5'
info:
label: Quarterly Stress Test Orchestrator
description: Runs stress test scenarios in Snowflake, compiles results, and publishes reports to Confluence.
tags:
- risk
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: quarterly-stress-test
port: 8080
tools:
- name: quarterly-stress-test
description: Runs stress test scenarios in Snowflake.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: query-data
type: call
call: snowflake.run-query
with:
entity_id: '{{entity_id}}'
- name: publish
type: call
call: confluence.create-page
with:
space_key: OPS
title: Quarterly Stress Test
consumes:
- type: http
namespace: snowflake
baseUri: https://capitalone.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: https://capitalone.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
Reviews Okta access assignments, validates against role requirements, and creates ServiceNow tickets for anomalies.
naftiko: '0.5'
info:
label: Employee Access Review Orchestrator
description: Reviews Okta access assignments, validates against role requirements, and creates ServiceNow tickets for anomalies.
tags:
- identity
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: employee-access-review
port: 8080
tools:
- name: employee-access-review
description: Reviews Okta access assignments.
inputParameters:
- name: entity_id
in: body
type: string
description: Primary entity identifier.
steps:
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Employee Access Review for {{entity_id}}
- name: check-access
type: call
call: okta.get-user
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://capitalone.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: okta
baseUri: https://capitalone.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users
operations:
- name: get-user
method: GET
On Bloomberg feed disruption, switches to FactSet backup, validates data quality in Snowflake, alerts trading desks via Microsoft Teams, and creates a ServiceNow incident.
naftiko: '0.5'
info:
label: Market Data Feed Failover Orchestrator
description: On Bloomberg feed disruption, switches to FactSet backup, validates data quality in Snowflake, alerts trading desks via Microsoft Teams, and creates a ServiceNow incident.
tags:
- market-data
- failover
- bloomberg
- factset
- microsoft-teams
- servicenow
capability:
exposes:
- type: mcp
namespace: feed-failover
port: 8080
tools:
- name: execute-failover
description: Orchestrate market data feed failover from Bloomberg to FactSet.
inputParameters:
- name: feed_id
in: body
type: string
description: Bloomberg feed identifier.
- name: failure_type
in: body
type: string
description: Type of failure (latency, stale, disconnected).
steps:
- name: activate-backup
type: call
call: factset.activate-feed
with:
feed_type: '{{feed_id}}'
mode: primary
- name: validate-quality
type: call
call: snowflake.query-quality
with:
statement: SELECT COUNT(*) as stale_count FROM MARKET_DATA WHERE updated_at < DATEADD(minute, -5, CURRENT_TIMESTAMP)
warehouse: SCHWAB_TRADING_WH
- name: alert-trading
type: call
call: msteams.send-channel-message
with:
team_id: trading-desks
channel: market-data-alerts
text: 'ALERT: Bloomberg feed {{feed_id}} failed ({{failure_type}}). Switched to FactSet backup. Data quality check: {{validate-quality.stale_count}} stale records.'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Bloomberg feed failover: {{feed_id}} - {{failure_type}}'
category: market_data
assigned_group: Market_Data_Ops
description: 'Bloomberg feed {{feed_id}} failed: {{failure_type}}. FactSet backup activated. Stale records: {{validate-quality.stale_count}}.'
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: feeds
path: /feeds/activate
operations:
- name: activate-feed
method: POST
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-quality
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
- type: http
namespace: servicenow
baseUri: https://schwab.service-now.com/api/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 upcoming earnings dates and estimates from FactSet for securities in Schwab client portfolios.
naftiko: '0.5'
info:
label: FactSet Earnings Calendar Retriever
description: Retrieves upcoming earnings dates and estimates from FactSet for securities in Schwab client portfolios.
tags:
- research
- earnings
- factset
capability:
exposes:
- type: mcp
namespace: earnings-research
port: 8080
tools:
- name: get-earnings-calendar
description: Fetch upcoming earnings dates and consensus estimates from FactSet.
inputParameters:
- name: ticker
in: body
type: string
description: Stock ticker symbol.
call: factset.get-earnings
with:
ids: '{{ticker}}'
outputParameters:
- name: earnings_date
type: string
mapping: $.data[0].earnings_date
- name: eps_estimate
type: number
mapping: $.data[0].eps_consensus
- name: revenue_estimate
type: number
mapping: $.data[0].revenue_consensus
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-estimates/v2
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: earnings
path: /consensus-estimates
operations:
- name: get-earnings
method: POST
Searches Splunk for security events related to unauthorized access attempts and suspicious login patterns.
naftiko: '0.5'
info:
label: Splunk Security Event Analyzer
description: Searches Splunk for security events related to unauthorized access attempts and suspicious login patterns.
tags:
- security
- siem
- splunk
capability:
exposes:
- type: mcp
namespace: security-analysis
port: 8080
tools:
- name: search-security-events
description: Run a Splunk search for security events.
inputParameters:
- name: search_query
in: body
type: string
description: Splunk search query (SPL).
- name: time_range
in: body
type: string
description: Time range (e.g., -24h, -7d).
call: splunk.create-search
with:
search: '{{search_query}}'
earliest_time: '{{time_range}}'
outputParameters:
- name: search_id
type: string
mapping: $.sid
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.schwab.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /search/jobs
operations:
- name: create-search
method: POST
Sends SMS notifications to Schwab clients via Twilio for trade confirmations, account alerts, and security notifications.
naftiko: '0.5'
info:
label: Twilio Client SMS Notification Sender
description: Sends SMS notifications to Schwab clients via Twilio for trade confirmations, account alerts, and security notifications.
tags:
- notifications
- sms
- twilio
capability:
exposes:
- type: mcp
namespace: client-notifications
port: 8080
tools:
- name: send-sms
description: Send an SMS notification to a client via Twilio.
inputParameters:
- name: phone_number
in: body
type: string
description: Client 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: '+18005407000'
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
On new mutual fund purchase, retrieves the prospectus from the fund company API, stores in Box, sends to the client via email, and logs compliance delivery in Salesforce.
naftiko: '0.5'
info:
label: Mutual Fund Prospectus Delivery Pipeline
description: On new mutual fund purchase, retrieves the prospectus from the fund company API, stores in Box, sends to the client via email, and logs compliance delivery in Salesforce.
tags:
- mutual-funds
- prospectus
- box
- salesforce
capability:
exposes:
- type: mcp
namespace: prospectus-delivery
port: 8080
tools:
- name: deliver-prospectus
description: Orchestrate mutual fund prospectus delivery across fund API, Box, email, and Salesforce.
inputParameters:
- name: fund_ticker
in: body
type: string
description: Mutual fund ticker.
- name: account_id
in: body
type: string
description: Client account ID.
- name: client_email
in: body
type: string
description: Client email address.
steps:
- name: get-prospectus
type: call
call: funds.get-prospectus
with:
ticker: '{{fund_ticker}}'
- name: store-copy
type: call
call: box.upload-file
with:
folder_id: prospectus_delivery
filename: '{{fund_ticker}}_{{account_id}}_prospectus.pdf'
content: '{{get-prospectus.document}}'
- name: email-client
type: call
call: ses.send-email
with:
to: '{{client_email}}'
subject: Prospectus for {{get-prospectus.fund_name}}
body: Please find attached the prospectus for your recent purchase of {{get-prospectus.fund_name}} ({{fund_ticker}}).
attachment: '{{store-copy.url}}'
- name: log-delivery
type: call
call: salesforce.create-task
with:
account_id: '{{account_id}}'
subject: 'Prospectus delivered: {{fund_ticker}}'
description: 'Prospectus for {{get-prospectus.fund_name}} delivered via email. Box link: {{store-copy.url}}.'
consumes:
- type: http
namespace: funds
baseUri: https://fund-data.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.fund_data_token
resources:
- name: prospectus
path: /funds/{{ticker}}/prospectus
inputParameters:
- name: ticker
in: path
operations:
- name: get-prospectus
method: GET
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_access_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
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: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
On SEC filing detection, retrieves prospectus data from FactSet, updates the fund database in Snowflake, publishes to the client portal via SharePoint, and notifies compliance via Microsoft Teams.
naftiko: '0.5'
info:
label: ETF Prospectus Update Orchestrator
description: On SEC filing detection, retrieves prospectus data from FactSet, updates the fund database in Snowflake, publishes to the client portal via SharePoint, and notifies compliance via Microsoft Teams.
tags:
- fund-management
- prospectus
- factset
- snowflake
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: prospectus-management
port: 8080
tools:
- name: process-prospectus-update
description: Orchestrate ETF prospectus update across FactSet, Snowflake, SharePoint, and Teams.
inputParameters:
- name: fund_ticker
in: body
type: string
description: ETF ticker symbol.
- name: filing_id
in: body
type: string
description: SEC filing identifier.
steps:
- name: get-prospectus
type: call
call: factset.get-fund-filing
with:
ticker: '{{fund_ticker}}'
filing_id: '{{filing_id}}'
- name: update-database
type: call
call: snowflake.execute-update
with:
statement: UPDATE FUND_PROSPECTUS SET content = '{{get-prospectus.content}}', effective_date = '{{get-prospectus.effective_date}}' WHERE ticker = '{{fund_ticker}}'
warehouse: SCHWAB_FUND_WH
- name: publish-portal
type: call
call: sharepoint.upload-file
with:
site_id: fund_documents
path: Prospectus/{{fund_ticker}}/{{filing_id}}.pdf
content: '{{get-prospectus.document}}'
- name: notify-compliance
type: call
call: msteams.send-channel-message
with:
team_id: fund-compliance
channel: prospectus-updates
text: 'Prospectus updated: {{fund_ticker}}. Filing: {{filing_id}}. Effective: {{get-prospectus.effective_date}}.'
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-funds/v1
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: filings
path: /fund-filings
operations:
- name: get-fund-filing
method: POST
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-update
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:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: 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/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
Generates client account statements using Crystal Reports with Snowflake data for quarterly mailings.
naftiko: '0.5'
info:
label: Crystal Reports Client Statement Generator
description: Generates client account statements using Crystal Reports with Snowflake data for quarterly mailings.
tags:
- reporting
- crystal-reports
- snowflake
capability:
exposes:
- type: mcp
namespace: client-statements
port: 8080
tools:
- name: generate-statement
description: Generate a client statement using Crystal Reports.
inputParameters:
- name: account_number
in: body
type: string
description: Account number.
- name: period
in: body
type: string
description: Statement period.
steps:
- name: fetch-data
type: call
call: snowflake.run-query
with:
query: SELECT * FROM client_statement_data WHERE account_number='{{account_number}}' AND period='{{period}}'
- name: generate-report
type: call
call: crystal-reports.generate
with:
template: client_statement
data: '{{fetch-data.results}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.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: crystal-reports
baseUri: https://reports.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.crystal_reports_token
resources:
- name: reports
path: /reports/generate
operations:
- name: generate
method: POST
On critical trading platform incident, queries Datadog for service health, creates a Jira incident, pages on-call via PagerDuty, and posts a status update to Microsoft Teams.
naftiko: '0.5'
info:
label: Platform Incident Response Orchestrator
description: On critical trading platform incident, queries Datadog for service health, creates a Jira incident, pages on-call via PagerDuty, and posts a status update to Microsoft Teams.
tags:
- incident-response
- datadog
- jira
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: trigger-incident-response
description: Orchestrate incident response across Datadog, Jira, PagerDuty, and Teams.
inputParameters:
- name: service_name
in: body
type: string
description: Affected service name.
- name: severity
in: body
type: string
description: Incident severity (P1, P2, P3).
- name: description
in: body
type: string
description: Incident description.
steps:
- name: get-service-health
type: call
call: datadog.get-service-status
with:
service: '{{service_name}}'
- name: create-incident-ticket
type: call
call: jira.create-issue
with:
project: INCIDENT
summary: '{{severity}} - {{service_name}}: {{description}}'
description: 'Service: {{service_name}}
Severity: {{severity}}
Datadog Status: {{get-service-health.status}}
Description: {{description}}'
issuetype: Incident
priority: '{{severity}}'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
service_id: '{{service_name}}'
title: '{{severity}} - {{service_name}}: {{description}}'
body: 'Jira: {{create-incident-ticket.key}}'
- name: post-status
type: call
call: msteams.send-channel-message
with:
team_id: trading-platform-team
channel: incidents
text: '{{severity}} INCIDENT: {{service_name}} - {{description}}. Jira: {{create-incident-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://schwab.atlassian.net/rest/api/3
authentication:
type: 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
Archives historical trade execution data from the operational database to S3 for regulatory retention.
naftiko: '0.5'
info:
label: Amazon S3 Trade Data Archiver
description: Archives historical trade execution data from the operational database to S3 for regulatory retention.
tags:
- data-engineering
- archival
- amazon-s3
capability:
exposes:
- type: mcp
namespace: trade-archival
port: 8080
tools:
- name: archive-trade-data
description: Archive trade data to S3 for long-term regulatory retention.
inputParameters:
- name: date
in: body
type: string
description: Date to archive.
- name: asset_class
in: body
type: string
description: Asset class (equities, fixed_income, options, mutual_funds).
call: s3.put-object
with:
bucket: schwab-trade-archive
key: trades/{{asset_class}}/{{date}}/data.parquet
outputParameters:
- name: etag
type: string
mapping: $.ETag
consumes:
- type: http
namespace: s3
baseUri: https://schwab-trade-archive.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
Checks Azure DevOps pipeline status for Schwab's digital platform deployments.
naftiko: '0.5'
info:
label: Azure DevOps CI/CD Pipeline Status
description: Checks Azure DevOps pipeline status for Schwab's digital platform deployments.
tags:
- devops
- ci-cd
- azure-devops
capability:
exposes:
- type: mcp
namespace: cicd-status
port: 8080
tools:
- name: get-pipeline-status
description: Get the latest 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/schwab
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
Retrieves a snapshot of infrastructure health metrics from Grafana dashboards for Schwab's trading platform systems.
naftiko: '0.5'
info:
label: Grafana Infrastructure Dashboard Snapshot
description: Retrieves a snapshot of infrastructure health metrics from Grafana dashboards for Schwab's trading platform systems.
tags:
- infrastructure
- monitoring
- grafana
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-dashboard-snapshot
description: Fetch a Grafana dashboard snapshot by dashboard UID.
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.schwab.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
Generates quarterly client statements by querying Snowflake for account data, rendering PDF via Crystal Reports, uploading to Amazon S3, and logging delivery in Salesforce.
naftiko: '0.5'
info:
label: Quarterly Client Statement Pipeline
description: Generates quarterly client statements by querying Snowflake for account data, rendering PDF via Crystal Reports, uploading to Amazon S3, and logging delivery in Salesforce.
tags:
- statements
- reporting
- snowflake
- crystal-reports
- amazon-s3
- salesforce
capability:
exposes:
- type: mcp
namespace: client-statements
port: 8080
tools:
- name: generate-statement
description: Orchestrate quarterly statement generation across Snowflake, Crystal Reports, S3, and Salesforce.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: quarter
in: body
type: string
description: Quarter identifier (e.g., 2026-Q1).
steps:
- name: get-account-data
type: call
call: snowflake.query-statement-data
with:
statement: SELECT * FROM STATEMENT_DATA WHERE account_id = '{{account_id}}' AND quarter = '{{quarter}}'
warehouse: SCHWAB_REPORTING_WH
- name: render-pdf
type: call
call: crystalreports.generate-report
with:
template: quarterly-statement
data: '{{get-account-data.data}}'
- name: upload-statement
type: call
call: s3.put-object
with:
bucket: schwab-client-statements
key: '{{quarter}}/{{account_id}}/statement.pdf'
body: '{{render-pdf.document}}'
- name: log-delivery
type: call
call: salesforce.create-task
with:
account_id: '{{account_id}}'
subject: Q{{quarter}} statement generated
description: 'Statement uploaded to S3: {{upload-statement.url}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-statement-data
method: POST
- type: http
namespace: crystalreports
baseUri: https://crystal-api.schwab.com/v1
authentication:
type: bearer
token: $secrets.crystal_reports_token
resources:
- name: reports
path: /render
operations:
- name: generate-report
method: POST
- type: http
namespace: s3
baseUri: https://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: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
Prepares an advisor for a client review by pulling portfolio data from Snowflake, recent interactions from Salesforce, market outlook from Bloomberg, and compiling a briefing in Google Docs.
naftiko: '0.5'
info:
label: Advisor Client Review Prep Orchestrator
description: Prepares an advisor for a client review by pulling portfolio data from Snowflake, recent interactions from Salesforce, market outlook from Bloomberg, and compiling a briefing in Google Docs.
tags:
- advisory
- client-review
- snowflake
- salesforce
- bloomberg
- google-docs
capability:
exposes:
- type: mcp
namespace: review-preparation
port: 8080
tools:
- name: prepare-client-review
description: Orchestrate client review preparation across multiple data sources.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: advisor_email
in: body
type: string
description: Advisor email for document sharing.
steps:
- name: get-portfolio
type: call
call: snowflake.query-portfolio
with:
statement: SELECT * FROM PORTFOLIO_SUMMARY WHERE account_id = '{{account_id}}'
warehouse: SCHWAB_ANALYTICS_WH
- name: get-interactions
type: call
call: salesforce.get-activities
with:
account_id: '{{account_id}}'
- name: get-market-outlook
type: call
call: bloomberg.get-research
with:
topic: market-outlook
format: summary
- name: create-briefing
type: call
call: googledocs.create-document
with:
title: 'Client Review: {{account_id}} - {{get-portfolio.client_name}}'
content: 'Portfolio Value: {{get-portfolio.total_value}}
YTD Return: {{get-portfolio.ytd_return}}
Recent Activity: {{get-interactions.summary}}
Market Outlook: {{get-market-outlook.summary}}'
share_with: '{{advisor_email}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-portfolio
method: POST
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/Account/{{account_id}}/Activities
inputParameters:
- name: account_id
in: path
operations:
- name: get-activities
method: GET
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: research
path: /research
operations:
- name: get-research
method: GET
- 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
On trade settlement failure, retrieves trade details from Calypso, checks counterparty status in Bloomberg, creates a Jira ticket for operations, and escalates via PagerDuty.
naftiko: '0.5'
info:
label: Trade Failure Resolution Pipeline
description: On trade settlement failure, retrieves trade details from Calypso, checks counterparty status in Bloomberg, creates a Jira ticket for operations, and escalates via PagerDuty.
tags:
- trade-operations
- settlement
- calypso
- bloomberg
- jira
- pagerduty
capability:
exposes:
- type: mcp
namespace: trade-failure
port: 8080
tools:
- name: resolve-trade-failure
description: Orchestrate trade failure resolution across Calypso, Bloomberg, Jira, and PagerDuty.
inputParameters:
- name: trade_id
in: body
type: string
description: Failed trade identifier.
- name: failure_reason
in: body
type: string
description: Settlement failure reason code.
steps:
- name: get-trade
type: call
call: calypso.get-trade
with:
trade_id: '{{trade_id}}'
- name: check-counterparty
type: call
call: bloomberg.get-counterparty
with:
counterparty_id: '{{get-trade.counterparty_id}}'
- name: create-jira
type: call
call: jira.create-issue
with:
project: TRADEOPS
summary: 'Settlement failure: {{trade_id}} - {{failure_reason}}'
description: 'Trade: {{trade_id}}
Counterparty: {{check-counterparty.name}}
Amount: {{get-trade.settlement_amount}}
Failure: {{failure_reason}}'
issuetype: Incident
- name: escalate
type: call
call: pagerduty.create-incident
with:
service_id: TRADE_SETTLEMENT
title: 'Trade settlement failure: {{trade_id}}'
body: 'Jira: {{create-jira.key}}. Counterparty: {{check-counterparty.name}}.'
consumes:
- type: http
namespace: calypso
baseUri: https://calypso.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.calypso_token
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: counterparties
path: /counterparties/{{counterparty_id}}
inputParameters:
- name: counterparty_id
in: path
operations:
- name: get-counterparty
method: GET
- type: http
namespace: jira
baseUri: https://schwab.atlassian.net/rest/api/3
authentication:
type: 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
On advisor rebalance request, retrieves portfolio holdings from Snowflake, runs compliance checks via the internal API, generates trade orders in the OMS, and notifies the advisor via Microsoft Teams.
naftiko: '0.5'
info:
label: Client Portfolio Rebalance Orchestrator
description: On advisor rebalance request, retrieves portfolio holdings from Snowflake, runs compliance checks via the internal API, generates trade orders in the OMS, and notifies the advisor via Microsoft Teams.
tags:
- portfolio-management
- rebalancing
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: portfolio-rebalance
port: 8080
tools:
- name: trigger-rebalance
description: Orchestrate a portfolio rebalance across holdings analysis, compliance, and order generation.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: target_model
in: body
type: string
description: Target allocation model name.
- name: advisor_email
in: body
type: string
description: Advisor email for notification.
steps:
- name: get-holdings
type: call
call: snowflake.query-holdings
with:
statement: SELECT * FROM PORTFOLIO_HOLDINGS WHERE account_id = '{{account_id}}'
warehouse: SCHWAB_ANALYTICS_WH
- name: run-compliance
type: call
call: compliance.check-rebalance
with:
account_id: '{{account_id}}'
target_model: '{{target_model}}'
holdings: '{{get-holdings.data}}'
- name: generate-orders
type: call
call: oms.create-orders
with:
account_id: '{{account_id}}'
trades: '{{run-compliance.approved_trades}}'
- name: notify-advisor
type: call
call: msteams.send-message
with:
recipient_upn: '{{advisor_email}}'
text: 'Rebalance initiated for account {{account_id}}. Orders: {{generate-orders.order_count}}. Compliance status: {{run-compliance.status}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-holdings
method: POST
- type: http
namespace: compliance
baseUri: https://compliance-api.schwab.com/v1
authentication:
type: bearer
token: $secrets.compliance_api_token
resources:
- name: checks
path: /rebalance-check
operations:
- name: check-rebalance
method: POST
- type: http
namespace: oms
baseUri: https://oms-api.schwab.com/v2
authentication:
type: bearer
token: $secrets.oms_api_token
resources:
- name: orders
path: /orders/batch
operations:
- name: create-orders
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
Triggers an Informatica data quality job to validate and cleanse client master data records.
naftiko: '0.5'
info:
label: Informatica Client Data Quality Pipeline
description: Triggers an Informatica data quality job to validate and cleanse client master data records.
tags:
- data-quality
- master-data
- informatica
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-data-quality-job
description: Trigger an Informatica data quality validation job for client records.
inputParameters:
- name: job_name
in: body
type: string
description: Informatica job name.
- name: scope
in: body
type: string
description: Data scope (all_clients, new_accounts, address_updates).
call: informatica.run-job
with:
job_name: '{{job_name}}'
parameters: '{"scope": "{{scope}}"}'
outputParameters:
- name: run_id
type: string
mapping: $.runId
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: informatica
baseUri: https://na1.dm-us.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: jobs
path: /job
operations:
- name: run-job
method: POST
Digitizes paper client documents by processing scans via Azure AI Document Intelligence, extracting data, storing in Amazon S3, indexing in Elasticsearch, and updating the CRM.
naftiko: '0.5'
info:
label: Client Document Digitization Pipeline
description: Digitizes paper client documents by processing scans via Azure AI Document Intelligence, extracting data, storing in Amazon S3, indexing in Elasticsearch, and updating the CRM.
tags:
- document-management
- ocr
- azure-machine-learning
- amazon-s3
- elasticsearch
capability:
exposes:
- type: mcp
namespace: document-digitization
port: 8080
tools:
- name: digitize-document
description: Orchestrate document digitization across Azure AI, S3, Elasticsearch, and Salesforce.
inputParameters:
- name: document_url
in: body
type: string
description: URL of scanned document.
- name: document_type
in: body
type: string
description: Document type (account-app, w9, transfer-form).
- name: account_id
in: body
type: string
description: Associated account ID.
steps:
- name: extract-data
type: call
call: azure-ai.analyze-document
with:
modelId: '{{document_type}}'
urlSource: '{{document_url}}'
- name: store-document
type: call
call: s3.put-object
with:
bucket: schwab-digitized-docs
key: '{{account_id}}/{{document_type}}/{{extract-data.document_id}}.json'
body: '{{extract-data.result}}'
- name: index-document
type: call
call: elasticsearch.index
with:
index: client-documents
body: '{"account_id":"{{account_id}}","type":"{{document_type}}","extracted_data":{{extract-data.fields}},"s3_key":"{{store-document.key}}"}'
- name: update-crm
type: call
call: salesforce.create-content-note
with:
account_id: '{{account_id}}'
title: 'Digitized: {{document_type}}'
content: 'Document processed. Fields extracted: {{extract-data.field_count}}.'
consumes:
- type: http
namespace: azure-ai
baseUri: https://schwab-docai.cognitiveservices.azure.com
authentication:
type: bearer
token: $secrets.azure_ai_key
resources:
- name: documents
path: /formrecognizer/documentModels/{{modelId}}:analyze
inputParameters:
- name: modelId
in: path
operations:
- name: analyze-document
method: POST
- type: http
namespace: s3
baseUri: https://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: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: elasticsearch
baseUri: https://es-cluster.schwab.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: docs
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index
method: POST
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: content
path: /sobjects/ContentNote
operations:
- name: create-content-note
method: POST
Queries Salesforce for a financial advisor's client book of business with account balances and recent activity.
naftiko: '0.5'
info:
label: Salesforce Client Relationship Dashboard
description: Queries Salesforce for a financial advisor's client book of business with account balances and recent activity.
tags:
- crm
- client-management
- salesforce
capability:
exposes:
- type: mcp
namespace: client-crm
port: 8080
tools:
- name: get-advisor-book
description: Retrieve a financial advisor's client portfolio from Salesforce.
inputParameters:
- name: advisor_id
in: body
type: string
description: Advisor Salesforce user ID.
call: salesforce.query
with:
q: SELECT Name, Account_Number__c, Total_Assets__c, Last_Contact_Date__c, Account_Type__c FROM Account WHERE OwnerId = '{{advisor_id}}' AND RecordType.Name = 'Client' ORDER BY Total_Assets__c DESC
outputParameters:
- name: clients
type: array
mapping: $.records
- name: total_clients
type: integer
mapping: $.totalSize
consumes:
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
operations:
- name: query
method: GET
Triggers a refresh of the Power BI client portfolio analytics dashboard used by financial advisors.
naftiko: '0.5'
info:
label: Power BI Client Portfolio Dashboard
description: Triggers a refresh of the Power BI client portfolio analytics dashboard used by financial advisors.
tags:
- analytics
- portfolio
- power-bi
capability:
exposes:
- type: mcp
namespace: portfolio-reporting
port: 8080
tools:
- name: refresh-portfolio-dashboard
description: Trigger a Power BI dataset refresh for the portfolio analytics 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: request_id
type: string
mapping: $.requestId
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: refreshes
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Retrieves application health metrics from New Relic for Schwab's client-facing web and mobile applications.
naftiko: '0.5'
info:
label: New Relic Application Performance Monitor
description: Retrieves application health metrics from New Relic for Schwab's client-facing 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 performance 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
Publishes investment research notes to Confluence and notifies the research distribution team via Teams.
naftiko: '0.5'
info:
label: Confluence Investment Research Publisher
description: Publishes investment research notes to Confluence and notifies the research distribution team via Teams.
tags:
- research
- knowledge-management
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: research-publishing
port: 8080
tools:
- name: publish-research-note
description: Create a research note in Confluence and notify the distribution team.
inputParameters:
- name: space_key
in: body
type: string
description: Confluence space key.
- name: title
in: body
type: string
description: Research note title.
- name: content
in: body
type: string
description: Research content.
- name: sector
in: body
type: string
description: Market sector.
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: research_distribution
text: 'New research published: {{title}} ({{sector}}). View: {{create-page.url}}'
consumes:
- type: http
namespace: confluence
baseUri: https://schwab.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
Retrieves sprint progress from Jira for the Schwab digital platform engineering team.
naftiko: '0.5'
info:
label: Jira Development Sprint Tracker
description: Retrieves sprint progress from Jira for the Schwab digital 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://schwab.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
Processes beneficiary change requests by validating in Salesforce, sending DocuSign forms, updating the account system, and archiving documents in Box.
naftiko: '0.5'
info:
label: Beneficiary Update Processing Pipeline
description: Processes beneficiary change requests by validating in Salesforce, sending DocuSign forms, updating the account system, and archiving documents in Box.
tags:
- account-services
- beneficiary
- salesforce
- docusign
- box
capability:
exposes:
- type: mcp
namespace: beneficiary-updates
port: 8080
tools:
- name: process-beneficiary-update
description: Orchestrate beneficiary update across Salesforce, DocuSign, and Box.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: beneficiary_name
in: body
type: string
description: New beneficiary full name.
- name: relationship
in: body
type: string
description: Relationship to account holder.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: send-form
type: call
call: docusign.create-envelope
with:
templateId: beneficiary-change-form
signerEmail: '{{get-account.email}}'
signerName: '{{get-account.name}}'
- name: archive-request
type: call
call: box.upload-file
with:
folder_id: beneficiary_changes
filename: '{{account_id}}_beneficiary_{{beneficiary_name}}.pdf'
content: 'Beneficiary change: {{beneficiary_name}} ({{relationship}}) for account {{account_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://schwab.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: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id
authentication:
type: bearer
token: $secrets.docusign_access_token
resources:
- name: envelopes
path: /envelopes
operations:
- name: create-envelope
method: POST
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_access_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Checks F5 load balancer pools for the trading gateway infrastructure.
naftiko: '0.5'
info:
label: F5 Networks Trading Gateway Health
description: Checks F5 load balancer pools for the trading gateway infrastructure.
tags:
- infrastructure
- trading
- f5-networks
capability:
exposes:
- type: mcp
namespace: trading-infra
port: 8080
tools:
- name: check-gateway-health
description: Check F5 pool health for trading gateways.
inputParameters:
- name: pool_name
in: body
type: string
description: F5 pool name.
call: f5.get-pool-members
with:
pool_name: '{{pool_name}}'
outputParameters:
- name: available_count
type: integer
mapping: $.available_count
- name: total_count
type: integer
mapping: $.total_count
consumes:
- type: http
namespace: f5
baseUri: https://f5.schwab.com/mgmt/tm/ltm
authentication:
type: basic
username: $secrets.f5_user
password: $secrets.f5_password
resources:
- name: pool-members
path: /pool/{{pool_name}}/members
inputParameters:
- name: pool_name
in: path
operations:
- name: get-pool-members
method: GET
Retrieves fundamental financial data from FactSet for equity research and investment analysis.
naftiko: '0.5'
info:
label: FactSet Research Data Retriever
description: Retrieves fundamental financial data from FactSet for equity research and investment analysis.
tags:
- research
- fundamentals
- factset
capability:
exposes:
- type: mcp
namespace: equity-research
port: 8080
tools:
- name: get-fundamentals
description: Fetch fundamental financial data from FactSet for a given company.
inputParameters:
- name: ticker
in: body
type: string
description: Stock ticker symbol.
- name: metrics
in: body
type: string
description: Comma-separated metrics (e.g., PE_RATIO,EPS,REVENUE,MARKET_CAP).
call: factset.get-fundamentals
with:
ids: '{{ticker}}'
metrics: '{{metrics}}'
outputParameters:
- name: data
type: object
mapping: $.data[0]
- name: company_name
type: string
mapping: $.data[0].companyName
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_api_key
resources:
- name: fundamentals
path: /factset-fundamentals/v2/fundamentals
operations:
- name: get-fundamentals
method: POST
Deploys risk models from Databricks to production by validating model metrics, registering in MLflow, deploying to the serving endpoint, and notifying the risk team via Microsoft Teams.
naftiko: '0.5'
info:
label: Databricks Risk Model Deployment Pipeline
description: Deploys risk models from Databricks to production by validating model metrics, registering in MLflow, deploying to the serving endpoint, and notifying the risk team via Microsoft Teams.
tags:
- machine-learning
- risk-modeling
- databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-deployment
port: 8080
tools:
- name: deploy-risk-model
description: Orchestrate risk model deployment across Databricks, MLflow, and Teams.
inputParameters:
- name: model_name
in: body
type: string
description: Model name in the registry.
- name: model_version
in: body
type: string
description: Model version to deploy.
steps:
- name: validate-metrics
type: call
call: databricks.get-model-metrics
with:
name: '{{model_name}}'
version: '{{model_version}}'
- name: register-model
type: call
call: databricks.transition-model-stage
with:
name: '{{model_name}}'
version: '{{model_version}}'
stage: Production
- name: deploy-endpoint
type: call
call: databricks.create-serving-endpoint
with:
name: '{{model_name}}-serving'
model_name: '{{model_name}}'
model_version: '{{model_version}}'
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: risk-analytics
channel: model-deployments
text: 'Risk model deployed: {{model_name}} v{{model_version}}. Metrics: AUC={{validate-metrics.auc}}, F1={{validate-metrics.f1}}. Endpoint: {{deploy-endpoint.url}}.'
consumes:
- type: http
namespace: databricks
baseUri: https://schwab.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: models
path: /mlflow/model-versions/get
operations:
- name: get-model-metrics
method: GET
- name: transitions
path: /mlflow/model-versions/transition-stage
operations:
- name: transition-model-stage
method: POST
- name: endpoints
path: /serving-endpoints
operations:
- name: create-serving-endpoint
method: POST
- type: http
namespace: msteams
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 crash reports from New Relic for the Schwab mobile trading application, returning crash rate, affected users, and stack traces.
naftiko: '0.5'
info:
label: Schwab Mobile App Crash Reporter
description: Retrieves crash reports from New Relic for the Schwab mobile trading application, returning crash rate, affected users, and stack traces.
tags:
- mobile
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: mobile-monitoring
port: 8080
tools:
- name: get-crash-reports
description: Fetch mobile app crash reports from New Relic.
inputParameters:
- name: app_id
in: body
type: string
description: New Relic mobile application ID.
- name: time_range
in: body
type: string
description: Time range in hours (e.g., 24, 48, 168).
call: newrelic.get-crashes
with:
application_id: '{{app_id}}'
time_range: '{{time_range}}'
outputParameters:
- name: crash_rate
type: number
mapping: $.crash_summary.crash_rate
- name: affected_users
type: integer
mapping: $.crash_summary.unique_users
- name: top_crashes
type: array
mapping: $.crash_summary.top_crashes
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: bearer
token: $secrets.newrelic_api_key
resources:
- name: mobile-crashes
path: /mobile_applications/{{application_id}}/crashes.json
inputParameters:
- name: application_id
in: path
operations:
- name: get-crashes
method: GET
Runs performance analytics queries against the Teradata warehouse for fund historical returns.
naftiko: '0.5'
info:
label: Teradata Historical Performance Query
description: Runs performance analytics queries against the Teradata warehouse for fund historical returns.
tags:
- analytics
- performance
- teradata
capability:
exposes:
- type: mcp
namespace: performance-analytics
port: 8080
tools:
- name: query-fund-performance
description: Query Teradata for fund historical performance.
inputParameters:
- name: fund_ticker
in: body
type: string
description: Fund ticker.
- name: period
in: body
type: string
description: Period.
call: teradata.run-query
with:
query: SELECT ticker, period_return_pct, benchmark_return_pct, alpha, sharpe_ratio FROM fund_performance WHERE ticker='{{fund_ticker}}' AND period='{{period}}'
outputParameters:
- name: results
type: object
mapping: $.results[0]
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.schwab.com/api/query/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /tdrest/systems/schwab_edw/queries
operations:
- name: run-query
method: POST
When an AML alert fires, enriches it with transaction data from Snowflake, creates a ServiceNow compliance case, and notifies the BSA team via Teams.
naftiko: '0.5'
info:
label: Anti-Money Laundering Alert Processor
description: When an AML alert fires, enriches it with transaction data from Snowflake, creates a ServiceNow compliance case, and notifies the BSA team via Teams.
tags:
- compliance
- aml
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-compliance
port: 8080
tools:
- name: process-aml-alert
description: Enrich an AML alert with transaction data and create a compliance case.
inputParameters:
- name: alert_id
in: body
type: string
description: AML alert identifier.
- name: account_number
in: body
type: string
description: Account under review.
- name: alert_type
in: body
type: string
description: Alert type (structuring, rapid_movement, high_risk_geo, unusual_pattern).
steps:
- name: get-transactions
type: call
call: snowflake.run-query
with:
query: SELECT transaction_id, amount, transaction_type, counterparty, country, transaction_date FROM transactions WHERE account_number='{{account_number}}' AND transaction_date >= DATEADD(day, -90, CURRENT_DATE()) ORDER BY transaction_date DESC LIMIT 100
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'AML Alert: {{alert_type}} - Account {{account_number}}'
category: aml_compliance
urgency: high
description: 'AML alert {{alert_id}} for account {{account_number}}. Type: {{alert_type}}. Recent transaction count: {{get-transactions.row_count}}.'
- name: notify-bsa-team
type: call
call: msteams.send-message
with:
channel_id: bsa_compliance
text: 'AML ALERT [{{alert_type}}]: Account {{account_number}}. Alert: {{alert_id}}. Case: {{create-case.number}}. Review required within 24 hours.'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.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://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 indices for trade execution logs by account, symbol, or time range for compliance audit trails.
naftiko: '0.5'
info:
label: Elasticsearch Trade Log Search
description: Searches Elasticsearch indices for trade execution logs by account, symbol, or time range for compliance audit trails.
tags:
- compliance
- logging
- elasticsearch
capability:
exposes:
- type: mcp
namespace: trade-logs
port: 8080
tools:
- name: search-trade-logs
description: Search trade execution logs in Elasticsearch.
inputParameters:
- name: account_id
in: body
type: string
description: Client account identifier.
- name: symbol
in: body
type: string
description: Security symbol to filter by.
- name: date_from
in: body
type: string
description: Start date in YYYY-MM-DD format.
call: elasticsearch.search
with:
index: trade-executions-*
query: '{"bool":{"must":[{"term":{"account_id":"{{account_id}}"}},{"term":{"symbol":"{{symbol}}"}},{"range":{"timestamp":{"gte":"{{date_from}}"}}}]}}'
outputParameters:
- name: trades
type: array
mapping: $.hits.hits
- name: total
type: integer
mapping: $.hits.total.value
consumes:
- type: http
namespace: elasticsearch
baseUri: https://es-cluster.schwab.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
Monitors Cloudflare DDoS protection status and traffic analytics for Schwab's public-facing web properties.
naftiko: '0.5'
info:
label: Cloudflare DDoS Protection Monitor
description: Monitors Cloudflare DDoS protection status and traffic analytics for Schwab's public-facing web properties.
tags:
- security
- ddos
- cloudflare
capability:
exposes:
- type: mcp
namespace: ddos-monitoring
port: 8080
tools:
- name: get-traffic-analytics
description: Retrieve Cloudflare traffic analytics and DDoS event data.
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_total
type: integer
mapping: $.result.totals.requests.all
- name: threats_total
type: integer
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: analytics
path: /zones/{{zone_id}}/analytics/dashboard
inputParameters:
- name: zone_id
in: path
operations:
- name: get-analytics
method: GET
Retrieves an IT incident from ServiceNow by number and returns current state, assignee, and resolution details.
naftiko: '0.5'
info:
label: ServiceNow IT Incident Lookup
description: Retrieves an IT incident from ServiceNow by number and returns current state, assignee, 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 by number.
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://schwab.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
Checks secret rotation status and lease expiration in HashiCorp Vault for Schwab trading platform credentials.
naftiko: '0.5'
info:
label: HashiCorp Vault Secret Rotation Status
description: Checks secret rotation status and lease expiration in HashiCorp Vault for Schwab trading platform 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 (e.g., secret/data/trading/db-creds).
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
- name: deletion_time
type: string
mapping: $.data.versions.*.deletion_time
consumes:
- type: http
namespace: vault
baseUri: https://vault.schwab.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
On new client account creation in Salesforce, opens a ServiceNow provisioning ticket, creates a SharePoint document folder, and notifies the relationship manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Client Account Onboarding Orchestrator
description: On new client account creation in Salesforce, opens a ServiceNow provisioning ticket, creates a SharePoint document folder, and notifies the relationship manager via Microsoft Teams.
tags:
- client-services
- onboarding
- salesforce
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: trigger-account-onboarding
description: Orchestrate new client account onboarding across Salesforce, ServiceNow, SharePoint, and Teams.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID.
- name: client_name
in: body
type: string
description: Client full name.
- name: account_type
in: body
type: string
description: Account type (individual, joint, ira, trust, corporate).
- name: advisor_email
in: body
type: string
description: Financial advisor email.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: create-provisioning-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New account setup: {{client_name}} ({{account_type}})'
category: account_provisioning
assigned_group: Client_Operations
description: 'Provision new {{account_type}} account for {{client_name}}. SF Account: {{account_id}}.'
- name: provision-folder
type: call
call: sharepoint.create-folder
with:
site_id: client_documents
folder_path: Accounts/{{client_name}}_{{account_id}}
- name: notify-advisor
type: call
call: msteams.send-message
with:
recipient_upn: '{{advisor_email}}'
text: 'New account opened: {{client_name}} ({{account_type}}). Provisioning ticket: {{create-provisioning-ticket.number}}. Documents: {{provision-folder.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://schwab.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: servicenow
baseUri: https://schwab.service-now.com/api/now
authentication:
type: 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
Runs a portfolio risk analytics model in Databricks calculating VaR, stress tests, and correlation analysis, then stores results in Snowflake.
naftiko: '0.5'
info:
label: Databricks Risk Analytics Model
description: Runs a portfolio risk analytics model in Databricks calculating VaR, stress tests, and correlation analysis, then stores results in Snowflake.
tags:
- risk-management
- analytics
- databricks
- snowflake
capability:
exposes:
- type: mcp
namespace: risk-analytics
port: 8080
tools:
- name: run-risk-model
description: Execute the Databricks risk model and store results in Snowflake.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Portfolio identifier.
- name: model_type
in: body
type: string
description: Risk model type (var_historical, var_parametric, monte_carlo, stress_test).
- name: confidence_level
in: body
type: number
description: Confidence level (e.g., 0.95, 0.99).
steps:
- name: run-notebook
type: call
call: databricks.run-notebook
with:
notebook_path: /Shared/risk_models/{{model_type}}
parameters: '{"portfolio_id": "{{portfolio_id}}", "confidence": {{confidence_level}}}'
- name: load-results
type: call
call: snowflake.run-query
with:
query: CALL load_risk_results('{{portfolio_id}}', '{{model_type}}')
consumes:
- type: http
namespace: databricks
baseUri: https://schwab.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://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Queries Datadog for real-time health metrics of the trading platform including order latency and throughput.
naftiko: '0.5'
info:
label: Datadog Trading Platform Monitor
description: Queries Datadog for real-time health metrics of the trading platform including order latency and throughput.
tags:
- devops
- monitoring
- trading
- datadog
capability:
exposes:
- type: mcp
namespace: trading-monitoring
port: 8080
tools:
- name: check-trading-health
description: Fetch trading platform health metrics from Datadog.
inputParameters:
- name: service_name
in: body
type: string
description: Trading service name in Datadog.
call: datadog.query-metrics
with:
query: avg:trading.order_latency_ms{service:{{service_name}}}.rollup(avg, 60)
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
Queries Dynatrace for performance problems affecting the order execution path to detect latency spikes.
naftiko: '0.5'
info:
label: Dynatrace Trading Latency Detector
description: Queries Dynatrace for performance problems affecting the order execution path to detect latency spikes.
tags:
- monitoring
- trading
- dynatrace
capability:
exposes:
- type: mcp
namespace: trading-performance
port: 8080
tools:
- name: get-latency-problems
description: Retrieve latency-related problems from Dynatrace for trading systems.
inputParameters:
- name: time_range
in: body
type: string
description: Time range.
call: dynatrace.get-problems
with:
relativeTime: '{{time_range}}'
status: OPEN
impactLevel: SERVICE
outputParameters:
- name: problems
type: array
mapping: $.result
- name: total_count
type: integer
mapping: $.totalCount
consumes:
- type: http
namespace: dynatrace
baseUri: https://schwab.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems
operations:
- name: get-problems
method: GET
Checks overdue compliance training in Pluralsight, retrieves employee data from Workday, sends reminder emails via Microsoft Outlook, and logs escalations in ServiceNow.
naftiko: '0.5'
info:
label: Compliance Training Deadline Enforcer
description: Checks overdue compliance training in Pluralsight, retrieves employee data from Workday, sends reminder emails via Microsoft Outlook, and logs escalations in ServiceNow.
tags:
- compliance
- training
- pluralsight
- workday
- microsoft-outlook
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance-training
port: 8080
tools:
- name: enforce-training-deadline
description: Orchestrate compliance training deadline enforcement across Pluralsight, Workday, Outlook, and ServiceNow.
inputParameters:
- name: training_id
in: body
type: string
description: Compliance training course ID.
- name: deadline_date
in: body
type: string
description: Deadline date in YYYY-MM-DD.
steps:
- name: get-overdue
type: call
call: pluralsight.get-overdue-users
with:
course_id: '{{training_id}}'
deadline: '{{deadline_date}}'
- name: get-managers
type: call
call: workday.get-managers
with:
employee_ids: '{{get-overdue.user_ids}}'
- name: send-reminders
type: call
call: outlook.send-bulk-email
with:
recipients: '{{get-overdue.emails}}'
subject: 'URGENT: Compliance Training Past Due - {{training_id}}'
body: Your required compliance training is past the {{deadline_date}} deadline. Please complete immediately.
- name: create-escalation
type: call
call: servicenow.create-incident
with:
short_description: 'Compliance training overdue: {{training_id}} - {{get-overdue.count}} employees'
category: compliance
assigned_group: Compliance_Operations
description: '{{get-overdue.count}} employees overdue. Managers notified: {{get-managers.manager_names}}.'
consumes:
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/api/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: reports
path: /reports/course-completion
operations:
- name: get-overdue-users
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/managers
operations:
- name: get-managers
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/compliance@schwab.com/sendMail
operations:
- name: send-bulk-email
method: POST
- type: http
namespace: servicenow
baseUri: https://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Coordinates new branch opening by verifying network setup in SolarWinds, confirming staffing in Workday, provisioning equipment via ServiceNow, and posting the opening on Google Maps.
naftiko: '0.5'
info:
label: Branch Opening Readiness Orchestrator
description: Coordinates new branch opening by verifying network setup in SolarWinds, confirming staffing in Workday, provisioning equipment via ServiceNow, and posting the opening on Google Maps.
tags:
- branch-operations
- opening
- solarwinds
- workday
- servicenow
- google-maps
capability:
exposes:
- type: mcp
namespace: branch-opening
port: 8080
tools:
- name: check-branch-readiness
description: Orchestrate branch opening readiness checks across SolarWinds, Workday, ServiceNow, and Google Maps.
inputParameters:
- name: branch_id
in: body
type: string
description: New branch identifier.
- name: opening_date
in: body
type: string
description: Planned opening date.
steps:
- name: verify-network
type: call
call: solarwinds.check-site
with:
site_id: '{{branch_id}}'
- name: verify-staffing
type: call
call: workday.get-site-workers
with:
site_id: '{{branch_id}}'
- name: check-equipment
type: call
call: servicenow.get-assets
with:
location: '{{branch_id}}'
status: deployed
- name: update-listing
type: call
call: googlemaps.update-business
with:
branch_id: '{{branch_id}}'
status: open
opening_date: '{{opening_date}}'
consumes:
- type: http
namespace: solarwinds
baseUri: https://solarwinds.schwab.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: workers
path: /workers
operations:
- name: get-site-workers
method: GET
- type: http
namespace: servicenow
baseUri: https://schwab.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: googlemaps
baseUri: https://mybusinessbusinessinformation.googleapis.com/v1
authentication:
type: bearer
token: $secrets.google_business_token
resources:
- name: locations
path: /locations/{{branch_id}}
inputParameters:
- name: branch_id
in: path
operations:
- name: update-business
method: PATCH
Compiles quarterly earnings data from Snowflake, generates visualizations in Tableau, creates the investor relations deck in Google Slides, and publishes to the investor portal via SharePoint.
naftiko: '0.5'
info:
label: Quarterly Earnings Report Orchestrator
description: Compiles quarterly earnings data from Snowflake, generates visualizations in Tableau, creates the investor relations deck in Google Slides, and publishes to the investor portal via SharePoint.
tags:
- investor-relations
- earnings
- snowflake
- tableau
- sharepoint
capability:
exposes:
- type: mcp
namespace: earnings-reporting
port: 8080
tools:
- name: compile-earnings-report
description: Orchestrate quarterly earnings report across Snowflake, Tableau, and SharePoint.
inputParameters:
- name: quarter
in: body
type: string
description: Quarter identifier (e.g., 2026-Q1).
steps:
- name: get-financials
type: call
call: snowflake.query-financials
with:
statement: SELECT * FROM QUARTERLY_FINANCIALS WHERE quarter = '{{quarter}}'
warehouse: SCHWAB_FINANCE_WH
- name: refresh-dashboards
type: call
call: tableau.refresh-workbook
with:
workbook_id: quarterly-earnings
datasource: '{{get-financials.datasource_id}}'
- name: generate-deck
type: call
call: googleslides.create-presentation
with:
template_id: earnings-deck-template
data: '{{get-financials.data}}'
title: Schwab Q{{quarter}} Earnings
- name: publish-portal
type: call
call: sharepoint.upload-file
with:
site_id: investor-relations
path: Earnings/{{quarter}}/earnings-deck.pptx
content: '{{generate-deck.file}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-financials
method: POST
- type: http
namespace: tableau
baseUri: https://tableau.schwab.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
- type: http
namespace: googleslides
baseUri: https://slides.googleapis.com/v1
authentication:
type: bearer
token: $secrets.google_slides_token
resources:
- name: presentations
path: /presentations
operations:
- name: create-presentation
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:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: upload-file
method: PUT
On AML alert trigger, retrieves transaction history from Teradata, pulls client KYC data from Salesforce, generates a SAR filing, and logs the case in ServiceNow.
naftiko: '0.5'
info:
label: Suspicious Activity Report Pipeline
description: On AML alert trigger, retrieves transaction history from Teradata, pulls client KYC data from Salesforce, generates a SAR filing, and logs the case in ServiceNow.
tags:
- compliance
- aml
- teradata
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: aml-compliance
port: 8080
tools:
- name: process-sar
description: Orchestrate suspicious activity report generation across Teradata, Salesforce, and ServiceNow.
inputParameters:
- name: alert_id
in: body
type: string
description: AML alert identifier.
- name: account_id
in: body
type: string
description: Client account ID.
steps:
- name: get-transactions
type: call
call: teradata.query-transactions
with:
query: SELECT * FROM TRANSACTION_HISTORY WHERE account_id = '{{account_id}}' AND txn_date >= CURRENT_DATE - 90
- name: get-kyc
type: call
call: salesforce.get-kyc
with:
account_id: '{{account_id}}'
- name: generate-sar
type: call
call: compliance.create-sar
with:
alert_id: '{{alert_id}}'
account_id: '{{account_id}}'
transaction_summary: '{{get-transactions.summary}}'
kyc_data: '{{get-kyc.data}}'
- name: log-case
type: call
call: servicenow.create-incident
with:
short_description: 'SAR filed: Alert {{alert_id}} - Account {{account_id}}'
category: aml_compliance
assigned_group: BSA_Compliance
description: 'SAR reference: {{generate-sar.sar_id}}. Alert: {{alert_id}}. Account: {{account_id}}.'
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: queries
path: /queries
operations:
- name: query-transactions
method: POST
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: kyc
path: /sobjects/KYC_Profile__c/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-kyc
method: GET
- type: http
namespace: compliance
baseUri: https://compliance-api.schwab.com/v1
authentication:
type: bearer
token: $secrets.compliance_api_token
resources:
- name: sar
path: /sar
operations:
- name: create-sar
method: POST
- type: http
namespace: servicenow
baseUri: https://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Checks user authentication status and MFA enrollment in Okta for Schwab employee and advisor access management.
naftiko: '0.5'
info:
label: Okta User Authentication Status
description: Checks user authentication status and MFA enrollment in Okta for Schwab employee and advisor access management.
tags:
- identity
- authentication
- okta
capability:
exposes:
- type: mcp
namespace: identity-management
port: 8080
tools:
- name: get-user-auth-status
description: Check a user's authentication status and MFA enrollment in Okta.
inputParameters:
- name: user_email
in: body
type: string
description: User email address.
call: okta.get-user
with:
login: '{{user_email}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: mfa_enrolled
type: boolean
mapping: $.credentials.provider.type
- name: last_login
type: string
mapping: $.lastLogin
consumes:
- type: http
namespace: okta
baseUri: https://schwab.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
Runs an Alteryx workflow to segment clients by investment behavior, risk tolerance, and asset allocation for targeted advisory services.
naftiko: '0.5'
info:
label: Alteryx Client Segmentation Workflow
description: Runs an Alteryx workflow to segment clients by investment behavior, risk tolerance, and asset allocation for targeted advisory services.
tags:
- analytics
- client-segmentation
- alteryx
- snowflake
capability:
exposes:
- type: mcp
namespace: client-segmentation
port: 8080
tools:
- name: run-segmentation
description: Execute the Alteryx client segmentation workflow and load results to Snowflake.
inputParameters:
- name: segment_type
in: body
type: string
description: Segmentation type (risk_profile, asset_allocation, lifecycle, behavioral).
steps:
- name: trigger-workflow
type: call
call: alteryx.run-workflow
with:
workflow_id: client_segmentation_v3
parameters: '{"type": "{{segment_type}}"}'
- name: load-results
type: call
call: snowflake.run-query
with:
query: CALL load_segmentation_results('{{segment_type}}')
consumes:
- type: http
namespace: alteryx
baseUri: https://alteryx.schwab.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://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Retrieves real-time market data from Bloomberg Enterprise Data for equity, fixed income, and options pricing.
naftiko: '0.5'
info:
label: Bloomberg Market Data Feed
description: Retrieves real-time market data from Bloomberg Enterprise Data for equity, fixed income, and options pricing.
tags:
- market-data
- trading
- bloomberg
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-market-data
description: Fetch real-time market data from Bloomberg for a security.
inputParameters:
- name: security_id
in: body
type: string
description: Bloomberg security identifier (e.g., AAPL US Equity).
- name: fields
in: body
type: string
description: Comma-separated Bloomberg fields (e.g., PX_LAST,PX_BID,PX_ASK,VOLUME).
call: bloomberg.get-data
with:
securities: '{{security_id}}'
fields: '{{fields}}'
outputParameters:
- name: last_price
type: number
mapping: $.data[0].PX_LAST
- name: bid
type: number
mapping: $.data[0].PX_BID
- name: ask
type: number
mapping: $.data[0].PX_ASK
- name: volume
type: integer
mapping: $.data[0].VOLUME
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: data
path: /snapshots
operations:
- name: get-data
method: POST
Queries the Redis session cache to retrieve active client session data for the Schwab trading platform.
naftiko: '0.5'
info:
label: Redis Session Cache Lookup
description: Queries the Redis session cache to retrieve active client session data for the Schwab trading platform.
tags:
- caching
- session-management
- redis
capability:
exposes:
- type: mcp
namespace: session-cache
port: 8080
tools:
- name: get-session
description: Look up an active client session from Redis.
inputParameters:
- name: session_id
in: body
type: string
description: Client session identifier.
call: redis.get-key
with:
key: session:{{session_id}}
outputParameters:
- name: client_id
type: string
mapping: $.client_id
- name: last_activity
type: string
mapping: $.last_activity
- name: session_ttl
type: integer
mapping: $.ttl
consumes:
- type: http
namespace: redis
baseUri: https://schwab-redis.internal.schwab.com/api/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
Calculates advisor compensation by pulling AUM data from Snowflake, trade commissions from the OMS, computing payouts via ADP, and generating statements in Google Sheets.
naftiko: '0.5'
info:
label: Advisor Compensation Calculation Pipeline
description: Calculates advisor compensation by pulling AUM data from Snowflake, trade commissions from the OMS, computing payouts via ADP, and generating statements in Google Sheets.
tags:
- compensation
- payroll
- snowflake
- adp
- google-sheets
capability:
exposes:
- type: mcp
namespace: advisor-compensation
port: 8080
tools:
- name: calculate-compensation
description: Orchestrate advisor compensation calculation across Snowflake, OMS, ADP, and Google Sheets.
inputParameters:
- name: advisor_id
in: body
type: string
description: Advisor employee ID.
- name: pay_period
in: body
type: string
description: Pay period (e.g., 2026-03).
steps:
- name: get-aum
type: call
call: snowflake.query-aum
with:
statement: SELECT SUM(market_value) as total_aum FROM ADVISOR_BOOK WHERE advisor_id = '{{advisor_id}}'
warehouse: SCHWAB_COMPENSATION_WH
- name: get-commissions
type: call
call: oms.get-commissions
with:
advisor_id: '{{advisor_id}}'
period: '{{pay_period}}'
- name: process-payout
type: call
call: adp.submit-compensation
with:
employee_id: '{{advisor_id}}'
base_aum_fee: '{{get-aum.total_aum}}'
commissions: '{{get-commissions.total}}'
period: '{{pay_period}}'
- name: generate-statement
type: call
call: googlesheets.update-sheet
with:
spreadsheet_id: advisor-compensation-tracker
range: '{{pay_period}}!A:F'
values: '{{process-payout.line_items}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-aum
method: POST
- type: http
namespace: oms
baseUri: https://oms-api.schwab.com/v2
authentication:
type: bearer
token: $secrets.oms_api_token
resources:
- name: commissions
path: /commissions
operations:
- name: get-commissions
method: GET
- type: http
namespace: adp
baseUri: https://api.adp.com/hr/v2
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: compensation
path: /workers/{{employee_id}}/compensation
inputParameters:
- name: employee_id
in: path
operations:
- name: submit-compensation
method: POST
- 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
Queries MongoDB for client communication preferences, notification settings, and personalization configuration.
naftiko: '0.5'
info:
label: MongoDB Client Preferences Lookup
description: Queries MongoDB for client communication preferences, notification settings, and personalization configuration.
tags:
- client-data
- preferences
- mongodb
capability:
exposes:
- type: mcp
namespace: client-preferences
port: 8080
tools:
- name: get-client-preferences
description: Look up client preferences and notification settings from MongoDB.
inputParameters:
- name: client_id
in: body
type: string
description: Schwab client identifier.
call: mongodb.find-one
with:
collection: client_preferences
filter: '{"client_id": "{{client_id}}"}'
outputParameters:
- name: notification_channels
type: array
mapping: $.notification_channels
- name: language
type: string
mapping: $.language_preference
- name: paperless
type: boolean
mapping: $.paperless_enrolled
consumes:
- type: http
namespace: mongodb
baseUri: https://data.mongodb-api.schwab.com/app/data-schwab/endpoint/data/v1
authentication:
type: bearer
token: $secrets.mongodb_api_key
resources:
- name: find
path: /action/findOne
operations:
- name: find-one
method: POST
Retrieves pending expense reports from SAP Concur for financial advisor travel and client event expenses.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Processor
description: Retrieves pending expense reports from SAP Concur for financial advisor travel and client event expenses.
tags:
- finance
- expenses
- sap-concur
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: get-pending-expenses
description: Fetch pending expense reports from SAP Concur.
inputParameters:
- name: approver_id
in: body
type: string
description: Approver user ID.
call: concur.get-reports
with:
approverLoginId: '{{approver_id}}'
status: SUBMITTED
outputParameters:
- name: reports
type: array
mapping: $.Items
- name: total_amount
type: number
mapping: $.TotalAmount
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
operations:
- name: get-reports
method: GET
Retrieves active CloudWatch alarms for Schwab trading infrastructure including API gateways, Lambda functions, and ECS services.
naftiko: '0.5'
info:
label: AWS CloudWatch Trading Alarms
description: Retrieves active CloudWatch alarms for Schwab trading 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 trading infrastructure.
inputParameters:
- name: alarm_prefix
in: body
type: string
description: Alarm name prefix filter (e.g., trading-, gateway-).
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
Retrieves client portfolio holdings from Snowflake, calculates asset allocation percentages, and returns a summary with sector exposure.
naftiko: '0.5'
info:
label: Portfolio Holdings Analyzer
description: Retrieves client portfolio holdings from Snowflake, calculates asset allocation percentages, and returns a summary with sector exposure.
tags:
- portfolio
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: portfolio-analytics
port: 8080
tools:
- name: analyze-portfolio
description: Fetch client portfolio holdings from Snowflake and return asset allocation and sector exposure summary.
inputParameters:
- name: account_number
in: body
type: string
description: Schwab account number.
- name: as_of_date
in: body
type: string
description: Date for the snapshot in YYYY-MM-DD.
call: snowflake.run-query
with:
query: SELECT h.symbol, h.quantity, h.market_value, s.sector, s.asset_class, ROUND(h.market_value / SUM(h.market_value) OVER() * 100, 2) as allocation_pct FROM portfolio_holdings h JOIN security_master s ON h.symbol = s.symbol WHERE h.account_number='{{account_number}}' AND h.as_of_date='{{as_of_date}}' ORDER BY h.market_value DESC
outputParameters:
- name: holdings
type: array
mapping: $.data
- name: total_positions
type: integer
mapping: $.resultSetMetaData.numRows
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Generates tax documents (1099-DIV, 1099-INT, 1099-B) for client accounts using tax data from Snowflake.
naftiko: '0.5'
info:
label: Intuit Tax Document Generator
description: Generates tax documents (1099-DIV, 1099-INT, 1099-B) for client accounts using tax data from Snowflake.
tags:
- tax
- reporting
- snowflake
capability:
exposes:
- type: mcp
namespace: tax-reporting
port: 8080
tools:
- name: generate-tax-docs
description: Generate tax reporting documents from Snowflake data.
inputParameters:
- name: account_number
in: body
type: string
description: Client account number.
- name: tax_year
in: body
type: string
description: Tax year.
- name: form_type
in: body
type: string
description: Form type (1099-DIV, 1099-INT, 1099-B).
call: snowflake.run-query
with:
query: CALL generate_tax_form('{{account_number}}', '{{tax_year}}', '{{form_type}}')
outputParameters:
- name: form_data
type: object
mapping: $.data[0]
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
On new hire in Workday, provisions IT access via ServiceNow, creates a SharePoint folder, and sends a Teams welcome.
naftiko: '0.5'
info:
label: Workday Employee Onboarding Pipeline
description: On new hire in Workday, provisions IT access via ServiceNow, creates a SharePoint folder, and sends a Teams welcome.
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: Orchestrate employee onboarding across Workday, ServiceNow, and Teams.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: Workday worker ID.
- name: start_date
in: body
type: string
description: Start date.
- name: department
in: body
type: string
description: Department.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: create-it-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'IT onboarding: {{get-employee.full_name}}'
category: onboarding
assigned_group: IT_Provisioning
description: Provision workstation, trading system access, and compliance training for {{get-employee.full_name}} starting {{start_date}} in {{department}}.
- name: send-welcome
type: call
call: msteams.send-message
with:
channel_id: '{{department}}_team'
text: 'Welcome to Schwab, {{get-employee.first_name}}! IT ticket: {{create-it-ticket.number}}.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Processes dividend reinvestment by fetching dividend data from Bloomberg, checking DRIP enrollment in the account system, executing reinvestment trades via OMS, and logging in Snowflake.
naftiko: '0.5'
info:
label: Dividend Reinvestment Processing Pipeline
description: Processes dividend reinvestment by fetching dividend data from Bloomberg, checking DRIP enrollment in the account system, executing reinvestment trades via OMS, and logging in Snowflake.
tags:
- dividends
- reinvestment
- bloomberg
- trading
- snowflake
capability:
exposes:
- type: mcp
namespace: drip-processing
port: 8080
tools:
- name: process-drip
description: Orchestrate dividend reinvestment across Bloomberg, account system, OMS, and Snowflake.
inputParameters:
- name: security_id
in: body
type: string
description: Security identifier.
- name: ex_date
in: body
type: string
description: Ex-dividend date.
steps:
- name: get-dividend
type: call
call: bloomberg.get-dividend
with:
security_id: '{{security_id}}'
ex_date: '{{ex_date}}'
- name: get-drip-accounts
type: call
call: accounts.get-drip-enrolled
with:
security_id: '{{security_id}}'
- name: execute-reinvestment
type: call
call: oms.create-drip-orders
with:
security_id: '{{security_id}}'
dividend_per_share: '{{get-dividend.amount}}'
accounts: '{{get-drip-accounts.data}}'
- name: log-processing
type: call
call: snowflake.insert-drip-log
with:
statement: INSERT INTO DRIP_PROCESSING_LOG VALUES ('{{security_id}}', '{{ex_date}}', {{get-drip-accounts.count}}, {{execute-reinvestment.total_shares}}, CURRENT_TIMESTAMP)
warehouse: SCHWAB_OPERATIONS_WH
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: dividends
path: /dividends
operations:
- name: get-dividend
method: GET
- type: http
namespace: accounts
baseUri: https://accounts-api.schwab.com/v2
authentication:
type: bearer
token: $secrets.accounts_api_token
resources:
- name: drip
path: /drip-enrollment
operations:
- name: get-drip-enrolled
method: GET
- type: http
namespace: oms
baseUri: https://oms-api.schwab.com/v2
authentication:
type: bearer
token: $secrets.oms_api_token
resources:
- name: drip-orders
path: /orders/drip
operations:
- name: create-drip-orders
method: POST
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-drip-log
method: POST
Retrieves payroll summary data from ADP for financial operations and compensation analysis.
naftiko: '0.5'
info:
label: ADP Payroll Data Retriever
description: Retrieves payroll summary data from ADP for financial operations and compensation analysis.
tags:
- hr
- payroll
- adp
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll-summary
description: Fetch payroll summary data from ADP.
inputParameters:
- name: pay_period
in: body
type: string
description: Pay period identifier.
- name: department
in: body
type: string
description: Department filter.
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 margin threshold breach detection, retrieves account details from Salesforce, generates a margin call notice, sends SMS via Twilio, and creates a ServiceNow case.
naftiko: '0.5'
info:
label: Margin Call Alert Pipeline
description: On margin threshold breach detection, retrieves account details from Salesforce, generates a margin call notice, sends SMS via Twilio, and creates a ServiceNow case.
tags:
- risk-management
- margin
- salesforce
- twilio
- servicenow
capability:
exposes:
- type: mcp
namespace: margin-alerts
port: 8080
tools:
- name: process-margin-call
description: Orchestrate margin call notification across Salesforce, Twilio, and ServiceNow.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: margin_deficit
in: body
type: number
description: Margin deficit amount.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: send-sms
type: call
call: twilio.send-message
with:
To: '{{get-account.phone}}'
Body: 'Schwab Margin Notice: Account {{account_id}} has a margin deficit of ${{margin_deficit}}. Please deposit funds or reduce positions by market close.'
From: '+18005407000'
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'Margin call: {{account_id}} - deficit ${{margin_deficit}}'
category: margin_operations
assigned_group: Margin_Operations
description: 'Margin call for account {{account_id}}. Deficit: ${{margin_deficit}}. Client: {{get-account.name}}. SMS sent: {{send-sms.message_sid}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://schwab.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: 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://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Logs client-advisor email communications through Microsoft Graph for compliance recordkeeping.
naftiko: '0.5'
info:
label: Microsoft Graph Client Communication Logger
description: Logs client-advisor email communications through Microsoft Graph for compliance recordkeeping.
tags:
- compliance
- communications
- microsoft-graph
capability:
exposes:
- type: mcp
namespace: comms-logging
port: 8080
tools:
- name: log-client-email
description: Retrieve and log a client-advisor email communication for compliance.
inputParameters:
- name: user_upn
in: body
type: string
description: Advisor user principal name.
- name: message_id
in: body
type: string
description: Email message ID.
call: msgraph.get-message
with:
user_upn: '{{user_upn}}'
message_id: '{{message_id}}'
outputParameters:
- name: subject
type: string
mapping: $.subject
- name: from
type: string
mapping: $.from.emailAddress.address
- name: received_date
type: string
mapping: $.receivedDateTime
consumes:
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{user_upn}}/messages/{{message_id}}
inputParameters:
- name: user_upn
in: path
- name: message_id
in: path
operations:
- name: get-message
method: GET
Validates a trade order against compliance rules in Snowflake, checking for restricted securities, concentration limits, and suitability requirements before execution.
naftiko: '0.5'
info:
label: Trade Execution Compliance Checker
description: Validates a trade order against compliance rules in Snowflake, checking for restricted securities, concentration limits, and suitability requirements before execution.
tags:
- compliance
- trading
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: check-trade-compliance
description: Validate a trade against compliance rules and create a ServiceNow exception if violations are found.
inputParameters:
- name: account_number
in: body
type: string
description: Client account number.
- name: symbol
in: body
type: string
description: Security symbol.
- name: side
in: body
type: string
description: Trade side (BUY, SELL).
- name: quantity
in: body
type: integer
description: Order quantity.
- name: order_type
in: body
type: string
description: Order type (MARKET, LIMIT).
steps:
- name: check-rules
type: call
call: snowflake.run-query
with:
query: CALL check_trade_compliance('{{account_number}}', '{{symbol}}', '{{side}}', {{quantity}}, '{{order_type}}')
- name: create-exception
type: call
call: servicenow.create-incident
with:
short_description: 'Trade compliance exception: {{symbol}} {{side}} {{quantity}} for account {{account_number}}'
category: compliance
urgency: high
description: 'Trade compliance check results: {{check-rules.results}}. Account: {{account_number}}, Symbol: {{symbol}}, Side: {{side}}, Qty: {{quantity}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.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://schwab.service-now.com/api/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 annual tax documents by querying Teradata for transaction history, computing gains via Intuit tax engine, storing in Amazon S3, and notifying the client via email.
naftiko: '0.5'
info:
label: Client Tax Document Generation Pipeline
description: Generates annual tax documents by querying Teradata for transaction history, computing gains via Intuit tax engine, storing in Amazon S3, and notifying the client via email.
tags:
- tax
- document-generation
- teradata
- intuit
- amazon-s3
capability:
exposes:
- type: mcp
namespace: tax-documents
port: 8080
tools:
- name: generate-tax-docs
description: Orchestrate tax document generation across Teradata, Intuit, S3, and email.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: tax_year
in: body
type: integer
description: Tax year.
steps:
- name: get-transactions
type: call
call: teradata.query-tax-data
with:
query: SELECT * FROM TAX_LOTS WHERE account_id = '{{account_id}}' AND tax_year = {{tax_year}}
- name: compute-gains
type: call
call: intuit.calculate-gains
with:
account_id: '{{account_id}}'
transactions: '{{get-transactions.data}}'
tax_year: '{{tax_year}}'
- name: store-document
type: call
call: s3.put-object
with:
bucket: schwab-tax-documents
key: '{{tax_year}}/{{account_id}}/1099-B.pdf'
body: '{{compute-gains.document}}'
- name: notify-client
type: call
call: ses.send-email
with:
to: '{{compute-gains.client_email}}'
subject: Your {{tax_year}} Schwab Tax Documents Are Ready
body: Your 1099-B tax document is now available in your Schwab account document center.
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: queries
path: /queries
operations:
- name: query-tax-data
method: POST
- type: http
namespace: intuit
baseUri: https://tax-engine.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.intuit_api_token
resources:
- name: calculations
path: /gains-calculation
operations:
- name: calculate-gains
method: POST
- type: http
namespace: s3
baseUri: https://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: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
method: PUT
- 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
Generates a trusted ticket for embedding Tableau investment analytics dashboards in the advisor portal.
naftiko: '0.5'
info:
label: Tableau Investment Analytics Embed
description: Generates a trusted ticket for embedding Tableau investment analytics dashboards in the advisor portal.
tags:
- analytics
- visualization
- tableau
capability:
exposes:
- type: mcp
namespace: investment-analytics
port: 8080
tools:
- name: get-analytics-dashboard
description: Generate a Tableau trusted ticket for investment analytics.
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.schwab.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
Matches fixed income trades by comparing Calypso entries with counterparty confirmations via Tradeweb, reconciling in Snowflake, and escalating breaks via Jira.
naftiko: '0.5'
info:
label: Fixed Income Trade Matching Orchestrator
description: Matches fixed income trades by comparing Calypso entries with counterparty confirmations via Tradeweb, reconciling in Snowflake, and escalating breaks via Jira.
tags:
- fixed-income
- trade-matching
- calypso
- tradeweb
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: fi-matching
port: 8080
tools:
- name: match-fi-trades
description: Orchestrate fixed income trade matching across Calypso, Tradeweb, Snowflake, and Jira.
inputParameters:
- name: trade_date
in: body
type: string
description: Trade date in YYYY-MM-DD.
- name: asset_class
in: body
type: string
description: Asset class (corporate, treasury, muni, agency).
steps:
- name: get-calypso-trades
type: call
call: calypso.get-fi-trades
with:
trade_date: '{{trade_date}}'
asset_class: '{{asset_class}}'
- name: get-counterparty-confirms
type: call
call: tradeweb.get-confirmations
with:
date: '{{trade_date}}'
product: '{{asset_class}}'
- name: run-matching
type: call
call: snowflake.execute-matching
with:
statement: CALL FI_TRADE_MATCH('{{trade_date}}', '{{asset_class}}')
warehouse: SCHWAB_OPERATIONS_WH
- name: escalate-breaks
type: call
call: jira.create-issue
with:
project: TRADEOPS
summary: 'FI trade breaks: {{trade_date}} {{asset_class}} - {{run-matching.break_count}} unmatched'
description: 'Trade date: {{trade_date}}
Asset class: {{asset_class}}
Matched: {{run-matching.matched_count}}
Breaks: {{run-matching.break_count}}
Total notional: {{run-matching.total_notional}}'
issuetype: Task
consumes:
- type: http
namespace: calypso
baseUri: https://calypso.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.calypso_token
resources:
- name: fi-trades
path: /trades/fixed-income
operations:
- name: get-fi-trades
method: GET
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: confirmations
path: /confirmations
operations:
- name: get-confirmations
method: GET
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-matching
method: POST
- type: http
namespace: jira
baseUri: https://schwab.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Orchestrates IRA rollover requests by validating eligibility via the account system, sending DocuSign agreements, creating a ServiceNow tracking ticket, and notifying the advisor via Microsoft Teams.
naftiko: '0.5'
info:
label: IRA Rollover Processing Orchestrator
description: Orchestrates IRA rollover requests by validating eligibility via the account system, sending DocuSign agreements, creating a ServiceNow tracking ticket, and notifying the advisor via Microsoft Teams.
tags:
- retirement
- ira-rollover
- docusign
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ira-rollover
port: 8080
tools:
- name: process-rollover
description: Orchestrate IRA rollover processing across eligibility, DocuSign, ServiceNow, and Teams.
inputParameters:
- name: account_id
in: body
type: string
description: Source account ID.
- name: rollover_amount
in: body
type: number
description: Rollover amount.
- name: rollover_type
in: body
type: string
description: Rollover type (traditional, roth, sep).
- name: advisor_email
in: body
type: string
description: Advisor email for notification.
steps:
- name: validate-eligibility
type: call
call: accounts.check-rollover-eligibility
with:
account_id: '{{account_id}}'
amount: '{{rollover_amount}}'
type: '{{rollover_type}}'
- name: send-agreement
type: call
call: docusign.create-envelope
with:
templateId: ira-rollover-{{rollover_type}}
signerEmail: '{{validate-eligibility.client_email}}'
signerName: '{{validate-eligibility.client_name}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'IRA Rollover: {{account_id}} - ${{rollover_amount}}'
category: retirement_operations
assigned_group: Retirement_Services
description: '{{rollover_type}} rollover for ${{rollover_amount}}. DocuSign: {{send-agreement.envelope_id}}.'
- name: notify-advisor
type: call
call: msteams.send-message
with:
recipient_upn: '{{advisor_email}}'
text: 'IRA rollover initiated: {{account_id}}, ${{rollover_amount}} ({{rollover_type}}). Ticket: {{create-ticket.number}}. DocuSign sent to client.'
consumes:
- type: http
namespace: accounts
baseUri: https://accounts-api.schwab.com/v2
authentication:
type: bearer
token: $secrets.accounts_api_token
resources:
- name: rollover
path: /rollover/eligibility
operations:
- name: check-rollover-eligibility
method: POST
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id
authentication:
type: bearer
token: $secrets.docusign_access_token
resources:
- name: envelopes
path: /envelopes
operations:
- name: create-envelope
method: POST
- type: http
namespace: servicenow
baseUri: https://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Generates client trading activity reports from Snowflake for quarterly account reviews.
naftiko: '0.5'
info:
label: Snowflake Client Activity Report
description: Generates client trading activity reports from Snowflake for quarterly account reviews.
tags:
- reporting
- client-services
- snowflake
capability:
exposes:
- type: mcp
namespace: client-reporting
port: 8080
tools:
- name: get-client-activity
description: Query Snowflake for client trading activity summary.
inputParameters:
- name: account_number
in: body
type: string
description: Account number.
- name: quarter
in: body
type: string
description: Fiscal quarter.
call: snowflake.run-query
with:
query: SELECT trade_date, symbol, side, quantity, price, total_value FROM trade_history WHERE account_number='{{account_number}}' AND fiscal_quarter='{{quarter}}' ORDER BY trade_date DESC
outputParameters:
- name: trades
type: array
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Queries Prometheus for trading platform latency metrics including order execution time, API response times, and queue depth.
naftiko: '0.5'
info:
label: Prometheus Trading Latency Metrics
description: Queries Prometheus for trading platform latency metrics including order execution time, API response times, and queue depth.
tags:
- monitoring
- performance
- prometheus
capability:
exposes:
- type: mcp
namespace: latency-metrics
port: 8080
tools:
- name: query-latency
description: Query Prometheus for trading latency metrics.
inputParameters:
- name: promql
in: body
type: string
description: PromQL query expression.
- name: time_range
in: body
type: string
description: Time range (e.g., 1h, 6h, 24h).
call: prometheus.query-range
with:
query: '{{promql}}'
duration: '{{time_range}}'
outputParameters:
- name: result
type: array
mapping: $.data.result
consumes:
- type: http
namespace: prometheus
baseUri: https://prometheus.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.prometheus_token
resources:
- name: query
path: /query_range
operations:
- name: query-range
method: POST
Exports financial planning model outputs from Snowflake to Google Sheets for advisor use in client meetings.
naftiko: '0.5'
info:
label: Google Sheets Financial Planning Exporter
description: Exports financial planning model outputs from Snowflake to Google Sheets for advisor use in client meetings.
tags:
- financial-planning
- reporting
- snowflake
- google-sheets
capability:
exposes:
- type: mcp
namespace: financial-planning
port: 8080
tools:
- name: export-planning-model
description: Run a financial planning projection and export to Google Sheets.
inputParameters:
- name: account_number
in: body
type: string
description: Client account number.
- name: projection_years
in: body
type: integer
description: Years to project.
- name: spreadsheet_id
in: body
type: string
description: Google Sheets ID.
steps:
- name: run-projection
type: call
call: snowflake.run-query
with:
query: CALL run_financial_projection('{{account_number}}', {{projection_years}})
- name: write-sheet
type: call
call: google-sheets.update-values
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: Projection!A1
values: '{{run-projection.results}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.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
Creates and sends market insight newsletters to Schwab clients segmented by investment interests.
naftiko: '0.5'
info:
label: MailChimp Client Newsletter Sender
description: Creates and sends market insight newsletters to Schwab clients segmented by investment interests.
tags:
- marketing
- client-engagement
- mailchimp
capability:
exposes:
- type: mcp
namespace: client-newsletters
port: 8080
tools:
- name: send-newsletter
description: Create and send a market insights newsletter via MailChimp.
inputParameters:
- name: list_id
in: body
type: string
description: MailChimp list ID.
- name: subject
in: body
type: string
description: Email subject.
- name: template_id
in: body
type: string
description: MailChimp template ID.
call: mailchimp.create-campaign
with:
type: regular
recipients_list_id: '{{list_id}}'
subject_line: '{{subject}}'
template_id: '{{template_id}}'
from_name: Charles Schwab
outputParameters:
- name: campaign_id
type: string
mapping: $.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: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
Generates SEC regulatory filing data from Snowflake and uploads to SharePoint for legal review before submission.
naftiko: '0.5'
info:
label: SEC Regulatory Filing Generator
description: Generates SEC regulatory filing data from Snowflake and uploads to SharePoint for legal review before submission.
tags:
- compliance
- regulatory
- sec
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: regulatory-filings
port: 8080
tools:
- name: generate-sec-filing
description: Generate SEC filing data from Snowflake and upload to SharePoint for review.
inputParameters:
- name: filing_type
in: body
type: string
description: Filing type (10-K, 10-Q, 8-K, ADV).
- name: reporting_period
in: body
type: string
description: Reporting period.
steps:
- name: generate-data
type: call
call: snowflake.run-query
with:
query: CALL generate_sec_filing('{{filing_type}}', '{{reporting_period}}')
- name: upload-draft
type: call
call: sharepoint.upload-file
with:
site_id: regulatory_filings
folder_path: SEC/{{filing_type}}/{{reporting_period}}
file_name: '{{filing_type}}_draft_{{reporting_period}}.xlsx'
content: '{{generate-data.results}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.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
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
Searches the Workday employee directory for financial advisors and support staff.
naftiko: '0.5'
info:
label: Workday Employee Directory
description: Searches the Workday employee directory for financial advisors and support staff.
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
On new financial advisor hire, creates Workday profile, provisions Okta account with MFA, sets up Salesforce user, and assigns Pluralsight training paths.
naftiko: '0.5'
info:
label: New Advisor Provisioning Orchestrator
description: On new financial advisor hire, creates Workday profile, provisions Okta account with MFA, sets up Salesforce user, and assigns Pluralsight training paths.
tags:
- hr
- provisioning
- workday
- okta
- salesforce
- pluralsight
capability:
exposes:
- type: mcp
namespace: advisor-provisioning
port: 8080
tools:
- name: provision-advisor
description: Orchestrate new advisor provisioning across Workday, Okta, Salesforce, and Pluralsight.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID.
- name: department
in: body
type: string
description: Department name.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: create-okta-user
type: call
call: okta.create-user
with:
email: '{{get-employee.email}}'
firstName: '{{get-employee.first_name}}'
lastName: '{{get-employee.last_name}}'
group: Financial_Advisors
- name: create-sf-user
type: call
call: salesforce.create-user
with:
email: '{{get-employee.email}}'
name: '{{get-employee.full_name}}'
profile: Financial_Advisor
- name: assign-training
type: call
call: pluralsight.assign-channel
with:
email: '{{get-employee.email}}'
channel_id: advisor-onboarding-path
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: okta
baseUri: https://schwab.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: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: users
path: /sobjects/User
operations:
- name: create-user
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
Creates a Zoom meeting for a client-advisor consultation and sends calendar invites.
naftiko: '0.5'
info:
label: Zoom Client Consultation Scheduler
description: Creates a Zoom meeting for a client-advisor consultation and sends calendar invites.
tags:
- client-services
- meetings
- zoom
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: client-meetings
port: 8080
tools:
- name: schedule-consultation
description: Create a Zoom meeting for a client consultation and send Outlook invites.
inputParameters:
- name: client_name
in: body
type: string
description: Client name.
- name: advisor_email
in: body
type: string
description: Advisor email.
- name: client_email
in: body
type: string
description: Client email.
- name: date_time
in: body
type: string
description: Meeting date/time in ISO 8601.
- name: topic
in: body
type: string
description: Meeting topic.
steps:
- name: create-meeting
type: call
call: zoom.create-meeting
with:
topic: '{{topic}} - {{client_name}}'
start_time: '{{date_time}}'
duration: 60
type: 2
- name: send-invite
type: call
call: outlook.create-event
with:
subject: '{{topic}} - {{client_name}}'
start_time: '{{date_time}}'
body: 'Join Zoom: {{create-meeting.join_url}}'
attendees: '{{advisor_email}},{{client_email}}'
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
Triggers GitHub Actions deployment workflow for Schwab's digital platform and notifies the release team.
naftiko: '0.5'
info:
label: GitHub Actions Platform Deployment
description: Triggers GitHub Actions deployment workflow for Schwab's digital 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 workflow and notify the release 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: release_management
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
Monitors Azure Data Factory pipelines that ingest market data feeds into the analytics warehouse.
naftiko: '0.5'
info:
label: Azure Data Factory Market Data ETL
description: Monitors Azure Data Factory pipelines that ingest market data feeds into the analytics warehouse.
tags:
- data-engineering
- etl
- azure-data-factory
capability:
exposes:
- type: mcp
namespace: market-data-etl
port: 8080
tools:
- name: get-pipeline-status
description: Check the latest ADF market 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: run_id
type: string
mapping: $.value[0].runId
- name: status
type: string
mapping: $.value[0].status
consumes:
- type: http
namespace: adf
baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/schwab-data-rg/providers/Microsoft.DataFactory/factories/schwab-adf
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: pipeline-runs
path: /queryPipelineRuns
operations:
- name: get-pipeline-runs
method: POST
Monitors Apache Kafka topic health and consumer lag for Schwab's real-time trade event streaming pipeline.
naftiko: '0.5'
info:
label: Kafka Trade Event Stream Monitor
description: Monitors Apache Kafka topic health and consumer lag for Schwab's real-time trade event streaming pipeline.
tags:
- streaming
- kafka
- trading
capability:
exposes:
- type: mcp
namespace: trade-streaming
port: 8080
tools:
- name: get-topic-health
description: Check Kafka topic health and consumer lag for trade event streams.
inputParameters:
- name: topic_name
in: body
type: string
description: Kafka topic name.
- name: consumer_group
in: body
type: string
description: Consumer group ID.
call: kafka.get-consumer-lag
with:
topic: '{{topic_name}}'
group: '{{consumer_group}}'
outputParameters:
- name: total_lag
type: integer
mapping: $.total_lag
- name: partitions
type: array
mapping: $.partitions
consumes:
- type: http
namespace: kafka
baseUri: https://kafka-rest.schwab.com/v3
authentication:
type: bearer
token: $secrets.kafka_rest_token
resources:
- name: consumer-groups
path: /clusters/schwab-prod/consumer-groups/{{group}}/lags
inputParameters:
- name: group
in: path
operations:
- name: get-consumer-lag
method: GET
Checks Microsoft Intune device compliance status for Schwab employee devices accessing trading and client data systems.
naftiko: '0.5'
info:
label: Microsoft Intune Device Compliance Checker
description: Checks Microsoft Intune device compliance status for Schwab employee devices accessing trading and client data systems.
tags:
- security
- endpoint
- microsoft-intune
capability:
exposes:
- type: mcp
namespace: device-compliance
port: 8080
tools:
- name: check-device-compliance
description: Query Microsoft Intune for device compliance status.
inputParameters:
- name: device_id
in: body
type: string
description: Intune device ID.
call: intune.get-device-compliance
with:
device_id: '{{device_id}}'
outputParameters:
- name: compliance_state
type: string
mapping: $.complianceState
- name: os_version
type: string
mapping: $.osVersion
- name: last_sync
type: string
mapping: $.lastSyncDateTime
consumes:
- type: http
namespace: intune
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: devices
path: /deviceManagement/managedDevices/{{device_id}}
inputParameters:
- name: device_id
in: path
operations:
- name: get-device-compliance
method: GET
Prepares for SEC/FINRA examinations by gathering compliance data from Snowflake, pulling audit logs from Splunk, compiling documents in Box, and creating a preparation checklist in Jira.
naftiko: '0.5'
info:
label: Regulatory Exam Preparation Orchestrator
description: Prepares for SEC/FINRA examinations by gathering compliance data from Snowflake, pulling audit logs from Splunk, compiling documents in Box, and creating a preparation checklist in Jira.
tags:
- regulatory
- examination
- snowflake
- splunk
- box
- jira
capability:
exposes:
- type: mcp
namespace: exam-preparation
port: 8080
tools:
- name: prepare-exam-materials
description: Orchestrate regulatory exam preparation across Snowflake, Splunk, Box, and Jira.
inputParameters:
- name: exam_type
in: body
type: string
description: Examination type (sec-audit, finra-cycle, state-exam).
- name: exam_date
in: body
type: string
description: Scheduled examination date.
steps:
- name: gather-compliance-data
type: call
call: snowflake.query-compliance
with:
statement: SELECT * FROM COMPLIANCE_METRICS WHERE report_date >= DATEADD(year, -2, CURRENT_DATE)
warehouse: SCHWAB_COMPLIANCE_WH
- name: pull-audit-logs
type: call
call: splunk.search
with:
query: index=audit_trail earliest=-2y | stats count by action_type, department
- name: compile-documents
type: call
call: box.create-folder
with:
parent_folder_id: exam_materials
name: '{{exam_type}}_{{exam_date}}'
- name: create-checklist
type: call
call: jira.create-issue
with:
project: COMPLIANCE
summary: 'Exam prep: {{exam_type}} - {{exam_date}}'
description: 'Compliance data: {{gather-compliance-data.record_count}} records. Audit logs: {{pull-audit-logs.event_count}} events. Documents: {{compile-documents.url}}.'
issuetype: Task
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-compliance
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.schwab.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_access_token
resources:
- name: folders
path: /folders
operations:
- name: create-folder
method: POST
- type: http
namespace: jira
baseUri: https://schwab.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Triggers a reload of the Qlik Sense revenue analytics app tracking advisory fees, commission revenue, and net new assets.
naftiko: '0.5'
info:
label: Qlik Sense Revenue Analytics Dashboard
description: Triggers a reload of the Qlik Sense revenue analytics app tracking advisory fees, commission revenue, and net new assets.
tags:
- analytics
- revenue
- qlik-sense
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: reload-revenue-dashboard
description: Trigger a Qlik Sense app reload for revenue 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://schwab.us.qlikcloud.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_api_key
resources:
- name: reloads
path: /reloads
operations:
- name: reload-app
method: POST
Runs Postman test collections for Schwab's trading and account management APIs.
naftiko: '0.5'
info:
label: Postman Trading API Test Suite
description: Runs Postman test collections for Schwab's trading and account management APIs.
tags:
- qa
- api-testing
- postman
capability:
exposes:
- type: mcp
namespace: api-testing
port: 8080
tools:
- name: run-api-tests
description: Execute a Postman 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
Monitors Schwab's data center infrastructure health via SolarWinds.
naftiko: '0.5'
info:
label: SolarWinds Data Center Monitoring
description: Monitors Schwab's data center infrastructure health via SolarWinds.
tags:
- infrastructure
- solarwinds
capability:
exposes:
- type: mcp
namespace: dc-monitoring
port: 8080
tools:
- name: get-dc-health
description: Retrieve data center health from SolarWinds.
inputParameters:
- name: dc_name
in: body
type: string
description: Data center name.
call: solarwinds.get-dc-stats
with:
datacenter: '{{dc_name}}'
outputParameters:
- name: overall_health
type: string
mapping: $.status
- name: nodes_up
type: integer
mapping: $.nodes_available
consumes:
- type: http
namespace: solarwinds
baseUri: https://solarwinds.schwab.com/SolarWinds/InformationService/v3/Json
authentication:
type: basic
username: $secrets.solarwinds_user
password: $secrets.solarwinds_password
resources:
- name: query
path: /Query
operations:
- name: get-dc-stats
method: POST
Retrieves historical price data from Bloomberg for backtesting investment strategies.
naftiko: '0.5'
info:
label: Bloomberg Terminal Analytics Feed
description: Retrieves historical price data from Bloomberg for backtesting investment strategies.
tags:
- market-data
- backtesting
- bloomberg
capability:
exposes:
- type: mcp
namespace: historical-data
port: 8080
tools:
- name: get-historical-prices
description: Fetch historical price data from Bloomberg for backtesting.
inputParameters:
- name: security_id
in: body
type: string
description: Bloomberg security ID.
- name: start_date
in: body
type: string
description: Start date.
- name: end_date
in: body
type: string
description: End date.
- name: frequency
in: body
type: string
description: Data frequency (DAILY, WEEKLY, MONTHLY).
call: bloomberg.get-history
with:
securities: '{{security_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
frequency: '{{frequency}}'
fields: PX_LAST,PX_VOLUME
outputParameters:
- name: data
type: array
mapping: $.data
- name: count
type: integer
mapping: $.count
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: history
path: /histories
operations:
- name: get-history
method: POST
Processes client address change requests by updating Salesforce CRM, verifying identity via Okta MFA, updating the mailing system, and logging the change in the compliance audit trail.
naftiko: '0.5'
info:
label: Client Address Change Orchestrator
description: Processes client address change requests by updating Salesforce CRM, verifying identity via Okta MFA, updating the mailing system, and logging the change in the compliance audit trail.
tags:
- account-services
- address-change
- salesforce
- okta
- compliance
capability:
exposes:
- type: mcp
namespace: address-changes
port: 8080
tools:
- name: process-address-change
description: Orchestrate address change across Salesforce, Okta, mailing, and compliance systems.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: new_address
in: body
type: string
description: New mailing address.
- name: client_email
in: body
type: string
description: Client email for verification.
steps:
- name: verify-identity
type: call
call: okta.trigger-mfa
with:
login: '{{client_email}}'
factor_type: push
- name: update-crm
type: call
call: salesforce.update-account
with:
account_id: '{{account_id}}'
field: BillingAddress
value: '{{new_address}}'
- name: update-mailing
type: call
call: mailing.update-address
with:
account_id: '{{account_id}}'
address: '{{new_address}}'
- name: log-audit
type: call
call: compliance.log-change
with:
account_id: '{{account_id}}'
change_type: address_update
details: 'Address changed to: {{new_address}}. MFA verified: {{verify-identity.status}}.'
consumes:
- type: http
namespace: okta
baseUri: https://schwab.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: factors
path: /users/{{login}}/factors
inputParameters:
- name: login
in: path
operations:
- name: trigger-mfa
method: POST
- type: http
namespace: salesforce
baseUri: https://schwab.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: update-account
method: PATCH
- type: http
namespace: mailing
baseUri: https://mailing-api.schwab.com/v1
authentication:
type: bearer
token: $secrets.mailing_api_token
resources:
- name: addresses
path: /addresses
operations:
- name: update-address
method: PUT
- type: http
namespace: compliance
baseUri: https://compliance-api.schwab.com/v1
authentication:
type: bearer
token: $secrets.compliance_api_token
resources:
- name: audit
path: /audit-trail
operations:
- name: log-change
method: POST
Monitors WebSphere servers running legacy account management systems.
naftiko: '0.5'
info:
label: WebSphere Legacy Account System Monitor
description: Monitors WebSphere servers running legacy account management systems.
tags:
- infrastructure
- websphere
capability:
exposes:
- type: mcp
namespace: legacy-health
port: 8080
tools:
- name: check-legacy-server
description: Query WebSphere for legacy server health.
inputParameters:
- name: server_name
in: body
type: string
description: Server name.
call: websphere.get-server-status
with:
server: '{{server_name}}'
outputParameters:
- name: status
type: string
mapping: $.state
- name: heap_usage_pct
type: number
mapping: $.jvm.heap_usage_pct
consumes:
- type: http
namespace: websphere
baseUri: https://websphere-admin.schwab.com/IBMJMXConnectorREST
authentication:
type: basic
username: $secrets.websphere_admin_user
password: $secrets.websphere_admin_password
resources:
- name: servers
path: /mbeans/WebSphere:type=Server,name={{server}}
inputParameters:
- name: server
in: path
operations:
- name: get-server-status
method: GET
Reconciles cost basis records by comparing Teradata positions with Calypso trade records, flagging discrepancies in Snowflake, and creating ServiceNow tickets for resolution.
naftiko: '0.5'
info:
label: Cost Basis Reconciliation Orchestrator
description: Reconciles cost basis records by comparing Teradata positions with Calypso trade records, flagging discrepancies in Snowflake, and creating ServiceNow tickets for resolution.
tags:
- operations
- reconciliation
- teradata
- calypso
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: cost-basis-recon
port: 8080
tools:
- name: reconcile-cost-basis
description: Orchestrate cost basis reconciliation across Teradata, Calypso, Snowflake, and ServiceNow.
inputParameters:
- name: account_id
in: body
type: string
description: Account ID to reconcile.
- name: as_of_date
in: body
type: string
description: Reconciliation date in YYYY-MM-DD.
steps:
- name: get-positions
type: call
call: teradata.query-positions
with:
query: SELECT * FROM COST_BASIS WHERE account_id = '{{account_id}}' AND as_of_date = '{{as_of_date}}'
- name: get-trades
type: call
call: calypso.get-trade-history
with:
account_id: '{{account_id}}'
date: '{{as_of_date}}'
- name: log-discrepancies
type: call
call: snowflake.insert-discrepancies
with:
statement: INSERT INTO RECON_DISCREPANCIES SELECT * FROM TABLE(COMPARE_COST_BASIS('{{account_id}}', '{{as_of_date}}'))
warehouse: SCHWAB_OPERATIONS_WH
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Cost basis discrepancy: {{account_id}} as of {{as_of_date}}'
category: reconciliation
assigned_group: Operations_Reconciliation
description: Cost basis reconciliation found discrepancies for account {{account_id}}.
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: queries
path: /queries
operations:
- name: query-positions
method: POST
- type: http
namespace: calypso
baseUri: https://calypso.schwab.com/api/v1
authentication:
type: bearer
token: $secrets.calypso_token
resources:
- name: trades
path: /trades/history
operations:
- name: get-trade-history
method: GET
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-discrepancies
method: POST
- type: http
namespace: servicenow
baseUri: https://schwab.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Updates client risk profiles by collecting questionnaire results from Salesforce, running risk scoring in Databricks, updating the account system, and notifying the advisor via Microsoft Teams.
naftiko: '0.5'
info:
label: Client Risk Profile Update Orchestrator
description: Updates client risk profiles by collecting questionnaire results from Salesforce, running risk scoring in Databricks, updating the account system, and notifying the advisor via Microsoft Teams.
tags:
- risk-profiling
- suitability
- salesforce
- databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-profiling
port: 8080
tools:
- name: update-risk-profile
description: Orchestrate risk profile update across Salesforce, Databricks, and Teams.
inputParameters:
- name: account_id
in: body
type: string
description: Client account ID.
- name: questionnaire_id
in: body
type: string
description: Completed questionnaire ID.
steps:
- name: get-responses
type: call
call: salesforce.get-questionnaire
with:
questionnaire_id: '{{questionnaire_id}}'
- name: calculate-score
type: call
call: databricks.run-risk-model
with:
responses: '{{get-responses.data}}'
model: client-risk-scoring-v3
- name: update-account
type: call
call: accounts.update-risk-profile
with:
account_id: '{{account_id}}'
risk_score: '{{calculate-score.score}}'
risk_category: '{{calculate-score.category}}'
- name: notify-advisor
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-responses.advisor_email}}'
text: 'Risk profile updated: Account {{account_id}}. New score: {{calculate-score.score}} ({{calculate-score.category}}). Review recommended.'
consumes:
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: questionnaires
path: /sobjects/Risk_Questionnaire__c/{{questionnaire_id}}
inputParameters:
- name: questionnaire_id
in: path
operations:
- name: get-questionnaire
method: GET
- type: http
namespace: databricks
baseUri: https://schwab.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: serving
path: /serving-endpoints/client-risk-scoring-v3/invocations
operations:
- name: run-risk-model
method: POST
- type: http
namespace: accounts
baseUri: https://accounts-api.schwab.com/v2
authentication:
type: bearer
token: $secrets.accounts_api_token
resources:
- name: risk-profiles
path: /accounts/{{account_id}}/risk-profile
inputParameters:
- name: account_id
in: path
operations:
- name: update-risk-profile
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Sends account opening agreements and disclosure documents to clients for electronic signature via DocuSign.
naftiko: '0.5'
info:
label: DocuSign Account Agreement Sender
description: Sends account opening agreements and disclosure documents to clients for electronic signature via DocuSign.
tags:
- documents
- e-signature
- docusign
capability:
exposes:
- type: mcp
namespace: document-signing
port: 8080
tools:
- name: send-agreement
description: Send an account agreement envelope for electronic signature via DocuSign.
inputParameters:
- name: client_email
in: body
type: string
description: Client email address.
- name: client_name
in: body
type: string
description: Client full name.
- name: template_id
in: body
type: string
description: DocuSign template ID for the agreement type.
call: docusign.create-envelope
with:
templateId: '{{template_id}}'
signerEmail: '{{client_email}}'
signerName: '{{client_name}}'
outputParameters:
- name: envelope_id
type: string
mapping: $.envelopeId
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id
authentication:
type: bearer
token: $secrets.docusign_access_token
resources:
- name: envelopes
path: /envelopes
operations:
- name: create-envelope
method: POST
Uploads compliance and regulatory documents to Box with appropriate retention policies for SEC and FINRA requirements.
naftiko: '0.5'
info:
label: Box Compliance Document Manager
description: Uploads compliance and regulatory documents to Box with appropriate retention policies for SEC and FINRA requirements.
tags:
- compliance
- document-management
- box
capability:
exposes:
- type: mcp
namespace: compliance-docs
port: 8080
tools:
- name: upload-compliance-doc
description: Upload a compliance document to Box with retention settings.
inputParameters:
- name: file_name
in: body
type: string
description: Document name.
- name: folder_id
in: body
type: string
description: Box folder ID.
- name: retention_years
in: body
type: integer
description: Retention period in years.
call: box.upload-file
with:
folder_id: '{{folder_id}}'
file_name: '{{file_name}}'
retention_policy: '{{retention_years}}_year'
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
Retrieves firewall rules from Palo Alto Panorama for compliance auditing of Schwab's network perimeter protecting client data.
naftiko: '0.5'
info:
label: Palo Alto Networks Firewall Auditor
description: Retrieves firewall rules from Palo Alto Panorama for compliance auditing of Schwab's network perimeter protecting client data.
tags:
- security
- compliance
- palo-alto-networks
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: audit-firewall-rules
description: Fetch firewall security policies 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.schwab.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
Processes ACH transfers by validating bank details, running fraud screening via Splunk, submitting to the payment gateway, logging in Snowflake, and notifying the client via email.
naftiko: '0.5'
info:
label: ACH Transfer Processing Orchestrator
description: Processes ACH transfers by validating bank details, running fraud screening via Splunk, submitting to the payment gateway, logging in Snowflake, and notifying the client via email.
tags:
- payments
- ach
- splunk
- snowflake
capability:
exposes:
- type: mcp
namespace: ach-processing
port: 8080
tools:
- name: process-ach-transfer
description: Orchestrate ACH transfer processing across validation, fraud check, payment, and logging.
inputParameters:
- name: account_id
in: body
type: string
description: Schwab account ID.
- name: amount
in: body
type: number
description: Transfer amount.
- name: direction
in: body
type: string
description: Transfer direction (deposit, withdrawal).
- name: external_account
in: body
type: string
description: External bank account identifier.
steps:
- name: validate-bank
type: call
call: banking.validate-external-account
with:
external_account: '{{external_account}}'
- name: fraud-screen
type: call
call: splunk.search
with:
query: index=ach_fraud account={{account_id}} OR bank={{external_account}} earliest=-90d | stats count as alerts
- name: submit-transfer
type: call
call: payments.submit-ach
with:
account_id: '{{account_id}}'
amount: '{{amount}}'
direction: '{{direction}}'
external_account: '{{external_account}}'
- name: log-transfer
type: call
call: snowflake.insert-ach-log
with:
statement: INSERT INTO ACH_TRANSFER_LOG VALUES ('{{account_id}}', {{amount}}, '{{direction}}', '{{submit-transfer.confirmation_id}}', CURRENT_TIMESTAMP)
warehouse: SCHWAB_PAYMENTS_WH
consumes:
- type: http
namespace: banking
baseUri: https://core-banking.schwab.com/api/v2
authentication:
type: bearer
token: $secrets.banking_api_token
resources:
- name: validation
path: /external-accounts/validate
operations:
- name: validate-external-account
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.schwab.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search
method: POST
- type: http
namespace: payments
baseUri: https://payments-api.schwab.com/v1
authentication:
type: bearer
token: $secrets.payments_api_token
resources:
- name: ach
path: /ach/transfers
operations:
- name: submit-ach
method: POST
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-ach-log
method: POST
Assigns Series 7, Series 66, and CFP study courses in Pluralsight to financial advisors.
naftiko: '0.5'
info:
label: Pluralsight Financial Advisor Training
description: Assigns Series 7, Series 66, and CFP study courses in Pluralsight to financial advisors.
tags:
- training
- licensing
- pluralsight
capability:
exposes:
- type: mcp
namespace: advisor-training
port: 8080
tools:
- name: assign-licensing-course
description: Assign a licensing preparation course in Pluralsight.
inputParameters:
- name: user_email
in: body
type: string
description: Advisor 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
Organizes client financial planning documents in Google Drive by account and type.
naftiko: '0.5'
info:
label: Google Drive Client Document Organizer
description: Organizes client financial planning documents in Google Drive by account and type.
tags:
- document-management
- google-drive
capability:
exposes:
- type: mcp
namespace: client-documents
port: 8080
tools:
- name: organize-client-doc
description: Move a client document to the correct Drive folder.
inputParameters:
- name: file_id
in: body
type: string
description: File ID.
- name: account_number
in: body
type: string
description: Account number.
call: google-drive.move-file
with:
file_id: '{{file_id}}'
target_folder: clients_{{account_number}}
outputParameters:
- name: name
type: string
mapping: $.name
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}}
inputParameters:
- name: file_id
in: path
operations:
- name: move-file
method: PATCH
Analyzes client sentiment by extracting survey responses from Salesforce, running NLP analysis via Azure ML, updating client satisfaction scores in Snowflake, and alerting account managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Client Sentiment Analysis Pipeline
description: Analyzes client sentiment by extracting survey responses from Salesforce, running NLP analysis via Azure ML, updating client satisfaction scores in Snowflake, and alerting account managers via Microsoft Teams.
tags:
- analytics
- sentiment
- salesforce
- azure-machine-learning
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sentiment-analysis
port: 8080
tools:
- name: analyze-sentiment
description: Orchestrate client sentiment analysis across Salesforce, Azure ML, Snowflake, and Teams.
inputParameters:
- name: survey_batch_id
in: body
type: string
description: Survey batch identifier.
steps:
- name: get-responses
type: call
call: salesforce.get-survey-responses
with:
batch_id: '{{survey_batch_id}}'
- name: run-analysis
type: call
call: azure-ml.score-sentiment
with:
texts: '{{get-responses.comments}}'
model: client-sentiment-v2
- name: update-scores
type: call
call: snowflake.update-satisfaction
with:
statement: CALL UPDATE_CLIENT_SATISFACTION('{{survey_batch_id}}', '{{run-analysis.scores}}')
warehouse: SCHWAB_ANALYTICS_WH
- name: alert-managers
type: call
call: msteams.send-channel-message
with:
team_id: client-experience
channel: sentiment-alerts
text: 'Sentiment analysis complete: Batch {{survey_batch_id}}. Avg score: {{run-analysis.avg_score}}. Negative: {{run-analysis.negative_count}}. Positive: {{run-analysis.positive_count}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: surveys
path: /sobjects/Survey_Response__c
operations:
- name: get-survey-responses
method: GET
- type: http
namespace: azure-ml
baseUri: https://schwab-ml.centralus.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: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: update-satisfaction
method: POST
- type: http
namespace: msteams
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
Identifies expiring options positions from Snowflake, evaluates in-the-money status from Bloomberg, sends client notifications via Twilio SMS, and logs actions in Salesforce.
naftiko: '0.5'
info:
label: Options Expiration Notification Pipeline
description: Identifies expiring options positions from Snowflake, evaluates in-the-money status from Bloomberg, sends client notifications via Twilio SMS, and logs actions in Salesforce.
tags:
- options
- expiration
- snowflake
- bloomberg
- twilio
- salesforce
capability:
exposes:
- type: mcp
namespace: options-expiration
port: 8080
tools:
- name: process-expirations
description: Orchestrate options expiration notifications across Snowflake, Bloomberg, Twilio, and Salesforce.
inputParameters:
- name: expiration_date
in: body
type: string
description: Options expiration date in YYYY-MM-DD.
steps:
- name: get-expiring-positions
type: call
call: snowflake.query-options
with:
statement: SELECT * FROM OPTIONS_POSITIONS WHERE expiration_date = '{{expiration_date}}' AND quantity > 0
warehouse: SCHWAB_TRADING_WH
- name: check-itm-status
type: call
call: bloomberg.check-options-status
with:
positions: '{{get-expiring-positions.data}}'
- name: send-notifications
type: call
call: twilio.send-bulk-sms
with:
messages: '{{check-itm-status.notifications}}'
from: '+18005407000'
- name: log-notifications
type: call
call: salesforce.create-activities
with:
activities: '{{send-notifications.delivery_log}}'
type: options_expiration_notice
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-options
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: options
path: /options/itm-check
operations:
- name: check-options-status
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-bulk-sms
method: POST
- type: http
namespace: salesforce
baseUri: https://schwab.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/Activity__c
operations:
- name: create-activities
method: POST
Processes wire transfer requests by validating the account in the core banking system, running fraud checks via Splunk, creating an approval task in ServiceNow, and notifying the operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Wire Transfer Approval Orchestrator
description: Processes wire transfer requests by validating the account in the core banking system, running fraud checks via Splunk, creating an approval task in ServiceNow, and notifying the operations team via Microsoft Teams.
tags:
- wire-transfer
- fraud-detection
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wire-transfers
port: 8080
tools:
- name: process-wire-transfer
description: Orchestrate wire transfer approval across banking system, Splunk, ServiceNow, and Teams.
inputParameters:
- name: account_id
in: body
type: string
description: Source account ID.
- name: amount
in: body
type: number
description: Wire transfer amount.
- name: beneficiary_bank
in: body
type: string
description: Beneficiary bank routing number.
steps:
- name: validate-account
type: call
call: banking.validate-wire
with:
account_id: '{{account_id}}'
amount: '{{amount}}'
- name: fraud-check
type: call
call: splunk.search
with:
query: index=fraud_alerts account_id={{account_id}} earliest=-30d | stats count as fraud_count
- name: create-approval
type: call
call: servicenow.create-change
with:
short_description: 'Wire transfer: {{account_id}} - ${{amount}}'
category: wire_transfer
assigned_group: Wire_Operations
description: 'Amount: ${{amount}}
Beneficiary bank: {{beneficiary_bank}}
Fraud alerts (30d): {{fraud-check.fraud_count}}
Account status: {{validate-account.status}}'
- name: notify-ops
type: call
call: msteams.send-channel-message
with:
team_id: operations
channel: wire-transfers
text: 'Wire transfer pending: {{account_id}}, ${{amount}}. Approval: {{create-approval.number}}. Fraud alerts: {{fraud-check.fraud_count}}.'
consumes:
- type: http
namespace: banking
baseUri: https://core-banking.schwab.com/api/v2
authentication:
type: bearer
token: $secrets.banking_api_token
resources:
- name: wires
path: /wire-validation
operations:
- name: validate-wire
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.schwab.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search
method: POST
- type: http
namespace: servicenow
baseUri: https://schwab.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/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
Publishes investor relations content on the Schwab LinkedIn company page for earnings and corporate updates.
naftiko: '0.5'
info:
label: LinkedIn Investor Relations Publisher
description: Publishes investor relations content on the Schwab LinkedIn company page for earnings and corporate updates.
tags:
- investor-relations
- communications
- linkedin
capability:
exposes:
- type: mcp
namespace: investor-comms
port: 8080
tools:
- name: publish-ir-post
description: Post investor relations content to the Schwab LinkedIn page.
inputParameters:
- name: text
in: body
type: string
description: Post content.
- name: link_url
in: body
type: string
description: Link URL.
call: linkedin.create-post
with:
author: urn:li:organization:{{schwab_org_id}}
text: '{{text}}'
link: '{{link_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
Monitors AWS Lambda function health for Schwab's trade settlement processing, returning invocation count, error rate, and duration metrics.
naftiko: '0.5'
info:
label: AWS Lambda Trade Settlement Monitor
description: Monitors AWS Lambda function health for Schwab's trade settlement processing, returning invocation count, error rate, and duration metrics.
tags:
- serverless
- trade-settlement
- aws-lambda
capability:
exposes:
- type: mcp
namespace: settlement-monitor
port: 8080
tools:
- name: get-settlement-function-health
description: Check Lambda function health for trade settlement processing.
inputParameters:
- name: function_name
in: body
type: string
description: Lambda function name.
call: lambda.get-function
with:
FunctionName: '{{function_name}}'
outputParameters:
- name: state
type: string
mapping: $.Configuration.State
- name: last_modified
type: string
mapping: $.Configuration.LastModified
- name: runtime
type: string
mapping: $.Configuration.Runtime
consumes:
- type: http
namespace: lambda
baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
authentication:
type: aws-sig-v4
access_key: $secrets.aws_access_key
secret_key: $secrets.aws_secret_key
resources:
- name: functions
path: /functions/{{FunctionName}}
inputParameters:
- name: FunctionName
in: path
operations:
- name: get-function
method: GET
Retrieves trade lifecycle events from the Calypso trading platform for fixed income and derivatives position management.
naftiko: '0.5'
info:
label: Calypso Trade Lifecycle Manager
description: Retrieves trade lifecycle events from the Calypso trading platform for fixed income and derivatives position management.
tags:
- trading
- lifecycle
- calypso
capability:
exposes:
- type: mcp
namespace: trade-lifecycle
port: 8080
tools:
- name: get-trade-events
description: Fetch trade lifecycle events from Calypso.
inputParameters:
- name: trade_id
in: body
type: string
description: Calypso trade ID.
call: calypso.get-trade
with:
trade_id: '{{trade_id}}'
outputParameters:
- name: status
type: string
mapping: $.trade.status
- name: product_type
type: string
mapping: $.trade.product_type
consumes:
- type: http
namespace: calypso
baseUri: https://calypso.schwab.com/calypsoserver/api/v1
authentication:
type: bearer
token: $secrets.calypso_token
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
Identifies clients approaching Required Minimum Distribution deadlines from Snowflake, calculates RMD amounts, sends reminders via email and SMS, and logs outreach in Salesforce.
naftiko: '0.5'
info:
label: RMD Distribution Reminder Pipeline
description: Identifies clients approaching Required Minimum Distribution deadlines from Snowflake, calculates RMD amounts, sends reminders via email and SMS, and logs outreach in Salesforce.
tags:
- retirement
- rmd
- snowflake
- twilio
- salesforce
capability:
exposes:
- type: mcp
namespace: rmd-reminders
port: 8080
tools:
- name: process-rmd-reminders
description: Orchestrate RMD distribution reminders across Snowflake, Twilio, and Salesforce.
inputParameters:
- name: reminder_days
in: body
type: integer
description: Days before deadline to send reminder.
steps:
- name: get-rmd-clients
type: call
call: snowflake.query-rmd
with:
statement: SELECT * FROM RMD_SCHEDULE WHERE deadline_date <= DATEADD(day, {{reminder_days}}, CURRENT_DATE) AND distributed = FALSE
warehouse: SCHWAB_RETIREMENT_WH
- name: send-sms-reminders
type: call
call: twilio.send-bulk-sms
with:
messages: '{{get-rmd-clients.sms_list}}'
from: '+18005407000'
- name: send-email-reminders
type: call
call: ses.send-bulk-email
with:
recipients: '{{get-rmd-clients.email_list}}'
template: rmd-reminder
- name: log-outreach
type: call
call: salesforce.create-bulk-activities
with:
activities: '{{get-rmd-clients.activity_log}}'
type: rmd_reminder_sent
consumes:
- type: http
namespace: snowflake
baseUri: https://schwab.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-rmd
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-bulk-sms
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://schwab.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
Queries Jira for all unestimated and high-priority backlog issues on a technology delivery board and posts a sprint planning agenda to the product team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Jira Backlog Sprint Planning Digest
description: Queries Jira for all unestimated and high-priority backlog issues on a technology delivery board and posts a sprint planning agenda to the product team's Microsoft Teams channel.
tags:
- devops
- jira
- microsoft-teams
- sprint-planning
- engineering
capability:
exposes:
- type: mcp
namespace: sprint-planning
port: 8080
tools:
- name: generate-sprint-agenda
description: Query Jira for prioritized unestimated backlog issues on a given board and post a sprint planning agenda to the product team Teams channel before the sprint planning ceremony.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira board ID for the product delivery team.
- name: sprint_name
in: body
type: string
description: The upcoming sprint name for the agenda header.
steps:
- name: get-backlog
type: call
call: jira.search-backlog
with:
board_id: '{{board_id}}'
- name: post-agenda
type: call
call: msteams.post-sprint-agenda
with:
channel_id: product-team
text: 'Sprint Planning Agenda: {{sprint_name}} | Board: {{board_id}} | Total backlog: {{get-backlog.total_count}} | Unestimated: {{get-backlog.unestimated}} | P1 items: {{get-backlog.priority_count}}'
consumes:
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: backlog-issues
path: /search
inputParameters:
- name: board_id
in: query
operations:
- name: search-backlog
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: team-messages
path: /teams/technology/channels/product-team/messages
operations:
- name: post-sprint-agenda
method: POST
After a resolved P1 incident, creates a structured post-mortem page in Confluence from ServiceNow incident data and notifies the engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Confluence Incident Post-Mortem Publisher
description: After a resolved P1 incident, creates a structured post-mortem page in Confluence from ServiceNow incident data and notifies the engineering team via Microsoft Teams.
tags:
- itsm
- servicenow
- confluence
- microsoft-teams
- post-mortem
- incident-response
capability:
exposes:
- type: mcp
namespace: post-mortem
port: 8080
tools:
- name: publish-post-mortem
description: Given a resolved ServiceNow P1 incident, retrieve incident timeline and resolution notes, create a structured post-mortem page in Confluence, and notify the engineering team via Teams.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow P1 incident number to document.
- name: confluence_space_key
in: body
type: string
description: The Confluence space key for the post-mortem library (e.g., ITOPS).
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
- name: create-pm-page
type: call
call: confluence.create-page
with:
space_key: '{{confluence_space_key}}'
title: 'Post-Mortem: {{get-incident.short_description}} ({{incident_number}})'
body: '**Incident:** {{incident_number}}
**Summary:** {{get-incident.short_description}}
**Duration:** {{get-incident.resolution_time}}
**Impact:** {{get-incident.business_impact}}
**Root Cause:** {{get-incident.cause}}
**Resolution:** {{get-incident.close_notes}}'
- name: notify-eng
type: call
call: msteams.post-pm-notification
with:
channel_id: engineering
text: 'Post-Mortem Published | Incident: {{incident_number}} | {{get-incident.short_description}} | Confluence: {{create-pm-page.url}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://citi.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{{incident_number}}
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: confluence
baseUri: https://citi.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.ms_graph_token
resources:
- name: eng-messages
path: /teams/engineering/channels/general/messages
operations:
- name: post-pm-notification
method: POST
Retrieves employees with incomplete annual benefits enrollment from Workday and sends targeted reminders via Microsoft Teams to employees and their HR business partners.
naftiko: '0.5'
info:
label: Workday Benefits Enrollment Status Reminder
description: Retrieves employees with incomplete annual benefits enrollment from Workday and sends targeted reminders via Microsoft Teams to employees and their HR business partners.
tags:
- hr
- workday
- microsoft-teams
- benefits
- enrollment
capability:
exposes:
- type: mcp
namespace: benefits-enrollment
port: 8080
tools:
- name: send-enrollment-reminders
description: During open enrollment, retrieve all employees who have not completed benefits elections in Workday and broadcast reminder messages via Microsoft Teams to drive completion before the deadline.
inputParameters:
- name: enrollment_period_id
in: body
type: string
description: The Workday benefits enrollment period identifier.
- name: deadline_date
in: body
type: string
description: The enrollment deadline in YYYY-MM-DD format.
steps:
- name: get-incomplete
type: call
call: workday.get-incomplete-elections
with:
enrollment_period: '{{enrollment_period_id}}'
- name: send-reminder
type: call
call: msteams.send-benefits-reminder
with:
channel_id: hr-announcements
text: 'Benefits Enrollment Reminder | Period: {{enrollment_period_id}} | Deadline: {{deadline_date}} | {{get-incomplete.count}} employees have not yet completed enrollment. Please log in to Workday to complete your benefit elections.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: benefit-elections
path: /benefitElections
inputParameters:
- name: enrollment_period
in: query
operations:
- name: get-incomplete-elections
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: hr-messages
path: /teams/hr/channels/announcements/messages
operations:
- name: send-benefits-reminder
method: POST
Returns a headcount snapshot by department and cost center from Workday for monthly payroll reconciliation and regulatory reporting.
naftiko: '0.5'
info:
label: Workday Payroll Headcount Snapshot
description: Returns a headcount snapshot by department and cost center from Workday for monthly payroll reconciliation and regulatory reporting.
tags:
- hr
- finance
- workday
- payroll
- headcount
capability:
exposes:
- type: mcp
namespace: hr-finance
port: 8080
tools:
- name: get-payroll-headcount
description: Returns all active employees grouped by department, cost center, and employment type from Workday. Use for monthly payroll reconciliation, finance cost allocation, and regulatory headcount reporting.
call: workday.get-workers
outputParameters:
- name: employees
type: array
mapping: $.data
items:
- name: worker_id
type: string
mapping: $.workerId
- name: full_name
type: string
mapping: $.fullName
- name: department
type: string
mapping: $.department
- name: cost_center
type: string
mapping: $.costCenter
- name: employment_type
type: string
mapping: $.employmentType
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: get-workers
method: GET
Triggers a scheduled Power BI dataset refresh for the regulatory capital and liquidity reporting dashboard, pulling data from Snowflake for submission readiness.
naftiko: '0.5'
info:
label: Power BI Regulatory Reporting Dashboard Refresh
description: Triggers a scheduled Power BI dataset refresh for the regulatory capital and liquidity reporting dashboard, pulling data from Snowflake for submission readiness.
tags:
- analytics
- power-bi
- snowflake
- reporting
- regulatory
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: refresh-regulatory-dashboard
description: Trigger an on-demand or scheduled Power BI dataset refresh for the regulatory capital and liquidity reporting dashboard. Use before submission deadlines or for executive review.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID for the regulatory reporting dashboard.
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: dataset-refreshes
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Orchestrates the monthly general ledger period close sequence in SAP S/4HANA, running variance checks, posting journal adjustments, and notifying the controller team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP General Ledger Period Close Orchestrator
description: Orchestrates the monthly general ledger period close sequence in SAP S/4HANA, running variance checks, posting journal adjustments, and notifying the controller team via Microsoft Teams.
tags:
- finance
- sap
- microsoft-teams
- period-close
- general-ledger
capability:
exposes:
- type: mcp
namespace: gl-period-close
port: 8080
tools:
- name: run-period-close
description: Initiate the monthly GL period close for a given company code and fiscal period in SAP S/4HANA. Run variance checks and notify the controller team via Teams upon completion.
inputParameters:
- name: company_code
in: body
type: string
description: The SAP company code for the period close (e.g., 1000).
- name: fiscal_period
in: body
type: string
description: The fiscal period in YYYYMM format (e.g., 202603).
steps:
- name: close-period
type: call
call: sap.close-fiscal-period
with:
company_code: '{{company_code}}'
fiscal_period: '{{fiscal_period}}'
- name: notify-controller
type: call
call: msteams.post-close-notification
with:
channel_id: finance-controllers
text: 'Period close initiated for Company Code {{company_code}}, Period {{fiscal_period}}. Status: {{close-period.status}}. Run ID: {{close-period.run_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://citi-s4.sap.com/sap/opu/odata/sap/FAR_ACCRUAL_API_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: fiscal-periods
path: /FiscalPeriodCloseSet
operations:
- name: close-fiscal-period
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: channel-messages
path: /teams/finance/channels/controllers/messages
operations:
- name: post-close-notification
method: POST
Retrieves open job requisitions from Workday and posts them to LinkedIn Recruiter, ensuring Citi's talent pipeline remains current across both platforms.
naftiko: '0.5'
info:
label: Workday Talent Acquisition Job Posting Sync
description: Retrieves open job requisitions from Workday and posts them to LinkedIn Recruiter, ensuring Citi's talent pipeline remains current across both platforms.
tags:
- hr
- workday
- linkedin
- recruiting
- talent-acquisition
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: sync-job-postings-to-linkedin
description: Retrieve all open job requisitions from Workday and create or update corresponding LinkedIn job postings to maintain accurate and current talent pipeline visibility.
inputParameters:
- name: requisition_status
in: body
type: string
description: Filter Workday requisitions by status (e.g., Open, Approved).
steps:
- name: get-requisitions
type: call
call: workday.get-job-requisitions
with:
status: '{{requisition_status}}'
- name: post-to-linkedin
type: call
call: linkedin.create-job-posting
with:
company_id: citi
title: '{{get-requisitions.job_title}}'
description: '{{get-requisitions.job_description}}'
location: '{{get-requisitions.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: job-requisitions
path: /jobRequisitions
inputParameters:
- name: status
in: query
operations:
- name: get-job-requisitions
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
Processes incoming vendor invoices in SAP S/4HANA, matches them against approved purchase orders in SAP Ariba, and flags unmatched invoices via ServiceNow for AP team resolution.
naftiko: '0.5'
info:
label: Vendor Invoice Processing and PO Match
description: Processes incoming vendor invoices in SAP S/4HANA, matches them against approved purchase orders in SAP Ariba, and flags unmatched invoices via ServiceNow for AP team resolution.
tags:
- finance
- sap
- sap-ariba
- servicenow
- accounts-payable
- invoice-processing
capability:
exposes:
- type: mcp
namespace: ap-processing
port: 8080
tools:
- name: process-vendor-invoice
description: Given an invoice number and vendor ID, retrieve invoice data from SAP S/4HANA, match against the Ariba PO, and open a ServiceNow discrepancy task if amounts or line items do not align.
inputParameters:
- name: invoice_number
in: body
type: string
description: The vendor invoice number to process.
- name: vendor_id
in: body
type: string
description: The SAP vendor ID for the submitting vendor.
steps:
- name: get-invoice
type: call
call: sap-ap.get-invoice
with:
invoice_number: '{{invoice_number}}'
- name: get-po
type: call
call: sap-ariba.get-po
with:
vendor_id: '{{vendor_id}}'
invoice_number: '{{invoice_number}}'
- name: flag-discrepancy
type: call
call: servicenow.create-ap-task
with:
short_description: 'Invoice discrepancy: {{invoice_number}} | Vendor: {{vendor_id}}'
invoice_amount: '{{get-invoice.total_amount}}'
po_amount: '{{get-po.total_amount}}'
assigned_group: AP_Team
consumes:
- type: http
namespace: sap-ap
baseUri: https://citi-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
inputParameters:
- name: invoice_number
in: query
operations:
- name: get-invoice
method: GET
- type: http
namespace: sap-ariba
baseUri: https://openapi.ariba.com/api/purchase-orders/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: purchase-orders
path: /orders
inputParameters:
- name: vendor_id
in: query
- name: invoice_number
in: query
operations:
- name: get-po
method: GET
- type: http
namespace: servicenow
baseUri: https://citi.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: ap-tasks
path: /table/sc_task
operations:
- name: create-ap-task
method: POST
Scans GitHub Advanced Security code scanning alerts for banking application repositories and creates Jira security tickets for critical CVEs, notifying the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub DevSecOps Vulnerability Triage
description: Scans GitHub Advanced Security code scanning alerts for banking application repositories and creates Jira security tickets for critical CVEs, notifying the security team via Microsoft Teams.
tags:
- security
- github
- jira
- microsoft-teams
- vulnerability-management
- devsecops
capability:
exposes:
- type: mcp
namespace: devsecops
port: 8080
tools:
- name: triage-security-alerts
description: Query GitHub Advanced Security for critical and high-severity code scanning alerts across a banking application repository and create Jira tickets for each unresolved finding, alerting the security team via Teams.
inputParameters:
- name: repo
in: body
type: string
description: 'The GitHub repository to scan (format: org/repo).'
- name: min_severity
in: body
type: string
description: 'Minimum severity threshold: critical or high.'
steps:
- name: get-alerts
type: call
call: github.get-scanning-alerts
with:
repo: '{{repo}}'
severity: '{{min_severity}}'
- name: create-sec-ticket
type: call
call: jira.create-security-issue
with:
project_key: SEC
issuetype: Security
summary: '[{{min_severity}}] Vulnerability: {{get-alerts.rule_name}} in {{repo}}'
description: 'CVE: {{get-alerts.cve_id}}
Repo: {{repo}}
File: {{get-alerts.location_path}}
URL: {{get-alerts.html_url}}'
- name: alert-security-team
type: call
call: msteams.send-sec-alert
with:
channel_id: security-engineering
text: 'Security Alert | {{min_severity}} | {{repo}} | {{get-alerts.rule_name}} | Jira: {{create-sec-ticket.key}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: scanning-alerts
path: /repos/{{repo}}/code-scanning/alerts
inputParameters:
- name: repo
in: path
- name: severity
in: query
operations:
- name: get-scanning-alerts
method: GET
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: security-issues
path: /issue
operations:
- name: create-security-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: security-messages
path: /teams/security/channels/engineering/messages
operations:
- name: send-sec-alert
method: POST
When a potential regulatory compliance breach is flagged in ServiceNow, creates a Jira compliance investigation ticket and notifies the Chief Compliance Officer via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Compliance Incident Reporter
description: When a potential regulatory compliance breach is flagged in ServiceNow, creates a Jira compliance investigation ticket and notifies the Chief Compliance Officer via Microsoft Teams.
tags:
- compliance
- servicenow
- jira
- microsoft-teams
- regulatory
- financial-compliance
capability:
exposes:
- type: mcp
namespace: compliance-ops
port: 8080
tools:
- name: report-compliance-incident
description: Given a ServiceNow compliance incident ID, retrieve the details, create a Jira investigation ticket in the Compliance project, and notify the CCO via Teams for immediate awareness.
inputParameters:
- name: incident_id
in: body
type: string
description: The ServiceNow compliance incident ID.
- name: regulation_type
in: body
type: string
description: The regulation category (e.g., AML, KYC, SOX, GDPR).
steps:
- name: get-incident
type: call
call: servicenow.get-compliance-incident
with:
incident_id: '{{incident_id}}'
- name: create-jira-ticket
type: call
call: jira.create-issue
with:
project_key: COMP
issuetype: Compliance Incident
summary: '[{{regulation_type}}] Compliance breach: {{get-incident.short_description}}'
description: 'ServiceNow: {{incident_id}}
Regulation: {{regulation_type}}
Details: {{get-incident.description}}
Reported by: {{get-incident.reported_by}}'
- name: notify-cco
type: call
call: msteams.send-cco-alert
with:
channel_id: compliance-executive
text: 'COMPLIANCE INCIDENT REPORTED | {{regulation_type}} | {{get-incident.short_description}} | Jira: {{create-jira-ticket.key}} | SN: {{incident_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://citi.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: compliance-incidents
path: /table/incident/{{incident_id}}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-compliance-incident
method: GET
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: 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.ms_graph_token
resources:
- name: compliance-messages
path: /teams/compliance/channels/executive/messages
operations:
- name: send-cco-alert
method: POST
Retrieves Datadog APM latency metrics for critical banking APIs and posts a weekly performance digest to the platform engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: Datadog APM Latency Anomaly Digest
description: Retrieves Datadog APM latency metrics for critical banking APIs and posts a weekly performance digest to the platform engineering Microsoft Teams channel.
tags:
- observability
- datadog
- microsoft-teams
- performance
- apm
capability:
exposes:
- type: mcp
namespace: apm-reporting
port: 8080
tools:
- name: digest-api-latency
description: Retrieve p50, p95, and p99 latency metrics for a set of critical banking APIs from Datadog APM and post a weekly performance digest to the platform engineering Teams channel.
inputParameters:
- name: service_tag
in: body
type: string
description: The Datadog service tag to filter APM metrics (e.g., service:payments-api).
- name: reporting_week
in: body
type: string
description: The week label for the digest (e.g., 'Week of 2026-03-17').
steps:
- name: get-latency-metrics
type: call
call: datadog.get-apm-metrics
with:
service_tag: '{{service_tag}}'
- name: post-digest
type: call
call: msteams.post-apm-digest
with:
channel_id: platform-engineering
text: 'API Latency Digest | {{reporting_week}} | Service: {{service_tag}} | p50: {{get-latency-metrics.p50_ms}}ms | p95: {{get-latency-metrics.p95_ms}}ms | p99: {{get-latency-metrics.p99_ms}}ms | Error Rate: {{get-latency-metrics.error_rate_pct}}%'
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: apm-metrics
path: /query
inputParameters:
- name: service_tag
in: query
operations:
- name: get-apm-metrics
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: platform-messages
path: /teams/platform-engineering/channels/general/messages
operations:
- name: post-apm-digest
method: POST
Executes automated data quality assertions on Snowflake trading and position data tables, opening Jira tickets for any rows that breach null rate or value range thresholds.
naftiko: '0.5'
info:
label: Snowflake Trading Data Quality Check
description: Executes automated data quality assertions on Snowflake trading and position data tables, opening Jira tickets for any rows that breach null rate or value range thresholds.
tags:
- data
- snowflake
- jira
- data-quality
- trading
capability:
exposes:
- type: mcp
namespace: trading-data-quality
port: 8080
tools:
- name: check-trading-data-quality
description: Given a Snowflake trading or position table name and quality thresholds, run null rate and value range assertions. If breached, open a Jira data quality ticket for the data engineering team.
inputParameters:
- name: table_name
in: body
type: string
description: The fully qualified Snowflake table name (e.g., PROD.TRADING.POSITIONS).
- name: null_threshold_pct
in: body
type: number
description: Maximum acceptable null percentage for key columns.
steps:
- name: run-assertions
type: call
call: snowflake.run-quality-assertions
with:
table_name: '{{table_name}}'
null_threshold: '{{null_threshold_pct}}'
- name: open-dq-ticket
type: call
call: jira.create-dq-ticket
with:
project_key: DATA
issuetype: Bug
summary: Data quality breach in {{table_name}}
description: 'Table: {{table_name}}
Null Rate: {{run-assertions.null_rate_pct}}%
Threshold: {{null_threshold_pct}}%
Affected Rows: {{run-assertions.affected_row_count}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://citi.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: sql-statements
path: /statements
operations:
- name: run-quality-assertions
method: POST
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: dq-tickets
path: /issue
operations:
- name: create-dq-ticket
method: POST
Retrieves all ServiceNow change requests pending CAB board approval for the upcoming change window and posts a digest to the IT change management Microsoft Teams channel.
naftiko: '0.5'
info:
label: ServiceNow IT Change Request Approval Digest
description: Retrieves all ServiceNow change requests pending CAB board approval for the upcoming change window and posts a digest to the IT change management Microsoft Teams channel.
tags:
- itsm
- servicenow
- microsoft-teams
- change-management
- approval
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: digest-cab-changes
description: Retrieve all ServiceNow change requests scheduled for the upcoming CAB approval window and post a risk-sorted digest to the IT change management Teams channel.
inputParameters:
- name: change_date
in: body
type: string
description: The change window date in YYYY-MM-DD format.
steps:
- name: get-pending-changes
type: call
call: servicenow.get-cab-changes
with:
planned_date: '{{change_date}}'
- name: post-digest
type: call
call: msteams.post-cab-digest
with:
channel_id: it-change-management
text: 'CAB Change Digest | Window: {{change_date}} | Changes: {{get-pending-changes.count}} | High Risk: {{get-pending-changes.high_risk_count}} | Normal: {{get-pending-changes.normal_count}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://citi.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change-requests
path: /table/change_request
inputParameters:
- name: planned_date
in: query
operations:
- name: get-cab-changes
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: change-messages
path: /teams/it/channels/change-management/messages
operations:
- name: post-cab-digest
method: POST
Enriches new Salesforce leads for corporate banking prospects with firmographic data and routes them to the correct relationship manager, notifying via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Corporate Banking CRM Lead Routing
description: Enriches new Salesforce leads for corporate banking prospects with firmographic data and routes them to the correct relationship manager, notifying via Microsoft Teams.
tags:
- sales
- salesforce
- microsoft-teams
- crm
- lead-management
- corporate-banking
capability:
exposes:
- type: mcp
namespace: crm-lead-routing
port: 8080
tools:
- name: route-corporate-lead
description: Given a Salesforce lead ID for a corporate banking prospect, retrieve the lead, assign it to the appropriate relationship manager based on industry and revenue band, and notify via Teams.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID for the corporate banking prospect.
steps:
- name: get-lead
type: call
call: salesforce-lead.get-lead
with:
lead_id: '{{lead_id}}'
- name: assign-lead
type: call
call: salesforce-update.update-lead-owner
with:
lead_id: '{{lead_id}}'
status: Assigned
- name: notify-rm
type: call
call: msteams.notify-rm
with:
channel_id: corporate-banking-rms
text: 'New Corporate Lead Assigned | Company: {{get-lead.company}} | Contact: {{get-lead.first_name}} {{get-lead.last_name}} | Title: {{get-lead.title}} | Lead: {{lead_id}}'
consumes:
- type: http
namespace: salesforce-lead
baseUri: https://citi.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-update
baseUri: https://citi.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: lead-updates
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead-owner
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: rm-messages
path: /teams/corporate-banking/channels/leads/messages
operations:
- name: notify-rm
method: POST
Queries Salesforce for high-value institutional client relationships with contract renewals due within 90 days and posts a prioritized alert to the relationship management Microsoft Teams channel.
naftiko: '0.5'
info:
label: Salesforce Client Relationship Renewal Alert
description: Queries Salesforce for high-value institutional client relationships with contract renewals due within 90 days and posts a prioritized alert to the relationship management Microsoft Teams channel.
tags:
- sales
- salesforce
- microsoft-teams
- renewals
- account-management
- institutional-banking
capability:
exposes:
- type: mcp
namespace: rm-renewals
port: 8080
tools:
- name: alert-client-renewals
description: Query Salesforce for institutional banking client contracts expiring within a given number of days and post a ranked renewal alert to the relationship management Teams channel.
inputParameters:
- name: days_ahead
in: body
type: integer
description: Number of days ahead to scan for expiring client contracts.
- name: min_revenue_usd
in: body
type: number
description: Minimum annual revenue threshold to include in the alert.
steps:
- name: get-expiring-contracts
type: call
call: salesforce.get-expiring-contracts
with:
days_ahead: '{{days_ahead}}'
min_revenue: '{{min_revenue_usd}}'
- name: post-renewal-alert
type: call
call: msteams.post-renewal-alert
with:
channel_id: relationship-management
text: 'Client Renewal Alert | Expiring in {{days_ahead}} days | Contracts: {{get-expiring-contracts.count}} | Total Revenue at Risk: ${{get-expiring-contracts.total_revenue}} | Top Client: {{get-expiring-contracts.top_client}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://citi.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: expiring-contracts
path: /query
inputParameters:
- name: days_ahead
in: query
- name: min_revenue
in: query
operations:
- name: get-expiring-contracts
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: rm-messages
path: /teams/institutional-banking/channels/rm/messages
operations:
- name: post-renewal-alert
method: POST
Initiates the annual compensation review cycle in Workday for a given organization unit, creates planning Jira tasks for HR business partners, and notifies them via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Compensation Review Cycle Trigger
description: Initiates the annual compensation review cycle in Workday for a given organization unit, creates planning Jira tasks for HR business partners, and notifies them via Microsoft Teams.
tags:
- hr
- workday
- jira
- microsoft-teams
- compensation
- performance-management
capability:
exposes:
- type: mcp
namespace: compensation-review
port: 8080
tools:
- name: trigger-compensation-review
description: Given a Workday organization unit and review cycle name, initiate the compensation review process, create Jira planning tasks for each HR BP, and notify the HR leadership team via Teams.
inputParameters:
- name: org_unit_id
in: body
type: string
description: The Workday organization unit ID for the compensation review.
- name: review_cycle_name
in: body
type: string
description: The name of the compensation review cycle (e.g., '2026 Annual Review').
- name: deadline
in: body
type: string
description: The review completion deadline in YYYY-MM-DD format.
steps:
- name: initiate-review
type: call
call: workday.initiate-compensation-review
with:
org_unit_id: '{{org_unit_id}}'
review_cycle_name: '{{review_cycle_name}}'
- name: create-planning-task
type: call
call: jira.create-hr-task
with:
project_key: HROP
issuetype: Task
summary: 'Compensation review cycle: {{review_cycle_name}} - {{org_unit_id}}'
due_date: '{{deadline}}'
- name: notify-hr-team
type: call
call: msteams.notify-hr
with:
channel_id: hr-leadership
text: 'Compensation Review Initiated | Cycle: {{review_cycle_name}} | Org: {{org_unit_id}} | Deadline: {{deadline}} | Jira Task: {{create-planning-task.key}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation-reviews
path: /compensationReviews
operations:
- name: initiate-compensation-review
method: POST
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: hr-tasks
path: /issue
operations:
- name: create-hr-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: hr-messages
path: /teams/hr/channels/leadership/messages
operations:
- name: notify-hr
method: POST
Syncs HubSpot lead nurture workflow contacts that have reached a buying stage into Salesforce as qualified leads, triggering corporate banking relationship manager assignment.
naftiko: '0.5'
info:
label: HubSpot Marketing Lead Nurture to Salesforce Sync
description: Syncs HubSpot lead nurture workflow contacts that have reached a buying stage into Salesforce as qualified leads, triggering corporate banking relationship manager assignment.
tags:
- marketing
- hubspot
- salesforce
- lead-management
- corporate-banking
- crm
capability:
exposes:
- type: mcp
namespace: lead-nurture-sync
port: 8080
tools:
- name: sync-nurtured-leads
description: Retrieve contacts from a HubSpot lead nurture workflow that have reached MQL status and create qualified leads in Salesforce for corporate banking RM assignment and follow-up.
inputParameters:
- name: hubspot_workflow_id
in: body
type: string
description: The HubSpot workflow ID for the lead nurture sequence.
- name: mql_stage
in: body
type: string
description: The HubSpot lifecycle stage that qualifies a contact as MQL (e.g., 'marketingqualifiedlead').
steps:
- name: get-mql-contacts
type: call
call: hubspot.get-workflow-contacts
with:
workflow_id: '{{hubspot_workflow_id}}'
lifecycle_stage: '{{mql_stage}}'
- name: create-sf-leads
type: call
call: salesforce.create-lead
with:
first_name: '{{get-mql-contacts.first_name}}'
last_name: '{{get-mql-contacts.last_name}}'
company: '{{get-mql-contacts.company}}'
email: '{{get-mql-contacts.email}}'
lead_source: HubSpot Nurture
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: workflow-contacts
path: /objects/contacts
inputParameters:
- name: workflow_id
in: query
- name: lifecycle_stage
in: query
operations:
- name: get-workflow-contacts
method: GET
- type: http
namespace: salesforce
baseUri: https://citi.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
Triggers a Terraform Cloud workspace run for network infrastructure changes in Citi's cloud environments and creates a ServiceNow change record to gate the deployment approval.
naftiko: '0.5'
info:
label: Terraform Cloud Network Provisioning Request
description: Triggers a Terraform Cloud workspace run for network infrastructure changes in Citi's cloud environments and creates a ServiceNow change record to gate the deployment approval.
tags:
- cloud
- terraform
- servicenow
- infrastructure
- network
capability:
exposes:
- type: mcp
namespace: network-provisioning
port: 8080
tools:
- name: request-network-provisioning
description: Given a Terraform Cloud workspace ID and change description, trigger an infrastructure plan run for network changes and create a ServiceNow change request for CAB board approval.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID for the network provisioning run.
- name: change_description
in: body
type: string
description: Description of the network infrastructure change.
- name: environment
in: body
type: string
description: Target environment (e.g., prod, staging, dr).
steps:
- name: trigger-run
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
message: '{{change_description}} [env: {{environment}}]'
- name: create-change
type: call
call: servicenow.create-change-request
with:
short_description: 'Network provisioning: {{workspace_id}} in {{environment}}'
description: '{{change_description}}
Terraform Run: {{trigger-run.run_id}}'
category: network_infrastructure
risk: high
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://citi.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change-requests
path: /table/change_request
operations:
- name: create-change-request
method: POST
When a new regulatory document is uploaded to SharePoint, uses the Anthropic API to generate an executive summary and action item list, posting the output to the compliance Microsoft Teams channel.
naftiko: '0.5'
info:
label: AI-Assisted Regulatory Document Summarizer
description: When a new regulatory document is uploaded to SharePoint, uses the Anthropic API to generate an executive summary and action item list, posting the output to the compliance Microsoft Teams channel.
tags:
- ai
- sharepoint
- anthropic
- microsoft-teams
- compliance
- regulatory
capability:
exposes:
- type: mcp
namespace: reg-doc-ai
port: 8080
tools:
- name: summarize-regulatory-document
description: Given a SharePoint document ID for a new regulatory filing or guidance update, retrieve the document text and use Claude to generate an executive summary with required action items, then post to the compliance Teams channel.
inputParameters:
- name: document_id
in: body
type: string
description: The SharePoint document unique ID.
- name: site_id
in: body
type: string
description: The SharePoint site ID where the regulatory document is stored.
- name: document_title
in: body
type: string
description: The title of the regulatory document.
steps:
- name: get-document
type: call
call: sharepoint.get-document-content
with:
site_id: '{{site_id}}'
document_id: '{{document_id}}'
- name: generate-summary
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'You are a financial regulatory compliance analyst. Summarize the following regulatory document for executive review. Include: 1) Key requirements, 2) Compliance deadlines, 3) Required action items for a global bank. Document: {{get-document.content}}'
- name: post-summary
type: call
call: msteams.post-reg-summary
with:
channel_id: compliance-team
text: 'Regulatory Document Summary: {{document_title}}
{{generate-summary.content}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: document-content
path: /sites/{{site_id}}/drive/items/{{document_id}}/content
inputParameters:
- name: site_id
in: path
- name: document_id
in: path
operations:
- name: get-document-content
method: GET
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: create-message
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.ms_graph_token
resources:
- name: compliance-messages
path: /teams/compliance/channels/general/messages
operations:
- name: post-reg-summary
method: POST
When a Datadog monitor fires for a banking application, creates a ServiceNow P1 incident, opens a Jira investigation issue, and alerts the on-call engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Datadog Application Performance Alert Handler
description: When a Datadog monitor fires for a banking application, creates a ServiceNow P1 incident, opens a Jira investigation issue, and alerts the on-call engineering team via Microsoft Teams.
tags:
- observability
- datadog
- servicenow
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: app-observability
port: 8080
tools:
- name: handle-application-alert
description: Given a Datadog monitor alert for a critical banking application, create a ServiceNow P1 incident, link a Jira investigation issue, and page the on-call team via Teams.
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 Datadog monitor name.
- name: application_name
in: body
type: string
description: The name of the affected banking application.
- name: severity
in: body
type: string
description: 'Alert severity: CRITICAL or WARNING.'
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: '[{{severity}}] {{application_name}} performance degradation: {{monitor_name}}'
category: application_performance
priority: '1'
assigned_group: Application_Support
- name: create-jira-issue
type: call
call: jira.create-issue
with:
project_key: APPOPS
issuetype: Incident
summary: 'App Alert: {{application_name}} - {{monitor_name}}'
description: 'Monitor ID: {{monitor_id}}
Severity: {{severity}}
ServiceNow: {{create-snow-incident.number}}'
- name: alert-oncall
type: call
call: msteams.send-oncall-alert
with:
channel_id: oncall-engineering
text: 'P1 APP ALERT | {{application_name}} | {{monitor_name}} | Severity: {{severity}} | SNOW: {{create-snow-incident.number}} | Jira: {{create-jira-issue.key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://citi.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: 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.ms_graph_token
resources:
- name: oncall-messages
path: /teams/engineering/channels/oncall/messages
operations:
- name: send-oncall-alert
method: POST
Looks up a SAP S/4HANA purchase order by PO number and returns current approval status, vendor details, and total value for procurement and accounts payable queries.
naftiko: '0.5'
info:
label: SAP Purchase Order Status Lookup
description: Looks up a SAP S/4HANA purchase order by PO number and returns current approval status, vendor details, and total value for procurement and accounts payable queries.
tags:
- finance
- sap
- procurement
- erp
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: Given a SAP purchase order number, retrieve the PO header status, vendor name, total amount, and currency from SAP S/4HANA. Use for AP reconciliation and procurement approvals.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number (e.g., 4500001234).
call: sap.get-po
with:
po_number: '{{po_number}}'
outputParameters:
- name: status
type: string
mapping: $.d.OverallStatus
- name: vendor
type: string
mapping: $.d.Supplier.CompanyName
- name: total_value
type: string
mapping: $.d.TotalAmount
- name: currency
type: string
mapping: $.d.TransactionCurrency
consumes:
- type: http
namespace: sap
baseUri: https://citi-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: purchase-orders
path: /A_PurchaseOrder('{{po_number}}')
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
outputRawFormat: xml
Retrieves submitted expense reports from SAP Concur and creates Jira audit tasks for finance compliance when reports exceed policy thresholds or contain restricted categories.
naftiko: '0.5'
info:
label: SAP Concur Expense Policy Violation Audit
description: Retrieves submitted expense reports from SAP Concur and creates Jira audit tasks for finance compliance when reports exceed policy thresholds or contain restricted categories.
tags:
- finance
- sap-concur
- jira
- expense-management
- compliance
- audit
capability:
exposes:
- type: mcp
namespace: expense-audit
port: 8080
tools:
- name: audit-expense-policy-violations
description: Retrieve expense reports from SAP Concur for a given period and automatically create Jira compliance audit tasks for any reports exceeding the single-transaction threshold or containing flagged categories.
inputParameters:
- name: period
in: body
type: string
description: The expense period to audit (e.g., '2026-03').
- name: threshold_usd
in: body
type: number
description: Single-transaction threshold in USD that triggers a policy flag.
steps:
- name: get-flagged-reports
type: call
call: concur.get-expense-reports
with:
period: '{{period}}'
exceeds_amount: '{{threshold_usd}}'
- name: create-audit-task
type: call
call: jira.create-audit-task
with:
project_key: FIN
issuetype: Task
summary: 'Expense policy violation: {{get-flagged-reports.report_name}} ({{period}})'
description: 'Report ID: {{get-flagged-reports.report_id}}
Submitter: {{get-flagged-reports.submitted_by}}
Amount: {{get-flagged-reports.total}}
Threshold: {{threshold_usd}}'
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: period
in: query
- name: exceeds_amount
in: query
operations:
- name: get-expense-reports
method: GET
- type: http
namespace: jira
baseUri: https://citi.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: audit-tasks
path: /issue
operations:
- name: create-audit-task
method: POST
Processes a home loan application by running credit checks, property valuation, and submitting for approval with broker notification.
naftiko: '0.5'
info:
label: Home Loan Application Pipeline
description: Processes a home loan application by running credit checks, property valuation, and submitting for approval with broker notification.
tags:
- lending
- home-loans
- credit-check
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: home-loan-application
port: 8080
tools:
- name: run-home-loan-application-pipeline
description: Processes a home loan application by running credit checks, property valuation, and submitting for approval with broker notification.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Retrieves insurance policy details from CommInsure including coverage and premium.
naftiko: '0.5'
info:
label: CommInsure Policy Lookup
description: Retrieves insurance policy details from CommInsure including coverage and premium.
tags:
- insurance
- comminsure
capability:
exposes:
- type: mcp
namespace: insurance
port: 8080
tools:
- name: get-data
description: Retrieves insurance policy details from CommInsure including coverage and premium.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: comminsure.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: comminsure
baseUri: https://api.internal.commbank.com.au/insurance/v1
authentication:
type: bearer
token: $secrets.comminsure_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Retrieves application performance metrics from Dynatrace, returning response time, failure rate, throughput, and user satisfaction score.
naftiko: '0.5'
info:
label: Dynatrace Application Performance Lookup
description: Retrieves application performance metrics from Dynatrace, returning response time, failure rate, throughput, and user satisfaction score.
tags:
- monitoring
- apm
- dynatrace
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-performance
description: Look up application performance in Dynatrace. Returns response time, failure rate, throughput, and satisfaction score.
inputParameters:
- name: entity_id
in: body
type: string
description: The Dynatrace application entity ID.
call: dynatrace.get-app-metrics
with:
entity_id: '{{entity_id}}'
outputParameters:
- name: response_time_ms
type: number
mapping: $.result[0].data[0].values.avg
- name: failure_rate
type: number
mapping: $.result[1].data[0].values.avg
- name: throughput
type: number
mapping: $.result[2].data[0].values.count
consumes:
- type: http
namespace: dynatrace
baseUri: https://commbank.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query
operations:
- name: get-app-metrics
method: POST
Retrieves the status of a ServiceNow change request, returning current state, approval status, planned start date, and risk assessment.
naftiko: '0.5'
info:
label: ServiceNow Change Request Status
description: Retrieves the status of a ServiceNow change request, returning current state, approval status, planned start date, and risk assessment.
tags:
- change-management
- servicenow
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: get-change-request
description: Look up a ServiceNow change request. Returns state, approval status, planned start, and risk assessment.
inputParameters:
- name: change_number
in: body
type: string
description: The ServiceNow change request number (e.g., CHG0012345).
call: servicenow.get-change
with:
change_number: '{{change_number}}'
outputParameters:
- name: state
type: string
mapping: $.result.state
- name: approval
type: string
mapping: $.result.approval
- name: planned_start
type: string
mapping: $.result.start_date
- name: risk
type: string
mapping: $.result.risk
consumes:
- type: http
namespace: servicenow
baseUri: https://commbank.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: get-change
method: GET
Manages Open Banking data sharing by validating consent, extracting account data, and serving via the CDR API.
naftiko: '0.5'
info:
label: Open Banking Data Sharing Pipeline
description: Manages Open Banking data sharing by validating consent, extracting account data, and serving via the CDR API.
tags:
- open-banking
- cdr
- consent-management
- servicenow
capability:
exposes:
- type: mcp
namespace: open-banking-data-sharing
port: 8080
tools:
- name: run-open-banking-data-sharing-pipeline
description: Manages Open Banking data sharing by validating consent, extracting account data, and serving via the CDR API.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: compliance.run-check
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: servicenow.create-incident
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
method: POST
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: create-incident
method: POST
Processes super fund rollovers by verifying member details, initiating transfer, and confirming with the member.
naftiko: '0.5'
info:
label: Superannuation Rollover Pipeline
description: Processes super fund rollovers by verifying member details, initiating transfer, and confirming with the member.
tags:
- superannuation
- colonial-first-state
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: superannuation-rollover
port: 8080
tools:
- name: run-superannuation-rollover-pipeline
description: Processes super fund rollovers by verifying member details, initiating transfer, and confirming with the member.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: cfs.get-fund
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: cfs
baseUri: https://api.internal.commbank.com.au/cfs/v1
authentication:
type: bearer
token: $secrets.cfs_token
resources:
- name: funds
path: /funds
operations:
- name: get-fund
method: GET
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Retrieves automated property valuation estimate for a given property address.
naftiko: '0.5'
info:
label: CBA Property Valuation Lookup
description: Retrieves automated property valuation estimate for a given property address.
tags:
- lending
- property-valuation
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: get-data
description: Retrieves automated property valuation estimate for a given property address.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: property_valuation.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: property_valuation
baseUri: https://api.internal.commbank.com.au/lending/v1
authentication:
type: bearer
token: $secrets.property_valuation_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Runs a data quality validation query against Teradata and returns row count, null percentage, and duplicate count for a given table.
naftiko: '0.5'
info:
label: Teradata Data Quality Check
description: Runs a data quality validation query against Teradata and returns row count, null percentage, and duplicate count for a given table.
tags:
- data-quality
- teradata
- data-governance
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: check-data-quality
description: Run data quality checks on a Teradata table. Returns row count, null percentage, and duplicate count.
inputParameters:
- name: database_name
in: body
type: string
description: The Teradata database name.
- name: table_name
in: body
type: string
description: The table name to validate.
- name: key_column
in: body
type: string
description: The primary key column for duplicate checking.
call: teradata.run-quality-check
with:
database: '{{database_name}}'
table: '{{table_name}}'
key_column: '{{key_column}}'
outputParameters:
- name: row_count
type: number
mapping: $.quality.rowCount
- name: null_pct
type: number
mapping: $.quality.nullPercentage
- name: duplicate_count
type: number
mapping: $.quality.duplicateCount
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.internal.commbank.com.au/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: quality
path: /quality/check
operations:
- name: run-quality-check
method: POST
Processes personal loan top-up requests by checking eligibility, running credit assessment, and disbursing funds.
naftiko: '0.5'
info:
label: Personal Loan Top-Up Pipeline
description: Processes personal loan top-up requests by checking eligibility, running credit assessment, and disbursing funds.
tags:
- lending
- personal-loans
- core-banking
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: personal-loan-top-up
port: 8080
tools:
- name: run-personal-loan-top-up-pipeline
description: Processes personal loan top-up requests by checking eligibility, running credit assessment, and disbursing funds.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
When a business loan application advances to document collection, generates required document checklist in ServiceNow, creates a SharePoint folder for uploads, and emails the applicant via Microsoft Outlook with upload instructions.
naftiko: '0.5'
info:
label: Loan Origination Document Pipeline
description: When a business loan application advances to document collection, generates required document checklist in ServiceNow, creates a SharePoint folder for uploads, and emails the applicant via Microsoft Outlook with upload instructions.
tags:
- lending
- loan-origination
- servicenow
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: business-lending
port: 8080
tools:
- name: initiate-doc-collection
description: Given a loan application ID, create the document checklist, provision storage, and notify the applicant.
inputParameters:
- name: application_id
in: body
type: string
description: The loan application identifier.
- name: applicant_email
in: body
type: string
description: The applicant's email address.
- name: loan_type
in: body
type: string
description: The loan type (e.g., commercial, equipment, property).
steps:
- name: create-checklist
type: call
call: servicenow.create-task
with:
short_description: 'Document collection: Application {{application_id}}'
category: loan_origination
description: 'Loan type: {{loan_type}}. Required documents per policy for {{loan_type}} loans.'
- name: create-folder
type: call
call: sharepoint.create-folder
with:
site_id: lending_docs
folder_path: Applications/{{application_id}}
- name: send-email
type: call
call: outlook.send-email
with:
to: '{{applicant_email}}'
subject: Document Upload Required - Loan Application {{application_id}}
body: 'Please upload your required documents to: {{create-folder.url}}. Your document checklist reference is {{create-checklist.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://commbank.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: 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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/{{from}}/sendMail
operations:
- name: send-email
method: POST
Processes debit card disputes by investigating the transaction, issuing provisional credit, and notifying the customer.
naftiko: '0.5'
info:
label: Debit Card Dispute Pipeline
description: Processes debit card disputes by investigating the transaction, issuing provisional credit, and notifying the customer.
tags:
- retail-banking
- disputes
- payments
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: debit-card-dispute
port: 8080
tools:
- name: run-debit-card-dispute-pipeline
description: Processes debit card disputes by investigating the transaction, issuing provisional credit, and notifying the customer.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: servicenow.create-incident
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: create-incident
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 regulatory breach notifications by assessing impact, filing with APRA, and notifying the board.
naftiko: '0.5'
info:
label: Regulatory Breach Notification Pipeline
description: Handles regulatory breach notifications by assessing impact, filing with APRA, and notifying the board.
tags:
- compliance
- apra
- regulatory
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: regulatory-breach-notification
port: 8080
tools:
- name: run-regulatory-breach-notification-pipe
description: Handles regulatory breach notifications by assessing impact, filing with APRA, and notifying the board.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: compliance.run-check
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
method: POST
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Retrieves a document from Box by file ID, returning file name, size, download URL, and last modified date.
naftiko: '0.5'
info:
label: Box Document Retrieval
description: Retrieves a document from Box by file ID, returning file name, size, download URL, and last modified date.
tags:
- document-management
- box
capability:
exposes:
- type: mcp
namespace: document-store
port: 8080
tools:
- name: get-document
description: Retrieve a document from Box by file ID. Returns file name, size, download URL, and last modified.
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: number
mapping: $.size
- name: download_url
type: string
mapping: $.shared_link.download_url
- 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 portfolio company details from x15 Ventures investment tracking.
naftiko: '0.5'
info:
label: x15 Ventures Portfolio Lookup
description: Retrieves portfolio company details from x15 Ventures investment tracking.
tags:
- innovation
- x15-ventures
capability:
exposes:
- type: mcp
namespace: innovation
port: 8080
tools:
- name: get-data
description: Retrieves portfolio company details from x15 Ventures investment tracking.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: x15_ventures.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: x15_ventures
baseUri: https://api.internal.commbank.com.au/innovation/v1
authentication:
type: bearer
token: $secrets.x15_ventures_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Looks up a SAP payment order by reference number and returns status, amount, currency, and beneficiary details for the payments operations team.
naftiko: '0.5'
info:
label: SAP Payment Order Status
description: Looks up a SAP payment order by reference number and returns status, amount, currency, and beneficiary details for the payments operations team.
tags:
- payments
- erp
- sap
- finance
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment-order
description: Look up a SAP payment order by reference number. Returns status, amount, currency, and beneficiary.
inputParameters:
- name: payment_ref
in: body
type: string
description: The SAP payment order reference number.
call: sap.get-payment
with:
payment_ref: '{{payment_ref}}'
outputParameters:
- name: status
type: string
mapping: $.d.PaymentStatus
- name: amount
type: string
mapping: $.d.Amount
- name: currency
type: string
mapping: $.d.Currency
- name: beneficiary
type: string
mapping: $.d.BeneficiaryName
consumes:
- type: http
namespace: sap
baseUri: https://commbank-s4.sap.com/sap/opu/odata/sap/FI_PAYMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: payment-orders
path: /A_PaymentOrder('{{payment_ref}}')
inputParameters:
- name: payment_ref
in: path
operations:
- name: get-payment
method: GET
Retrieves current home loan interest rates by product type and LVR band.
naftiko: '0.5'
info:
label: Home Loan Rate Lookup
description: Retrieves current home loan interest rates by product type and LVR band.
tags:
- lending
- home-loans
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: get-data
description: Retrieves current home loan interest rates by product type and LVR band.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: home_loans.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: home_loans
baseUri: https://api.internal.commbank.com.au/lending/v1
authentication:
type: bearer
token: $secrets.home_loans_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Retrieves fraud alert details from Splunk for a given transaction ID, returning risk score, alert category, and flagged patterns for the fraud operations team.
naftiko: '0.5'
info:
label: Transaction Fraud Alert Lookup
description: Retrieves fraud alert details from Splunk for a given transaction ID, returning risk score, alert category, and flagged patterns for the fraud operations team.
tags:
- fraud
- security
- splunk
- transaction-monitoring
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: get-fraud-alert
description: Look up a fraud alert by transaction ID in Splunk. Returns risk score, alert category, and flagged patterns.
inputParameters:
- name: transaction_id
in: body
type: string
description: The unique transaction identifier.
call: splunk.search-alert
with:
transaction_id: '{{transaction_id}}'
outputParameters:
- name: risk_score
type: number
mapping: $.results[0].risk_score
- name: alert_category
type: string
mapping: $.results[0].category
- name: flagged_patterns
type: string
mapping: $.results[0].patterns
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.internal.commbank.com.au:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs/export
operations:
- name: search-alert
method: POST
Certifies staff system access by pulling entitlements from SailPoint, routing reviews, and revoking uncertified access.
naftiko: '0.5'
info:
label: Staff Access Certification Pipeline
description: Certifies staff system access by pulling entitlements from SailPoint, routing reviews, and revoking uncertified access.
tags:
- security
- sailpoint
- access-certification
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: staff-access-certification
port: 8080
tools:
- name: run-staff-access-certification-pipeline
description: Certifies staff system access by pulling entitlements from SailPoint, routing reviews, and revoking uncertified access.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: sailpoint.get-identity
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: compliance.run-check
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: sailpoint
baseUri: https://commbank.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: identities
path: /identities
operations:
- name: get-identity
method: GET
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Retrieves metadata for a Tableau workbook including view count, last refresh time, and data source connection status.
naftiko: '0.5'
info:
label: Tableau Dashboard Lookup
description: Retrieves metadata for a Tableau workbook including view count, last refresh time, and data source connection status.
tags:
- analytics
- tableau
- reporting
capability:
exposes:
- type: mcp
namespace: bi-analytics
port: 8080
tools:
- name: get-workbook-info
description: Look up Tableau workbook metadata. Returns view count, last refresh time, and data source status.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID.
call: tableau.get-workbook
with:
workbook_id: '{{workbook_id}}'
outputParameters:
- name: name
type: string
mapping: $.workbook.name
- name: view_count
type: number
mapping: $.workbook.viewCount
- name: last_refresh
type: string
mapping: $.workbook.updatedAt
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.internal.commbank.com.au/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{{site_id}}/workbooks/{{workbook_id}}
inputParameters:
- name: workbook_id
in: path
operations:
- name: get-workbook
method: GET
Conducts wealth portfolio reviews by pulling positions from Colonial First State, computing performance, and emailing the advisor.
naftiko: '0.5'
info:
label: Wealth Portfolio Review Pipeline
description: Conducts wealth portfolio reviews by pulling positions from Colonial First State, computing performance, and emailing the advisor.
tags:
- wealth-management
- colonial-first-state
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: wealth-portfolio-review
port: 8080
tools:
- name: run-wealth-portfolio-review-pipeline
description: Conducts wealth portfolio reviews by pulling positions from Colonial First State, computing performance, and emailing the advisor.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: cfs.get-fund
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: snowflake.execute-query
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: cfs
baseUri: https://api.internal.commbank.com.au/cfs/v1
authentication:
type: bearer
token: $secrets.cfs_token
resources:
- name: funds
path: /funds
operations:
- name: get-fund
method: GET
- type: http
namespace: snowflake
baseUri: https://commbank.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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Retrieves the status of a registered machine learning model in Databricks MLflow, returning model version, stage, and last transition date.
naftiko: '0.5'
info:
label: Databricks ML Model Status
description: Retrieves the status of a registered machine learning model in Databricks MLflow, returning model version, stage, and last transition date.
tags:
- machine-learning
- databricks
- mlops
capability:
exposes:
- type: mcp
namespace: ml-ops
port: 8080
tools:
- name: get-model-status
description: Look up a registered ML model in Databricks MLflow. Returns version, stage, and last transition date.
inputParameters:
- name: model_name
in: body
type: string
description: The registered model name.
call: databricks.get-model-version
with:
model_name: '{{model_name}}'
outputParameters:
- name: version
type: string
mapping: $.model_version.version
- name: stage
type: string
mapping: $.model_version.current_stage
- name: last_transition
type: string
mapping: $.model_version.last_updated_timestamp
consumes:
- type: http
namespace: databricks
baseUri: https://commbank.cloud.databricks.com/api/2.0/mlflow
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-versions
path: /registered-models/get-latest-versions
operations:
- name: get-model-version
method: POST
Retrieves digital channel performance metrics from Google Analytics for the CommBank app, returning sessions, conversion rate, and bounce rate.
naftiko: '0.5'
info:
label: Google Analytics Digital Channel Report
description: Retrieves digital channel performance metrics from Google Analytics for the CommBank app, returning sessions, conversion rate, and bounce rate.
tags:
- digital-analytics
- google-analytics
- marketing
capability:
exposes:
- type: mcp
namespace: digital-analytics
port: 8080
tools:
- name: get-channel-report
description: Look up Google Analytics channel metrics. Returns sessions, conversion rate, and bounce rate.
inputParameters:
- name: property_id
in: body
type: string
description: The Google Analytics 4 property ID.
- name: date_range
in: body
type: string
description: The date range (e.g., last7days, last30days).
call: ga4.get-report
with:
property_id: '{{property_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: sessions
type: number
mapping: $.rows[0].metricValues[0].value
- name: conversion_rate
type: number
mapping: $.rows[0].metricValues[1].value
- name: bounce_rate
type: number
mapping: $.rows[0].metricValues[2].value
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: get-report
method: POST
On new retail customer creation in Salesforce, provisions a core banking profile, runs KYC screening, and sends a welcome notification via Microsoft Teams to the relationship manager.
naftiko: '0.5'
info:
label: Customer Onboarding Orchestrator
description: On new retail customer creation in Salesforce, provisions a core banking profile, runs KYC screening, and sends a welcome notification via Microsoft Teams to the relationship manager.
tags:
- banking
- onboarding
- salesforce
- servicenow
- microsoft-teams
- kyc
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: trigger-customer-onboarding
description: Given a Salesforce contact ID and account type, orchestrate the full retail customer onboarding across core banking, KYC, and notification systems.
inputParameters:
- name: contact_id
in: body
type: string
description: The Salesforce contact ID for the new customer.
- name: account_type
in: body
type: string
description: The banking account type (e.g., savings, transaction, term-deposit).
- name: branch_code
in: body
type: string
description: The branch code where the account is being opened.
steps:
- name: get-contact
type: call
call: salesforce.get-contact
with:
contact_id: '{{contact_id}}'
- name: create-core-profile
type: call
call: core-banking.create-customer
with:
full_name: '{{get-contact.Name}}'
email: '{{get-contact.Email}}'
account_type: '{{account_type}}'
branch_code: '{{branch_code}}'
- name: run-kyc
type: call
call: kyc-service.screen-customer
with:
customer_id: '{{create-core-profile.customer_id}}'
full_name: '{{get-contact.Name}}'
- name: notify-rm
type: call
call: msteams.send-message
with:
channel_id: retail-onboarding
text: 'New customer onboarded: {{get-contact.Name}} ({{account_type}}). KYC status: {{run-kyc.status}}. Core ID: {{create-core-profile.customer_id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.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: core-banking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: customers
path: /customers
operations:
- name: create-customer
method: POST
- type: http
namespace: kyc-service
baseUri: https://api.internal.commbank.com.au/kyc/v1
authentication:
type: bearer
token: $secrets.kyc_token
resources:
- name: screening
path: /screen
operations:
- name: screen-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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Opens new business accounts by verifying ABN/ACN, running AML checks, and provisioning the account.
naftiko: '0.5'
info:
label: Business Account Opening Pipeline
description: Opens new business accounts by verifying ABN/ACN, running AML checks, and provisioning the account.
tags:
- business-banking
- compliance
- core-banking
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: business-account-opening
port: 8080
tools:
- name: run-business-account-opening-pipeline
description: Opens new business accounts by verifying ABN/ACN, running AML checks, and provisioning the account.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: compliance.run-check
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
method: POST
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Retrieves Osko real-time payment status via the New Payments Platform.
naftiko: '0.5'
info:
label: Osko Instant Payment Status
description: Retrieves Osko real-time payment status via the New Payments Platform.
tags:
- payments
- osko
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-data
description: Retrieves Osko real-time payment status via the New Payments Platform.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: osko.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: osko
baseUri: https://api.internal.commbank.com.au/payments/v1
authentication:
type: bearer
token: $secrets.osko_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Retrieves managed fund details and unit prices from Colonial First State.
naftiko: '0.5'
info:
label: Colonial First State Fund Lookup
description: Retrieves managed fund details and unit prices from Colonial First State.
tags:
- wealth-management
- colonial-first-state
capability:
exposes:
- type: mcp
namespace: wealth-management
port: 8080
tools:
- name: get-data
description: Retrieves managed fund details and unit prices from Colonial First State.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: colonial_first_state.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: colonial_first_state
baseUri: https://api.internal.commbank.com.au/wealth-management/v1
authentication:
type: bearer
token: $secrets.colonial_first_state_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Retrieves a Grafana alert rule by UID, returning rule name, current state, evaluation interval, and associated dashboard.
naftiko: '0.5'
info:
label: Grafana Alert Rule Lookup
description: Retrieves a Grafana alert rule by UID, returning rule name, current state, evaluation interval, and associated dashboard.
tags:
- monitoring
- grafana
- alerting
capability:
exposes:
- type: mcp
namespace: observability-alerts
port: 8080
tools:
- name: get-alert-rule
description: Look up a Grafana alert rule by UID. Returns rule name, state, evaluation interval, and dashboard.
inputParameters:
- name: rule_uid
in: body
type: string
description: The Grafana alert rule UID.
call: grafana.get-alert-rule
with:
rule_uid: '{{rule_uid}}'
outputParameters:
- name: title
type: string
mapping: $.title
- name: state
type: string
mapping: $.state
- name: eval_interval
type: string
mapping: $.intervalSeconds
consumes:
- type: http
namespace: grafana
baseUri: https://grafana.internal.commbank.com.au/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: alert-rules
path: /v1/provisioning/alert-rules/{{rule_uid}}
inputParameters:
- name: rule_uid
in: path
operations:
- name: get-alert-rule
method: GET
Retrieves the current foreign exchange rate for a currency pair from Bloomberg Enterprise Data, returning bid, ask, mid, and timestamp.
naftiko: '0.5'
info:
label: Real-Time FX Rate Lookup
description: Retrieves the current foreign exchange rate for a currency pair from Bloomberg Enterprise Data, returning bid, ask, mid, and timestamp.
tags:
- treasury
- forex
- bloomberg
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: get-fx-rate
description: Look up the real-time FX rate for a currency pair from Bloomberg. Returns bid, ask, mid, and timestamp.
inputParameters:
- name: currency_pair
in: body
type: string
description: The currency pair (e.g., AUDUSD, EURAUD).
call: bloomberg.get-fx-rate
with:
currency_pair: '{{currency_pair}}'
outputParameters:
- name: bid
type: number
mapping: $.data.PX_BID
- name: ask
type: number
mapping: $.data.PX_ASK
- name: mid
type: number
mapping: $.data.PX_MID
- name: timestamp
type: string
mapping: $.data.LAST_UPDATE
consumes:
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: fx-rates
path: /snapshots/{{currency_pair}}+Curncy
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-fx-rate
method: GET
Executes institutional trades by sourcing prices from Bloomberg, booking in the OMS, and confirming with the client.
naftiko: '0.5'
info:
label: Institutional Trade Execution Pipeline
description: Executes institutional trades by sourcing prices from Bloomberg, booking in the OMS, and confirming with the client.
tags:
- institutional-banking
- bloomberg
- oms
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: institutional-trade-execution
port: 8080
tools:
- name: run-institutional-trade-execution-pipel
description: Executes institutional trades by sourcing prices from Bloomberg, booking in the OMS, and confirming with the client.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: bloomberg.get-data
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: data
path: /datasets
operations:
- name: get-data
method: GET
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
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
Forecasts ATM cash demand by analyzing transaction patterns, running ML predictions, and scheduling replenishment.
naftiko: '0.5'
info:
label: ATM Cash Forecasting Pipeline
description: Forecasts ATM cash demand by analyzing transaction patterns, running ML predictions, and scheduling replenishment.
tags:
- operations
- atm
- snowflake
- machine-learning
capability:
exposes:
- type: mcp
namespace: atm-cash-forecasting
port: 8080
tools:
- name: run-atm-cash-forecasting-pipeline
description: Forecasts ATM cash demand by analyzing transaction patterns, running ML predictions, and scheduling replenishment.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: snowflake.execute-query
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://commbank.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: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Retrieves customer account balance from NetBank core banking by BSB and account number.
naftiko: '0.5'
info:
label: NetBank Account Balance Lookup
description: Retrieves customer account balance from NetBank core banking by BSB and account number.
tags:
- retail-banking
- netbank
capability:
exposes:
- type: mcp
namespace: retail-banking
port: 8080
tools:
- name: get-data
description: Retrieves customer account balance from NetBank core banking by BSB and account number.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: netbank.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: netbank
baseUri: https://api.internal.commbank.com.au/retail-banking/v1
authentication:
type: bearer
token: $secrets.netbank_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Triggers a release pipeline in Azure DevOps for a given project and definition, then posts the release status to Microsoft Teams.
naftiko: '0.5'
info:
label: Azure DevOps Release Pipeline Trigger
description: Triggers a release pipeline in Azure DevOps for a given project and definition, then posts the release status to Microsoft Teams.
tags:
- ci-cd
- azure-devops
- microsoft-teams
- deployment
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: trigger-release
description: Trigger an Azure DevOps release pipeline and notify the team in Microsoft Teams with release status.
inputParameters:
- name: project
in: body
type: string
description: The Azure DevOps project name.
- name: definition_id
in: body
type: string
description: The release definition ID.
- name: artifact_version
in: body
type: string
description: The build artifact version to deploy.
steps:
- name: create-release
type: call
call: azdo.create-release
with:
project: '{{project}}'
definition_id: '{{definition_id}}'
artifact_version: '{{artifact_version}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: releases
text: 'Release triggered: {{project}} definition {{definition_id}} version {{artifact_version}}. Release ID: {{create-release.id}}. Status: {{create-release.status}}.'
consumes:
- type: http
namespace: azdo
baseUri: https://vsrm.dev.azure.com/commbank
authentication:
type: basic
username: ''
password: $secrets.azdo_pat
resources:
- name: releases
path: /{{project}}/_apis/release/releases
inputParameters:
- name: project
in: path
operations:
- name: create-release
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.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 APRA prudential reporting data including capital adequacy ratios.
naftiko: '0.5'
info:
label: APRA Prudential Data Lookup
description: Retrieves APRA prudential reporting data including capital adequacy ratios.
tags:
- regulatory
- apra
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: get-data
description: Retrieves APRA prudential reporting data including capital adequacy ratios.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: apra.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: apra
baseUri: https://api.internal.commbank.com.au/regulatory/v1
authentication:
type: bearer
token: $secrets.apra_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Retrieves an employee's current compensation from Workday, compares against Mercer market data, and creates a compensation review task in ServiceNow for HR approval.
naftiko: '0.5'
info:
label: Workday Compensation Review Pipeline
description: Retrieves an employee's current compensation from Workday, compares against Mercer market data, and creates a compensation review task in ServiceNow for HR approval.
tags:
- hr
- compensation
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-compensation
port: 8080
tools:
- name: initiate-comp-review
description: Given an employee ID and job profile, pull current compensation from Workday, compare to market data, and create a review task.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: job_profile
in: body
type: string
description: The Workday job profile code.
steps:
- name: get-compensation
type: call
call: workday.get-compensation
with:
worker_id: '{{employee_id}}'
- name: get-market-data
type: call
call: mercer.get-benchmark
with:
job_profile: '{{job_profile}}'
country: AU
- name: create-review
type: call
call: servicenow.create-task
with:
short_description: 'Compensation review: {{employee_id}}'
category: hr_compensation
description: 'Current: {{get-compensation.total_base_pay}} AUD. Market P50: {{get-market-data.p50}}. Market P75: {{get-market-data.p75}}.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation
path: /workers/{{worker_id}}/compensation
inputParameters:
- name: worker_id
in: path
operations:
- name: get-compensation
method: GET
- type: http
namespace: mercer
baseUri: https://api.mercer.com/compensation/v1
authentication:
type: bearer
token: $secrets.mercer_token
resources:
- name: benchmarks
path: /benchmarks
operations:
- name: get-benchmark
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.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
Investigates AML alerts by pulling transaction data, running enhanced due diligence, and filing reports.
naftiko: '0.5'
info:
label: Anti-Money Laundering Investigation Pipeline
description: Investigates AML alerts by pulling transaction data, running enhanced due diligence, and filing reports.
tags:
- compliance
- aml
- austrac
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: anti-money-laundering-investigation
port: 8080
tools:
- name: run-anti-money-laundering-investigation
description: Investigates AML alerts by pulling transaction data, running enhanced due diligence, and filing reports.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: compliance.run-check
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Checks the health and connectivity status of an Albert POS terminal.
naftiko: '0.5'
info:
label: Albert POS Terminal Status
description: Checks the health and connectivity status of an Albert POS terminal.
tags:
- merchant-services
- albert-pos
capability:
exposes:
- type: mcp
namespace: merchant-services
port: 8080
tools:
- name: get-data
description: Checks the health and connectivity status of an Albert POS terminal.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: albert_pos.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: albert_pos
baseUri: https://api.internal.commbank.com.au/merchant-services/v1
authentication:
type: bearer
token: $secrets.albert_pos_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
When a customer raises a credit card dispute in Salesforce Service Cloud, retrieves the transaction from core banking, creates a case in ServiceNow, and notifies the disputes team via Microsoft Teams.
naftiko: '0.5'
info:
label: Credit Card Dispute Resolution Pipeline
description: When a customer raises a credit card dispute in Salesforce Service Cloud, retrieves the transaction from core banking, creates a case in ServiceNow, and notifies the disputes team via Microsoft Teams.
tags:
- credit-cards
- disputes
- salesforce-service-cloud
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: card-disputes
port: 8080
tools:
- name: process-card-dispute
description: Given a Salesforce case ID and transaction reference, orchestrate dispute resolution across core banking, ServiceNow, and Teams.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce Service Cloud case ID.
- name: transaction_ref
in: body
type: string
description: The credit card transaction reference.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: get-transaction
type: call
call: core-banking.get-card-transaction
with:
transaction_ref: '{{transaction_ref}}'
- name: create-dispute-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Card dispute: {{get-case.Subject}}'
category: card_disputes
description: 'Customer: {{get-case.ContactName}}. Amount: {{get-transaction.amount}} {{get-transaction.currency}}. Merchant: {{get-transaction.merchant_name}}.'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: card-disputes
text: 'New dispute: {{get-case.Subject}} - ${{get-transaction.amount}} at {{get-transaction.merchant_name}}. ServiceNow: {{create-dispute-ticket.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.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: core-banking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: card-transactions
path: /cards/transactions/{{transaction_ref}}
inputParameters:
- name: transaction_ref
in: path
operations:
- name: get-card-transaction
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 mortgage application is submitted via Salesforce, retrieves the applicant credit score from Equifax, runs affordability checks, and updates the Salesforce opportunity with decision status and notifies the broker via Microsoft Teams.
naftiko: '0.5'
info:
label: Mortgage Application Pipeline
description: When a mortgage application is submitted via Salesforce, retrieves the applicant credit score from Equifax, runs affordability checks, and updates the Salesforce opportunity with decision status and notifies the broker via Microsoft Teams.
tags:
- lending
- mortgage
- salesforce
- credit
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: process-mortgage-application
description: Given a Salesforce opportunity ID, orchestrate credit check, affordability assessment, and broker notification for a mortgage application.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID for the mortgage application.
- name: applicant_id
in: body
type: string
description: The customer identifier for the applicant.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: credit-check
type: call
call: equifax.get-credit-score
with:
applicant_id: '{{applicant_id}}'
full_name: '{{get-opportunity.ContactName}}'
- name: affordability-check
type: call
call: lending-engine.assess-affordability
with:
loan_amount: '{{get-opportunity.Amount}}'
credit_score: '{{credit-check.score}}'
income: '{{get-opportunity.AnnualIncome}}'
- name: update-opportunity
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
stage: '{{affordability-check.decision}}'
- name: notify-broker
type: call
call: msteams.send-message
with:
channel_id: mortgage-decisions
text: 'Mortgage {{opportunity_id}} for {{get-opportunity.ContactName}}: Credit score {{credit-check.score}}, Decision: {{affordability-check.decision}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.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: equifax
baseUri: https://api.equifax.com.au/v2
authentication:
type: bearer
token: $secrets.equifax_token
resources:
- name: credit-scores
path: /credit/score
operations:
- name: get-credit-score
method: POST
- type: http
namespace: lending-engine
baseUri: https://api.internal.commbank.com.au/lending/v1
authentication:
type: bearer
token: $secrets.lending_token
resources:
- name: affordability
path: /assess
operations:
- name: assess-affordability
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.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 cash transaction threshold report details submitted to AUSTRAC.
naftiko: '0.5'
info:
label: AUSTRAC CTT Report Lookup
description: Retrieves cash transaction threshold report details submitted to AUSTRAC.
tags:
- compliance
- austrac
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: get-data
description: Retrieves cash transaction threshold report details submitted to AUSTRAC.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: austrac.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: austrac
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.austrac_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Triggers a Qlik Sense app reload for a given app ID and returns the reload status and task execution time.
naftiko: '0.5'
info:
label: Qlik Sense Dashboard Reload
description: Triggers a Qlik Sense app reload for a given app ID and returns the reload status and task execution time.
tags:
- analytics
- qlik-sense
- reporting
capability:
exposes:
- type: mcp
namespace: bi-qlik
port: 8080
tools:
- name: reload-qlik-app
description: Trigger a Qlik Sense app reload. Returns reload status and execution time.
inputParameters:
- name: app_id
in: body
type: string
description: The Qlik Sense app ID.
call: qlik.reload-app
with:
app_id: '{{app_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: execution_time
type: number
mapping: $.executionTime
consumes:
- type: http
namespace: qlik
baseUri: https://qlik.internal.commbank.com.au/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: reloads
path: /reloads
operations:
- name: reload-app
method: POST
Assesses climate risk for the loan portfolio by pulling property data, running climate models, and reporting.
naftiko: '0.5'
info:
label: Climate Risk Assessment Pipeline
description: Assesses climate risk for the loan portfolio by pulling property data, running climate models, and reporting.
tags:
- risk-management
- climate
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: climate-risk-assessment
port: 8080
tools:
- name: run-climate-risk-assessment-pipeline
description: Assesses climate risk for the loan portfolio by pulling property data, running climate models, and reporting.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: snowflake.execute-query
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://commbank.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: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Provides institutional FX advisory quotes by fetching market rates, computing spread, and delivering via Microsoft Teams.
naftiko: '0.5'
info:
label: FX Advisory Quote Pipeline
description: Provides institutional FX advisory quotes by fetching market rates, computing spread, and delivering via Microsoft Teams.
tags:
- treasury
- forex
- bloomberg
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fx-advisory-quote
port: 8080
tools:
- name: run-fx-advisory-quote-pipeline
description: Provides institutional FX advisory quotes by fetching market rates, computing spread, and delivering via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: bloomberg.get-data
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: data
path: /datasets
operations:
- name: get-data
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message.
naftiko: '0.5'
info:
label: Employee Onboarding Pipeline
description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message.
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-employee-onboarding
description: Given a Workday employee ID, orchestrate the full employee onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID for the new hire.
- name: start_date
in: body
type: string
description: The employee start date in YYYY-MM-DD format.
- name: department
in: body
type: string
description: The department the new hire is joining.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: open-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-employee.full_name}}'
category: hr_onboarding
assigned_group: IT_Onboarding
description: Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}.
- name: provision-folder
type: call
call: sharepoint.create-folder
with:
site_id: hr_onboarding_site
folder_path: OnboardingDocs/{{get-employee.full_name}}_{{start_date}}
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: Welcome to Commonwealth Bank, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Documents are ready at {{provision-folder.url}}.
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now
authentication:
type: 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
Processes customer hardship claims by reviewing account history, assessing eligibility, and creating a support case.
naftiko: '0.5'
info:
label: Customer Hardship Assessment Pipeline
description: Processes customer hardship claims by reviewing account history, assessing eligibility, and creating a support case.
tags:
- customer-support
- hardship
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-hardship-assessment
port: 8080
tools:
- name: run-customer-hardship-assessment-pipeli
description: Processes customer hardship claims by reviewing account history, assessing eligibility, and creating a support case.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: salesforce.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Responds to cybersecurity incidents by correlating Splunk alerts, creating ServiceNow incidents, and notifying the CISO.
naftiko: '0.5'
info:
label: Cybersecurity Incident Response Pipeline
description: Responds to cybersecurity incidents by correlating Splunk alerts, creating ServiceNow incidents, and notifying the CISO.
tags:
- security
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cybersecurity-incident-response
port: 8080
tools:
- name: run-cybersecurity-incident-response-pip
description: Responds to cybersecurity incidents by correlating Splunk alerts, creating ServiceNow incidents, and notifying the CISO.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: splunk.create-search
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: servicenow.create-incident
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.commbank.com.au:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: create-search
method: POST
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: 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/messages
operations:
- name: send-notification
method: POST
Retrieves mobile banking app session details for customer engagement analytics.
naftiko: '0.5'
info:
label: CommBank App Session Lookup
description: Retrieves mobile banking app session details for customer engagement analytics.
tags:
- digital-banking
- commbank-app
capability:
exposes:
- type: mcp
namespace: digital-banking
port: 8080
tools:
- name: get-data
description: Retrieves mobile banking app session details for customer engagement analytics.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: commbank_app.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: commbank_app
baseUri: https://api.internal.commbank.com.au/digital-banking/v1
authentication:
type: bearer
token: $secrets.commbank_app_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Retrieves the performance metrics of a HubSpot marketing campaign, returning email sent count, open rate, click rate, and conversion count.
naftiko: '0.5'
info:
label: HubSpot Marketing Campaign Status
description: Retrieves the performance metrics of a HubSpot marketing campaign, returning email sent count, open rate, click rate, and conversion count.
tags:
- marketing
- hubspot
- campaign
capability:
exposes:
- type: mcp
namespace: marketing-ops
port: 8080
tools:
- name: get-campaign-performance
description: Look up HubSpot campaign performance. Returns emails sent, open rate, click rate, and conversions.
inputParameters:
- name: campaign_id
in: body
type: string
description: The HubSpot campaign ID.
call: hubspot.get-campaign
with:
campaign_id: '{{campaign_id}}'
outputParameters:
- name: emails_sent
type: number
mapping: $.counters.sent
- name: open_rate
type: number
mapping: $.counters.openRate
- name: click_rate
type: number
mapping: $.counters.clickRate
- name: conversions
type: number
mapping: $.counters.conversions
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
Retrieves BPAY payment transaction status by payment reference.
naftiko: '0.5'
info:
label: BPAY Payment Status Lookup
description: Retrieves BPAY payment transaction status by payment reference.
tags:
- payments
- bpay
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-data
description: Retrieves BPAY payment transaction status by payment reference.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: bpay.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: bpay
baseUri: https://api.internal.commbank.com.au/payments/v1
authentication:
type: bearer
token: $secrets.bpay_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Processes pension payments by calculating entitlements, executing payments, and notifying members.
naftiko: '0.5'
info:
label: Pension Payment Processing Pipeline
description: Processes pension payments by calculating entitlements, executing payments, and notifying members.
tags:
- superannuation
- pension
- bpay
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: pension-payment-processing
port: 8080
tools:
- name: run-pension-payment-processing-pipeline
description: Processes pension payments by calculating entitlements, executing payments, and notifying members.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: cfs.get-fund
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: cfs
baseUri: https://api.internal.commbank.com.au/cfs/v1
authentication:
type: bearer
token: $secrets.cfs_token
resources:
- name: funds
path: /funds
operations:
- name: get-fund
method: GET
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
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
Updates a feature flag for the CommBank mobile app, triggers a Harness deployment pipeline, and notifies the mobile team via Microsoft Teams with rollout percentage.
naftiko: '0.5'
info:
label: Mobile Banking Feature Toggle Pipeline
description: Updates a feature flag for the CommBank mobile app, triggers a Harness deployment pipeline, and notifies the mobile team via Microsoft Teams with rollout percentage.
tags:
- mobile-banking
- feature-flags
- harness
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mobile-ops
port: 8080
tools:
- name: toggle-mobile-feature
description: Given a feature flag key and rollout percentage, update the flag in Harness and notify the mobile team.
inputParameters:
- name: feature_key
in: body
type: string
description: The Harness feature flag key.
- name: rollout_pct
in: body
type: number
description: The target rollout percentage (0-100).
- name: environment
in: body
type: string
description: The target environment (e.g., production, staging).
steps:
- name: update-flag
type: call
call: harness.update-feature-flag
with:
feature_key: '{{feature_key}}'
environment: '{{environment}}'
rollout_percentage: '{{rollout_pct}}'
- name: notify-mobile-team
type: call
call: msteams.send-message
with:
channel_id: mobile-releases
text: 'Feature flag ''{{feature_key}}'' updated in {{environment}}: rollout now {{rollout_pct}}%. Updated by automation.'
consumes:
- type: http
namespace: harness
baseUri: https://app.harness.io/cf/admin
authentication:
type: bearer
token: $secrets.harness_token
resources:
- name: feature-flags
path: /features/{{feature_key}}
inputParameters:
- name: feature_key
in: path
operations:
- name: update-feature-flag
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
Submits a bond trade request via Tradeweb, records the execution in Bloomberg AIM, and notifies the trading desk via Microsoft Teams with fill details.
naftiko: '0.5'
info:
label: Tradeweb Bond Trade Execution Pipeline
description: Submits a bond trade request via Tradeweb, records the execution in Bloomberg AIM, and notifies the trading desk via Microsoft Teams with fill details.
tags:
- trading
- fixed-income
- tradeweb
- bloomberg-aim
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fixed-income-trading
port: 8080
tools:
- name: execute-bond-trade
description: Given bond details and trade parameters, submit an order via Tradeweb, record in Bloomberg AIM, and notify the desk.
inputParameters:
- name: isin
in: body
type: string
description: The bond ISIN code.
- name: side
in: body
type: string
description: The trade side (buy or sell).
- name: notional
in: body
type: number
description: The notional amount of the trade.
- name: counterparty
in: body
type: string
description: The counterparty dealer ID.
steps:
- name: submit-rfq
type: call
call: tradeweb.submit-rfq
with:
isin: '{{isin}}'
side: '{{side}}'
notional: '{{notional}}'
counterparty: '{{counterparty}}'
- name: record-trade
type: call
call: bloomberg-aim.record-execution
with:
trade_id: '{{submit-rfq.trade_id}}'
isin: '{{isin}}'
price: '{{submit-rfq.fill_price}}'
notional: '{{notional}}'
- name: notify-desk
type: call
call: msteams.send-message
with:
channel_id: fi-trading-desk
text: 'Bond trade executed: {{isin}} {{side}} {{notional}} @ {{submit-rfq.fill_price}}. Tradeweb ID: {{submit-rfq.trade_id}}. AIM ref: {{record-trade.aim_reference}}.'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v2
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: rfq
path: /rfq
operations:
- name: submit-rfq
method: POST
- type: http
namespace: bloomberg-aim
baseUri: https://bsapi.bloomberg.com/aim/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: executions
path: /executions
operations:
- name: record-execution
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.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 branch performance reports by pulling metrics from Salesforce, computing KPIs, and refreshing dashboards.
naftiko: '0.5'
info:
label: Branch Performance Reporting Pipeline
description: Generates branch performance reports by pulling metrics from Salesforce, computing KPIs, and refreshing dashboards.
tags:
- operations
- salesforce
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: branch-performance-reporting
port: 8080
tools:
- name: run-branch-performance-reporting-pipeli
description: Generates branch performance reports by pulling metrics from Salesforce, computing KPIs, and refreshing dashboards.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: salesforce.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: snowflake.execute-query
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: powerbi.refresh-dataset
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
- type: http
namespace: snowflake
baseUri: https://commbank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/refresh
operations:
- name: refresh-dataset
method: POST
When an expense report is submitted in SAP Concur, validates policy compliance, routes for manager approval in Workday, and notifies the submitter via Microsoft Outlook.
naftiko: '0.5'
info:
label: SAP Concur Expense Approval Pipeline
description: When an expense report is submitted in SAP Concur, validates policy compliance, routes for manager approval in Workday, and notifies the submitter via Microsoft Outlook.
tags:
- expense-management
- sap-concur
- workday
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: process-expense-report
description: Given a Concur expense report ID, validate against policy, route for approval, and notify the submitter.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: submitter_employee_id
in: body
type: string
description: The Workday employee ID of the submitter.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: get-submitter
type: call
call: workday.get-worker
with:
worker_id: '{{submitter_employee_id}}'
- name: get-manager
type: call
call: workday.get-worker
with:
worker_id: '{{get-submitter.manager_id}}'
- name: notify-submitter
type: call
call: outlook.send-email
with:
to: '{{get-submitter.work_email}}'
subject: Expense report {{report_id}} submitted for approval
body: Your expense report totalling {{get-report.total_amount}} {{get-report.currency}} has been routed to {{get-manager.full_name}} for approval.
consumes:
- type: http
namespace: concur
baseUri: https://us2.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: 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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/{{to}}/sendMail
inputParameters:
- name: to
in: path
operations:
- name: send-email
method: POST
Pulls Azure consumption data, identifies underutilized resources, creates a cost optimization recommendation in ServiceNow, and notifies the FinOps team via Microsoft Teams.
naftiko: '0.5'
info:
label: Cloud Cost Optimization Pipeline
description: Pulls Azure consumption data, identifies underutilized resources, creates a cost optimization recommendation in ServiceNow, and notifies the FinOps team via Microsoft Teams.
tags:
- finops
- cloud-cost
- microsoft-azure
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: optimize-cloud-costs
description: Given an Azure subscription ID, identify cost optimization opportunities and create recommendations.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID.
- name: lookback_days
in: body
type: number
description: Number of days to analyze for usage patterns.
steps:
- name: get-consumption
type: call
call: azure.get-consumption
with:
subscription_id: '{{subscription_id}}'
days: '{{lookback_days}}'
- name: get-advisor-recommendations
type: call
call: azure.get-advisor
with:
subscription_id: '{{subscription_id}}'
category: Cost
- name: create-ticket
type: call
call: servicenow.create-task
with:
short_description: 'Cloud cost optimization: {{subscription_id}}'
description: 'Total spend: ${{get-consumption.total_cost}}. Potential savings: ${{get-advisor-recommendations.estimated_savings}}. Top recommendations: {{get-advisor-recommendations.summary}}.'
- name: notify-finops
type: call
call: msteams.send-message
with:
channel_id: finops
text: 'Cost optimization identified for subscription {{subscription_id}}: ${{get-advisor-recommendations.estimated_savings}} potential savings. ServiceNow task: {{create-ticket.number}}.'
consumes:
- type: http
namespace: azure
baseUri: https://management.azure.com/subscriptions
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: consumption
path: /{{subscription_id}}/providers/Microsoft.Consumption/usageDetails
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-consumption
method: GET
- name: advisor
path: /{{subscription_id}}/providers/Microsoft.Advisor/recommendations
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-advisor
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the status of an Alteryx workflow execution, returning workflow name, run status, output record count, and duration.
naftiko: '0.5'
info:
label: Alteryx Data Workflow Status
description: Retrieves the status of an Alteryx workflow execution, returning workflow name, run status, output record count, and duration.
tags:
- data-engineering
- alteryx
- etl
capability:
exposes:
- type: mcp
namespace: data-engineering
port: 8080
tools:
- name: get-workflow-status
description: Look up an Alteryx workflow execution status. Returns name, status, output records, and duration.
inputParameters:
- name: job_id
in: body
type: string
description: The Alteryx workflow job ID.
call: alteryx.get-job
with:
job_id: '{{job_id}}'
outputParameters:
- name: workflow_name
type: string
mapping: $.name
- name: status
type: string
mapping: $.status
- name: output_records
type: number
mapping: $.outputRecordCount
- name: duration_seconds
type: number
mapping: $.duration
consumes:
- type: http
namespace: alteryx
baseUri: https://alteryx.internal.commbank.com.au/api/v3
authentication:
type: bearer
token: $secrets.alteryx_token
resources:
- name: jobs
path: /jobs/{{job_id}}
inputParameters:
- name: job_id
in: path
operations:
- name: get-job
method: GET
Searches Confluence for a knowledge article by keyword and returns the article title, URL, and last updated date.
naftiko: '0.5'
info:
label: Confluence Knowledge Article Lookup
description: Searches Confluence for a knowledge article by keyword and returns the article title, URL, and last updated date.
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-knowledge-article
description: Search Confluence for a knowledge article by keyword. Returns title, URL, and last updated date.
inputParameters:
- name: query
in: body
type: string
description: The search keyword or phrase.
call: confluence.search
with:
query: '{{query}}'
outputParameters:
- name: title
type: string
mapping: $.results[0].title
- name: url
type: string
mapping: $.results[0]._links.webui
- name: last_updated
type: string
mapping: $.results[0].version.when
consumes:
- type: http
namespace: confluence
baseUri: https://commbank.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: content
path: /content/search
operations:
- name: search
method: GET
Retrieves the latest GitHub Actions workflow run status for a given repository, returning run conclusion, duration, and triggering commit SHA.
naftiko: '0.5'
info:
label: GitHub Actions Build Status
description: Retrieves the latest GitHub Actions workflow run status for a given repository, returning run conclusion, duration, and triggering commit SHA.
tags:
- ci-cd
- github-actions
- engineering
capability:
exposes:
- type: mcp
namespace: ci-cd
port: 8080
tools:
- name: get-build-status
description: Look up the latest GitHub Actions workflow run for a repository. Returns conclusion, duration, and commit SHA.
inputParameters:
- name: repo
in: body
type: string
description: The repository in owner/repo format.
- name: workflow_id
in: body
type: string
description: The workflow file name or ID.
call: github.get-workflow-run
with:
repo: '{{repo}}'
workflow_id: '{{workflow_id}}'
outputParameters:
- name: conclusion
type: string
mapping: $.workflow_runs[0].conclusion
- name: duration_seconds
type: number
mapping: $.workflow_runs[0].run_duration
- name: head_sha
type: string
mapping: $.workflow_runs[0].head_sha
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_id}}/runs
inputParameters:
- name: repo
in: path
- name: workflow_id
in: path
operations:
- name: get-workflow-run
method: GET
Runs a vulnerability scan report from SolarWinds, correlates findings with the CMDB in ServiceNow, and creates remediation tasks assigned to the owning team.
naftiko: '0.5'
info:
label: Vulnerability Scan Report Pipeline
description: Runs a vulnerability scan report from SolarWinds, correlates findings with the CMDB in ServiceNow, and creates remediation tasks assigned to the owning team.
tags:
- security
- vulnerability-management
- solarwinds
- servicenow
capability:
exposes:
- type: mcp
namespace: vuln-management
port: 8080
tools:
- name: process-vuln-report
description: Given a scan ID, retrieve SolarWinds vulnerability results, match to CMDB, and create ServiceNow remediation tasks.
inputParameters:
- name: scan_id
in: body
type: string
description: The SolarWinds vulnerability scan ID.
steps:
- name: get-scan-results
type: call
call: solarwinds.get-scan
with:
scan_id: '{{scan_id}}'
- name: get-cmdb-ci
type: call
call: servicenow.get-ci
with:
ip_address: '{{get-scan-results.host_ip}}'
- name: create-remediation
type: call
call: servicenow.create-task
with:
short_description: 'Vulnerability remediation: {{get-scan-results.top_vuln}} on {{get-cmdb-ci.name}}'
category: security_remediation
assigned_group: '{{get-cmdb-ci.support_group}}'
description: 'Critical vulns: {{get-scan-results.critical_count}}. High: {{get-scan-results.high_count}}. Host: {{get-scan-results.host_ip}}. CI: {{get-cmdb-ci.name}}.'
consumes:
- type: http
namespace: solarwinds
baseUri: https://solarwinds.internal.commbank.com.au/api/v2
authentication:
type: bearer
token: $secrets.solarwinds_token
resources:
- name: scans
path: /scans/{{scan_id}}/results
inputParameters:
- name: scan_id
in: path
operations:
- name: get-scan
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb
path: /table/cmdb_ci
operations:
- name: get-ci
method: GET
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
Manages property settlement by coordinating with the conveyancer, releasing funds, and registering the mortgage.
naftiko: '0.5'
info:
label: Property Settlement Pipeline
description: Manages property settlement by coordinating with the conveyancer, releasing funds, and registering the mortgage.
tags:
- lending
- property
- settlements
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: property-settlement
port: 8080
tools:
- name: run-property-settlement-pipeline
description: Manages property settlement by coordinating with the conveyancer, releasing funds, and registering the mortgage.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Generates daily treasury cash positions by aggregating across all accounts, computing net position, and distributing.
naftiko: '0.5'
info:
label: Treasury Daily Cash Position Pipeline
description: Generates daily treasury cash positions by aggregating across all accounts, computing net position, and distributing.
tags:
- treasury
- core-banking
- bloomberg
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: treasury-daily-cash-position
port: 8080
tools:
- name: run-treasury-daily-cash-position-pipeli
description: Generates daily treasury cash positions by aggregating across all accounts, computing net position, and distributing.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: bloomberg.get-data
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: data
path: /datasets
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: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Refreshes KYC profiles by pulling latest customer data, running screening checks, and updating compliance records.
naftiko: '0.5'
info:
label: KYC Refresh Pipeline
description: Refreshes KYC profiles by pulling latest customer data, running screening checks, and updating compliance records.
tags:
- compliance
- kyc
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: kyc-refresh
port: 8080
tools:
- name: run-kyc-refresh-pipeline
description: Refreshes KYC profiles by pulling latest customer data, running screening checks, and updating compliance records.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: salesforce.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: kyc.screen-customer
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
- type: http
namespace: kyc
baseUri: https://api.internal.commbank.com.au/kyc/v1
authentication:
type: bearer
token: $secrets.kyc_token
resources:
- name: screening
path: /screen
operations:
- name: screen-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/messages
operations:
- name: send-notification
method: POST
Runs a Terraform plan against the current state, identifies drift, creates a ServiceNow change request for remediation, and alerts the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Terraform Infrastructure Drift Detection Pipeline
description: Runs a Terraform plan against the current state, identifies drift, creates a ServiceNow change request for remediation, and alerts the platform team via Microsoft Teams.
tags:
- infrastructure
- terraform
- servicenow
- microsoft-teams
- platform
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: detect-infra-drift
description: Given a Terraform workspace, run a plan to detect drift, create a change request, and notify the platform team.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID.
- name: organization
in: body
type: string
description: The Terraform Cloud organization name.
steps:
- name: trigger-plan
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
is_destroy: false
message: Automated drift detection
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: 'Infrastructure drift detected: workspace {{workspace_id}}'
category: infrastructure
description: 'Terraform plan run {{trigger-plan.id}} detected changes. Resources to add: {{trigger-plan.resource_additions}}, change: {{trigger-plan.resource_changes}}, destroy: {{trigger-plan.resource_destructions}}.'
- name: notify-platform
type: call
call: msteams.send-message
with:
channel_id: platform-engineering
text: 'Infrastructure drift detected in workspace {{workspace_id}}. Plan: +{{trigger-plan.resource_additions}} ~{{trigger-plan.resource_changes}} -{{trigger-plan.resource_destructions}}. CHG: {{create-change.number}}.'
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://commbank.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves loyalty rewards points balance and transaction history.
naftiko: '0.5'
info:
label: CommBank Rewards Points Lookup
description: Retrieves loyalty rewards points balance and transaction history.
tags:
- loyalty
- commbank-rewards
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: get-data
description: Retrieves loyalty rewards points balance and transaction history.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: commbank_rewards.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: commbank_rewards
baseUri: https://api.internal.commbank.com.au/loyalty/v1
authentication:
type: bearer
token: $secrets.commbank_rewards_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Extracts transaction data from SAP BW, transforms it into APRA reporting format, uploads the report to SharePoint, and notifies the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Reporting Pipeline
description: Extracts transaction data from SAP BW, transforms it into APRA reporting format, uploads the report to SharePoint, and notifies the compliance team via Microsoft Teams.
tags:
- compliance
- regulatory-reporting
- sap-bw
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-apra-report
description: Given a reporting period and report type, extract data from SAP BW, generate the APRA report, and distribute to compliance.
inputParameters:
- name: report_period
in: body
type: string
description: The reporting period in YYYY-MM format.
- name: report_type
in: body
type: string
description: The APRA report type (e.g., ARF_320_0, ARF_330_0).
steps:
- name: extract-data
type: call
call: sapbw.run-query
with:
query_name: APRA_{{report_type}}
period: '{{report_period}}'
- name: generate-report
type: call
call: reporting-engine.transform
with:
data: '{{extract-data.results}}'
template: '{{report_type}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: compliance_reports
file_path: APRA/{{report_type}}/{{report_period}}.xlsx
content: '{{generate-report.file_content}}'
- name: notify-compliance
type: call
call: msteams.send-message
with:
channel_id: regulatory-reporting
text: 'APRA report {{report_type}} for {{report_period}} generated and uploaded. File: {{upload-report.url}}.'
consumes:
- type: http
namespace: sapbw
baseUri: https://commbank-bw.sap.com/sap/bw/ina
authentication:
type: basic
username: $secrets.sapbw_user
password: $secrets.sapbw_password
resources:
- name: queries
path: /GetResponse
operations:
- name: run-query
method: POST
- type: http
namespace: reporting-engine
baseUri: https://api.internal.commbank.com.au/reporting/v1
authentication:
type: bearer
token: $secrets.reporting_token
resources:
- name: transform
path: /transform
operations:
- name: transform
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the current deployment status of a workload on Azure Kubernetes Service, returning replica count, available replicas, and image version.
naftiko: '0.5'
info:
label: Azure Kubernetes Deployment Status
description: Retrieves the current deployment status of a workload on Azure Kubernetes Service, returning replica count, available replicas, and image version.
tags:
- platform
- kubernetes
- azure-kubernetes-service
- deployment
capability:
exposes:
- type: mcp
namespace: platform-ops
port: 8080
tools:
- name: get-deployment-status
description: Look up the deployment status of an AKS workload. Returns replica count, available replicas, and image version.
inputParameters:
- name: cluster_name
in: body
type: string
description: The AKS cluster name.
- name: namespace
in: body
type: string
description: The Kubernetes namespace.
- name: deployment_name
in: body
type: string
description: The Kubernetes deployment name.
call: aks.get-deployment
with:
cluster_name: '{{cluster_name}}'
namespace: '{{namespace}}'
deployment_name: '{{deployment_name}}'
outputParameters:
- name: replicas
type: number
mapping: $.status.replicas
- name: available_replicas
type: number
mapping: $.status.availableReplicas
- name: image
type: string
mapping: $.spec.template.spec.containers[0].image
consumes:
- type: http
namespace: aks
baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{rg}}/providers/Microsoft.ContainerService/managedClusters
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: deployments
path: /{{cluster_name}}/apis/apps/v1/namespaces/{{namespace}}/deployments/{{deployment_name}}
inputParameters:
- name: cluster_name
in: path
- name: namespace
in: path
- name: deployment_name
in: path
operations:
- name: get-deployment
method: GET
Processes CommInsure claims by verifying policy, assessing claim, and routing to the claims team.
naftiko: '0.5'
info:
label: Insurance Claim Processing Pipeline
description: Processes CommInsure claims by verifying policy, assessing claim, and routing to the claims team.
tags:
- insurance
- comminsure
- servicenow
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: insurance-claim-processing
port: 8080
tools:
- name: run-insurance-claim-processing-pipeline
description: Processes CommInsure claims by verifying policy, assessing claim, and routing to the claims team.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: servicenow.create-incident
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: create-incident
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
Checks the health of digital banking APIs via Apigee, retrieves error rates from New Relic, and posts a combined health report to Microsoft Teams.
naftiko: '0.5'
info:
label: Digital Banking API Health Pipeline
description: Checks the health of digital banking APIs via Apigee, retrieves error rates from New Relic, and posts a combined health report to Microsoft Teams.
tags:
- digital-banking
- apigee
- new-relic
- microsoft-teams
- api-management
capability:
exposes:
- type: mcp
namespace: api-health
port: 8080
tools:
- name: check-api-health
description: Given an API proxy name, check its health in Apigee and New Relic and post a summary to Teams.
inputParameters:
- name: api_proxy
in: body
type: string
description: The Apigee API proxy name.
- name: newrelic_app_id
in: body
type: string
description: The New Relic application ID.
steps:
- name: get-apigee-stats
type: call
call: apigee.get-proxy-stats
with:
proxy_name: '{{api_proxy}}'
- name: get-newrelic-metrics
type: call
call: newrelic.get-app-metrics
with:
app_id: '{{newrelic_app_id}}'
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: api-health
text: 'API Health: {{api_proxy}} - Traffic: {{get-apigee-stats.total_requests}}/hr, Errors: {{get-apigee-stats.error_rate}}%, Apdex: {{get-newrelic-metrics.apdex_score}}, Response: {{get-newrelic-metrics.avg_response_time}}ms.'
consumes:
- type: http
namespace: apigee
baseUri: https://api.enterprise.apigee.com/v1/organizations/commbank
authentication:
type: bearer
token: $secrets.apigee_token
resources:
- name: stats
path: /environments/prod/stats/apiproxy/{{proxy_name}}
inputParameters:
- name: proxy_name
in: path
operations:
- name: get-proxy-stats
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/{{app_id}}/metrics/data.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: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves consumer group lag metrics for a Kafka topic from the Kafka monitoring API, returning total lag, partition count, and maximum partition lag.
naftiko: '0.5'
info:
label: Kafka Consumer Lag Monitor
description: Retrieves consumer group lag metrics for a Kafka topic from the Kafka monitoring API, returning total lag, partition count, and maximum partition lag.
tags:
- streaming
- kafka
- monitoring
capability:
exposes:
- type: mcp
namespace: event-streaming
port: 8080
tools:
- name: get-consumer-lag
description: Look up consumer group lag for a Kafka topic. Returns total lag, partition count, and max partition lag.
inputParameters:
- name: consumer_group
in: body
type: string
description: The Kafka consumer group name.
- name: topic
in: body
type: string
description: The Kafka topic name.
call: kafka-monitor.get-lag
with:
consumer_group: '{{consumer_group}}'
topic: '{{topic}}'
outputParameters:
- name: total_lag
type: number
mapping: $.consumerGroup.totalLag
- name: partition_count
type: number
mapping: $.consumerGroup.partitionCount
- name: max_partition_lag
type: number
mapping: $.consumerGroup.maxPartitionLag
consumes:
- type: http
namespace: kafka-monitor
baseUri: https://kafka-monitor.internal.commbank.com.au/api/v1
authentication:
type: bearer
token: $secrets.kafka_monitor_token
resources:
- name: consumer-groups
path: /consumer-groups/{{consumer_group}}/topics/{{topic}}/lag
inputParameters:
- name: consumer_group
in: path
- name: topic
in: path
operations:
- name: get-lag
method: GET
Retrieves personalized Yello merchant offers available to a customer.
naftiko: '0.5'
info:
label: CommBank Yello Offer Lookup
description: Retrieves personalized Yello merchant offers available to a customer.
tags:
- loyalty
- commbank-yello
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: get-data
description: Retrieves personalized Yello merchant offers available to a customer.
inputParameters:
- name: input_id
in: body
type: string
description: The primary identifier.
call: commbank_yello.get-data
with:
input_id: '{{input_id}}'
consumes:
- type: http
namespace: commbank_yello
baseUri: https://api.internal.commbank.com.au/loyalty/v1
authentication:
type: bearer
token: $secrets.commbank_yello_token
resources:
- name: data
path: /{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: get-data
method: GET
Manages technology changes by creating ServiceNow change requests, running pre-deployment checks, and notifying teams.
naftiko: '0.5'
info:
label: Technology Change Management Pipeline
description: Manages technology changes by creating ServiceNow change requests, running pre-deployment checks, and notifying teams.
tags:
- operations
- servicenow
- azure-devops
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: technology-change-management
port: 8080
tools:
- name: run-technology-change-management-pipeli
description: Manages technology changes by creating ServiceNow change requests, running pre-deployment checks, and notifying teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: servicenow.create-incident
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: snowflake.execute-query
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: create-incident
method: POST
- type: http
namespace: snowflake
baseUri: https://commbank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Provisions digital wallet cards by verifying the customer, tokenizing the card, and confirming activation.
naftiko: '0.5'
info:
label: Digital Wallet Provisioning Pipeline
description: Provisions digital wallet cards by verifying the customer, tokenizing the card, and confirming activation.
tags:
- digital-banking
- payments
- tokenization
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: digital-wallet-provisioning
port: 8080
tools:
- name: run-digital-wallet-provisioning-pipelin
description: Provisions digital wallet cards by verifying the customer, tokenizing the card, and confirming activation.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Processes credit card applications by running identity verification, credit assessment, and provisioning.
naftiko: '0.5'
info:
label: Credit Card Application Pipeline
description: Processes credit card applications by running identity verification, credit assessment, and provisioning.
tags:
- retail-banking
- credit-cards
- identity-verification
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: credit-card-application
port: 8080
tools:
- name: run-credit-card-application-pipeline
description: Processes credit card applications by running identity verification, credit assessment, and provisioning.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Onboards API developers by provisioning sandbox access, creating portal accounts, and sending documentation.
naftiko: '0.5'
info:
label: API Developer Onboarding Pipeline
description: Onboards API developers by provisioning sandbox access, creating portal accounts, and sending documentation.
tags:
- developer-platform
- api-gateway
- apigee
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: api-developer-onboarding
port: 8080
tools:
- name: run-api-developer-onboarding-pipeline
description: Onboards API developers by provisioning sandbox access, creating portal accounts, and sending documentation.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: salesforce.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
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
Processes a New Payments Platform (NPP) real-time payment by validating the PayID, debiting the source account, crediting the destination, and logging the transaction in the audit system.
naftiko: '0.5'
info:
label: NPP Real-Time Payment Processing Pipeline
description: Processes a New Payments Platform (NPP) real-time payment by validating the PayID, debiting the source account, crediting the destination, and logging the transaction in the audit system.
tags:
- payments
- npp
- real-time-payments
- core-banking
capability:
exposes:
- type: mcp
namespace: real-time-payments
port: 8080
tools:
- name: process-npp-payment
description: Given source and destination details, process an NPP real-time payment including PayID validation, debit, credit, and audit logging.
inputParameters:
- name: source_bsb
in: body
type: string
description: The source account BSB.
- name: source_account
in: body
type: string
description: The source account number.
- name: payid
in: body
type: string
description: The destination PayID (email or phone).
- name: amount
in: body
type: number
description: The payment amount in AUD.
- name: description
in: body
type: string
description: The payment description.
steps:
- name: resolve-payid
type: call
call: npp.resolve-payid
with:
payid: '{{payid}}'
- name: debit-source
type: call
call: core-banking.debit-account
with:
bsb: '{{source_bsb}}'
account: '{{source_account}}'
amount: '{{amount}}'
reference: '{{description}}'
- name: credit-destination
type: call
call: npp.submit-payment
with:
destination_bsb: '{{resolve-payid.bsb}}'
destination_account: '{{resolve-payid.account_number}}'
amount: '{{amount}}'
description: '{{description}}'
- name: log-audit
type: call
call: audit.log-transaction
with:
transaction_id: '{{credit-destination.transaction_id}}'
type: NPP_PAYMENT
amount: '{{amount}}'
status: '{{credit-destination.status}}'
consumes:
- type: http
namespace: npp
baseUri: https://api.internal.commbank.com.au/npp/v1
authentication:
type: bearer
token: $secrets.npp_token
resources:
- name: payid
path: /payid/resolve
operations:
- name: resolve-payid
method: POST
- name: payments
path: /payments
operations:
- name: submit-payment
method: POST
- type: http
namespace: core-banking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts/debit
operations:
- name: debit-account
method: POST
- type: http
namespace: audit
baseUri: https://api.internal.commbank.com.au/audit/v1
authentication:
type: bearer
token: $secrets.audit_token
resources:
- name: transactions
path: /log
operations:
- name: log-transaction
method: POST
Assesses first home buyer eligibility by checking grant qualification, running serviceability, and generating pre-approval.
naftiko: '0.5'
info:
label: First Home Buyer Assessment Pipeline
description: Assesses first home buyer eligibility by checking grant qualification, running serviceability, and generating pre-approval.
tags:
- lending
- first-home-buyer
- home-loans
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: first-home-buyer-assessment
port: 8080
tools:
- name: run-first-home-buyer-assessment-pipelin
description: Assesses first home buyer eligibility by checking grant qualification, running serviceability, and generating pre-approval.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Assesses SME cash flow lending by pulling accounting data from Xero, running risk models, and generating loan offers.
naftiko: '0.5'
info:
label: SME Cash Flow Lending Pipeline
description: Assesses SME cash flow lending by pulling accounting data from Xero, running risk models, and generating loan offers.
tags:
- business-banking
- sme-lending
- xero
- salesforce
capability:
exposes:
- type: mcp
namespace: sme-cash-flow-lending
port: 8080
tools:
- name: run-sme-cash-flow-lending-pipeline
description: Assesses SME cash flow lending by pulling accounting data from Xero, running risk models, and generating loan offers.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: xero.get-accounts
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: salesforce.get-account
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: xero
baseUri: https://api.xero.com/api.xro/2.0
authentication:
type: bearer
token: $secrets.xero_token
resources:
- name: accounts
path: /Accounts
operations:
- name: get-accounts
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
Triggers a dataset refresh in Power BI for a given workspace and dataset, returning the refresh status and completion time.
naftiko: '0.5'
info:
label: Power BI Report Refresh Trigger
description: Triggers a dataset refresh in Power BI for a given workspace and dataset, returning the refresh status and completion time.
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-dataset
description: Trigger a Power BI dataset refresh. Returns refresh status and estimated completion time.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace ID.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.refresh-dataset
with:
workspace_id: '{{workspace_id}}'
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: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Processes data portability requests under CDR by extracting customer data, packaging it, and delivering via the API.
naftiko: '0.5'
info:
label: Customer Data Portability Pipeline
description: Processes data portability requests under CDR by extracting customer data, packaging it, and delivering via the API.
tags:
- open-banking
- cdr
- data-portability
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-data-portability
port: 8080
tools:
- name: run-customer-data-portability-pipeline
description: Processes data portability requests under CDR by extracting customer data, packaging it, and delivering via the API.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: compliance.run-check
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Investigates suspected fraud by pulling transaction history, running ML fraud scoring, and creating a case in ServiceNow.
naftiko: '0.5'
info:
label: Fraud Transaction Investigation Pipeline
description: Investigates suspected fraud by pulling transaction history, running ML fraud scoring, and creating a case in ServiceNow.
tags:
- fraud
- payments
- machine-learning
- servicenow
capability:
exposes:
- type: mcp
namespace: fraud-transaction-investigation
port: 8080
tools:
- name: run-fraud-transaction-investigation-pip
description: Investigates suspected fraud by pulling transaction history, running ML fraud scoring, and creating a case in ServiceNow.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: servicenow.create-incident
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: create-incident
method: POST
Aggregates customer data from Salesforce CRM, core banking, and Workday financial planning to build a unified customer profile for relationship managers.
naftiko: '0.5'
info:
label: Customer 360 View Builder
description: Aggregates customer data from Salesforce CRM, core banking, and Workday financial planning to build a unified customer profile for relationship managers.
tags:
- customer-360
- salesforce
- core-banking
- crm
capability:
exposes:
- type: mcp
namespace: customer-insights
port: 8080
tools:
- name: build-customer-360
description: Given a customer ID, aggregate data from Salesforce, core banking, and financial systems into a unified profile.
inputParameters:
- name: customer_id
in: body
type: string
description: The core banking customer identifier.
steps:
- name: get-crm-profile
type: call
call: salesforce.get-account
with:
account_id: '{{customer_id}}'
- name: get-banking-profile
type: call
call: core-banking.get-customer
with:
customer_id: '{{customer_id}}'
- name: get-products
type: call
call: core-banking.get-customer-products
with:
customer_id: '{{customer_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.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: core-banking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: customers
path: /customers/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- name: products
path: /customers/{{customer_id}}/products
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer-products
method: GET
When a customer authorizes data sharing via CDR, records the consent in the consent registry, provisions API access tokens, and notifies the data recipient via webhook.
naftiko: '0.5'
info:
label: Open Banking Consent Management Pipeline
description: When a customer authorizes data sharing via CDR, records the consent in the consent registry, provisions API access tokens, and notifies the data recipient via webhook.
tags:
- open-banking
- cdr
- consent
- api-management
capability:
exposes:
- type: mcp
namespace: open-banking
port: 8080
tools:
- name: process-cdr-consent
description: Given a customer ID and data recipient, process a CDR consent authorization including registry update, token provisioning, and recipient notification.
inputParameters:
- name: customer_id
in: body
type: string
description: The banking customer identifier.
- name: data_recipient_id
in: body
type: string
description: The accredited data recipient identifier.
- name: scopes
in: body
type: string
description: The consented data scopes (e.g., accounts, transactions, balances).
steps:
- name: register-consent
type: call
call: consent-registry.create-consent
with:
customer_id: '{{customer_id}}'
recipient_id: '{{data_recipient_id}}'
scopes: '{{scopes}}'
- name: provision-token
type: call
call: token-service.create-token
with:
consent_id: '{{register-consent.consent_id}}'
scopes: '{{scopes}}'
- name: notify-recipient
type: call
call: webhook.send-notification
with:
recipient_url: '{{register-consent.callback_url}}'
consent_id: '{{register-consent.consent_id}}'
status: active
consumes:
- type: http
namespace: consent-registry
baseUri: https://api.internal.commbank.com.au/openbanking/v1
authentication:
type: bearer
token: $secrets.openbanking_token
resources:
- name: consents
path: /consents
operations:
- name: create-consent
method: POST
- type: http
namespace: token-service
baseUri: https://api.internal.commbank.com.au/openbanking/v1
authentication:
type: bearer
token: $secrets.openbanking_token
resources:
- name: tokens
path: /tokens
operations:
- name: create-token
method: POST
- type: http
namespace: webhook
baseUri: https://api.internal.commbank.com.au/webhooks/v1
authentication:
type: bearer
token: $secrets.webhook_token
resources:
- name: notifications
path: /send
operations:
- name: send-notification
method: POST
Processes international money transfers by screening via sanctions lists, executing via SWIFT, and confirming.
naftiko: '0.5'
info:
label: International Money Transfer Pipeline
description: Processes international money transfers by screening via sanctions lists, executing via SWIFT, and confirming.
tags:
- payments
- swift
- sanctions-screening
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: international-money-transfer
port: 8080
tools:
- name: run-international-money-transfer-pipeli
description: Processes international money transfers by screening via sanctions lists, executing via SWIFT, and confirming.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: compliance.run-check
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: outlook.send-email
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: compliance
baseUri: https://api.internal.commbank.com.au/compliance/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: checks
path: /checks
operations:
- name: run-check
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
Reconciles New Payments Platform transactions by matching against core banking records and notifying treasury.
naftiko: '0.5'
info:
label: NPP Payment Reconciliation Pipeline
description: Reconciles New Payments Platform transactions by matching against core banking records and notifying treasury.
tags:
- payments
- npp
- core-banking
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: npp-payment-reconciliation
port: 8080
tools:
- name: run-npp-payment-reconciliation-pipeline
description: Reconciles New Payments Platform transactions by matching against core banking records and notifying treasury.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: corebanking.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: snowflake.execute-query
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: snowflake
baseUri: https://commbank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
Handles customer complaints by logging in Salesforce, assessing severity, and escalating to the relevant team.
naftiko: '0.5'
info:
label: Customer Complaint Handling Pipeline
description: Handles customer complaints by logging in Salesforce, assessing severity, and escalating to the relevant team.
tags:
- customer-support
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-complaint-handling
port: 8080
tools:
- name: run-customer-complaint-handling-pipelin
description: Handles customer complaints by logging in Salesforce, assessing severity, and escalating to the relevant team.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: salesforce.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: servicenow.create-incident
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
- type: http
namespace: servicenow
baseUri: https://commbank.service-now.com/api/now/table
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incident
operations:
- name: 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/messages
operations:
- name: send-notification
method: POST
Onboards new merchants by verifying ABN, provisioning POS terminals, and creating accounts with notification.
naftiko: '0.5'
info:
label: Merchant Onboarding Pipeline
description: Onboards new merchants by verifying ABN, provisioning POS terminals, and creating accounts with notification.
tags:
- merchant-services
- albert-pos
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: merchant-onboarding
port: 8080
tools:
- name: run-merchant-onboarding-pipeline
description: Onboards new merchants by verifying ABN, provisioning POS terminals, and creating accounts with notification.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: salesforce.get-account
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: corebanking.get-account
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: msteams.send-notification
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
- type: http
namespace: corebanking
baseUri: https://api.internal.commbank.com.au/core/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: get-account
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/messages
operations:
- name: send-notification
method: POST
When a new business banking lead is created in Salesforce, enriches it with Bloomberg Intelligence firmographic data, scores the lead, and assigns to the appropriate relationship manager.
naftiko: '0.5'
info:
label: Salesforce Lead Qualification Pipeline
description: When a new business banking lead is created in Salesforce, enriches it with Bloomberg Intelligence firmographic data, scores the lead, and assigns to the appropriate relationship manager.
tags:
- sales
- crm
- salesforce
- bloomberg-intelligence
- lead-management
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: qualify-business-lead
description: Given a Salesforce lead ID, enrich with firmographic data from Bloomberg, score the lead, and assign to a RM.
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: get-firmographics
type: call
call: bloomberg.get-company-profile
with:
company_name: '{{get-lead.Company}}'
- name: update-lead
type: call
call: salesforce.update-lead
with:
lead_id: '{{lead_id}}'
annual_revenue: '{{get-firmographics.revenue}}'
industry: '{{get-firmographics.industry}}'
employee_count: '{{get-firmographics.employee_count}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://commbank.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: bloomberg
baseUri: https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: company-profiles
path: /company/{{company_name}}
inputParameters:
- name: company_name
in: path
operations:
- name: get-company-profile
method: GET
When a wealth portfolio drifts beyond threshold, pulls current allocations from Bloomberg AIM, calculates rebalance trades, and submits orders to the trading system while notifying the portfolio manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Wealth Management Portfolio Rebalance Pipeline
description: When a wealth portfolio drifts beyond threshold, pulls current allocations from Bloomberg AIM, calculates rebalance trades, and submits orders to the trading system while notifying the portfolio manager via Microsoft Teams.
tags:
- wealth-management
- portfolio
- bloomberg-aim
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth-management
port: 8080
tools:
- name: rebalance-portfolio
description: Given a portfolio ID and drift threshold, calculate and submit rebalancing trades and notify the portfolio manager.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The Bloomberg AIM portfolio identifier.
- name: drift_threshold
in: body
type: number
description: The maximum allowable drift percentage before rebalancing.
steps:
- name: get-allocations
type: call
call: bloomberg-aim.get-portfolio
with:
portfolio_id: '{{portfolio_id}}'
- name: calculate-trades
type: call
call: rebalance-engine.calculate
with:
current_allocations: '{{get-allocations.positions}}'
target_allocations: '{{get-allocations.model}}'
threshold: '{{drift_threshold}}'
- name: submit-orders
type: call
call: bloomberg-aim.submit-orders
with:
portfolio_id: '{{portfolio_id}}'
orders: '{{calculate-trades.trade_list}}'
- name: notify-pm
type: call
call: msteams.send-message
with:
channel_id: wealth-trading
text: Portfolio {{portfolio_id}} rebalanced. {{calculate-trades.trade_count}} trades submitted. Max drift was {{calculate-trades.max_drift}}%.
consumes:
- type: http
namespace: bloomberg-aim
baseUri: https://bsapi.bloomberg.com/aim/api/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: portfolios
path: /portfolios/{{portfolio_id}}
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-portfolio
method: GET
- name: orders
path: /orders
operations:
- name: submit-orders
method: POST
- type: http
namespace: rebalance-engine
baseUri: https://api.internal.commbank.com.au/wealth/v1
authentication:
type: bearer
token: $secrets.wealth_token
resources:
- name: rebalance
path: /rebalance/calculate
operations:
- name: calculate
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.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
Assesses business lending by pulling financials from Xero, running credit scoring, and routing for approval via Salesforce.
naftiko: '0.5'
info:
label: Business Lending Assessment Pipeline
description: Assesses business lending by pulling financials from Xero, running credit scoring, and routing for approval via Salesforce.
tags:
- lending
- business-banking
- xero
- salesforce
capability:
exposes:
- type: mcp
namespace: business-lending-assessment
port: 8080
tools:
- name: run-business-lending-assessment-pipelin
description: Assesses business lending by pulling financials from Xero, running credit scoring, and routing for approval via Salesforce.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: scope
in: body
type: string
description: The processing scope.
steps:
- name: fetch-data
type: call
call: xero.get-accounts
with:
input_id: '{{input_id}}'
- name: process-data
type: call
call: ml.run-model
with:
data: '{{fetch-data.result}}'
- name: deliver-results
type: call
call: salesforce.get-account
with:
data: '{{process-data.result}}'
consumes:
- type: http
namespace: xero
baseUri: https://api.xero.com/api.xro/2.0
authentication:
type: bearer
token: $secrets.xero_token
resources:
- name: accounts
path: /Accounts
operations:
- name: get-accounts
method: GET
- type: http
namespace: ml
baseUri: https://ml.internal.commbank.com.au/v1
authentication:
type: bearer
token: $secrets.ml_token
resources:
- name: models
path: /predict
operations:
- name: run-model
method: POST
- type: http
namespace: salesforce
baseUri: https://commbank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-account
method: GET
Executes the Snowflake regulatory data preparation procedure for daily compliance reporting and notifies the regulatory reporting team in Microsoft Teams when the data is ready.
naftiko: '0.5'
info:
label: Snowflake Regulatory Reporting Data Load
description: Executes the Snowflake regulatory data preparation procedure for daily compliance reporting and notifies the regulatory reporting team in Microsoft Teams when the data is ready.
tags:
- compliance
- regulatory
- snowflake
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: prepare-regulatory-report-data
description: Given a reporting date and report type, execute the Snowflake regulatory data preparation procedure and notify the regulatory reporting Microsoft Teams channel when ready for submission.
inputParameters:
- name: reporting_date
in: body
type: string
description: ISO 8601 date for the regulatory report.
- name: report_type
in: body
type: string
description: Type of regulatory report (e.g. COREP, FINREP, LCR).
steps:
- name: prepare-data
type: call
call: snowflake.execute-query
with:
statement: CALL prepare_regulatory_data('{{reporting_date}}', '{{report_type}}')
- name: notify-reg-team
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_regulatory_team_id
channel_id: $secrets.teams_regulatory_channel_id
text: 'Regulatory data ready: {{report_type}} for {{reporting_date}} | Status: {{prepare-data.status}}. Data is available for review and submission.'
consumes:
- type: http
namespace: snowflake
baseUri: https://deutschebank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Runs data quality checks on core Snowflake risk and financial data tables and creates Jira bugs when tables fail minimum row count or completeness thresholds.
naftiko: '0.5'
info:
label: Snowflake Data Quality Validation
description: Runs data quality checks on core Snowflake risk and financial data tables and creates Jira bugs when tables fail minimum row count or completeness thresholds.
tags:
- data
- analytics
- snowflake
- jira
- data-quality
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: validate-data-table
description: Given a Snowflake table name, expected minimum row count, and check date, execute a data quality validation and open a Jira bug if the table fails the threshold.
inputParameters:
- name: table_name
in: body
type: string
description: Fully qualified Snowflake table name to validate.
- name: expected_min_rows
in: body
type: integer
description: Minimum expected row count for the check to pass.
- name: check_date
in: body
type: string
description: ISO 8601 date for the data partition being validated.
steps:
- name: check-row-count
type: call
call: snowflake.execute-query
with:
statement: SELECT COUNT(*) as row_count FROM {{table_name}} WHERE DATE(created_at) = '{{check_date}}'
- name: raise-quality-bug
type: call
call: jira.create-issue
with:
project_key: DATA
issuetype: Bug
summary: 'Data quality failure: {{table_name}} on {{check_date}}'
description: 'Row count: {{check-row-count.row_count}}, below minimum {{expected_min_rows}} for {{check_date}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://deutschebank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://deutschebank.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 GitHub Actions pipeline fails on a core banking platform repository, creates a Datadog event and opens a Jira bug for the engineering team to remediate.
naftiko: '0.5'
info:
label: GitHub DevOps Pipeline Failure Handler
description: When a GitHub Actions pipeline fails on a core banking platform repository, creates a Datadog event and opens a Jira bug for the engineering team to remediate.
tags:
- devops
- cicd
- github
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions workflow failure on a banking platform repository, create a Datadog event and open a Jira bug with full failure context for the engineering team.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository name where the failure occurred.
- name: workflow_name
in: body
type: string
description: Name of the failed GitHub Actions workflow.
- name: run_id
in: body
type: string
description: GitHub Actions workflow run ID.
- name: commit_sha
in: body
type: string
description: Git commit SHA that triggered the failure.
- name: branch
in: body
type: string
description: Git branch where the failure occurred.
steps:
- name: create-dd-event
type: call
call: datadog.create-event
with:
title: 'CI failure: {{workflow_name}} on {{branch}}'
text: Run {{run_id}} failed at {{commit_sha}} in {{repo_name}}
alert_type: error
tags: env:ci,repo:{{repo_name}}
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repo_name}} / {{workflow_name}} on {{branch}}'
description: 'Run: {{run_id}}
Branch: {{branch}}
Commit: {{commit_sha}}
Datadog: {{create-dd-event.url}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: https://deutschebank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
When Datadog detects a P1 infrastructure failure, creates a ServiceNow critical incident, pages the on-call SRE via PagerDuty, and posts to the IT operations Microsoft Teams channel.
naftiko: '0.5'
info:
label: IT Infrastructure Incident P1 Response
description: When Datadog detects a P1 infrastructure failure, creates a ServiceNow critical incident, pages the on-call SRE via PagerDuty, and posts to the IT operations Microsoft Teams channel.
tags:
- itsm
- incident-response
- datadog
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: handle-p1-infrastructure-incident
description: Given a Datadog P1 alert, create a ServiceNow critical incident with full context, page the on-call SRE team via PagerDuty, and notify the IT operations Microsoft Teams channel.
inputParameters:
- name: monitor_id
in: body
type: string
description: Datadog monitor ID that triggered the P1 alert.
- name: service_affected
in: body
type: string
description: Name of the affected service or system.
- name: alert_message
in: body
type: string
description: Full alert message from Datadog.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
category: infrastructure
impact: 1
urgency: 1
short_description: 'P1: {{service_affected}} — {{alert_message}}'
assigned_group: SRE_OnCall
- name: page-sre
type: call
call: pagerduty.create-incident
with:
title: 'P1 Infrastructure: {{service_affected}}'
urgency: high
service_id: $secrets.pagerduty_infra_service_id
- name: notify-it-ops
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_it_ops_team_id
channel_id: $secrets.teams_it_ops_channel_id
text: 'P1 INCIDENT: {{service_affected}} | SNOW: {{create-snow-incident.number}} | PD: {{page-sre.html_url}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://deutschebank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_api_key
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the current health status and error rate for a Deutsche Bank service from Datadog APM.
naftiko: '0.5'
info:
label: Datadog Service Health Lookup
description: Retrieves the current health status and error rate for a Deutsche Bank service from Datadog APM.
tags:
- monitoring
- datadog
- operations
- lookup
capability:
exposes:
- type: mcp
namespace: observability-lookup
port: 8080
tools:
- name: get-service-health
description: Given a Datadog service name, return the current health status and error rate.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog APM service name.
call: datadog.get-service-summary
with:
service: '{{service_name}}'
outputParameters:
- name: status
type: string
mapping: $.data.attributes.status
- name: error_rate
type: number
mapping: $.data.attributes.error_rate
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: services
path: /services/{{service}}
inputParameters:
- name: service
in: path
operations:
- name: get-service-summary
method: GET
Retrieves a Salesforce client account record and returns key relationship health indicators for use by relationship managers in quarterly reviews and client planning.
naftiko: '0.5'
info:
label: Salesforce Client Account Health Review
description: Retrieves a Salesforce client account record and returns key relationship health indicators for use by relationship managers in quarterly reviews and client planning.
tags:
- sales
- crm
- salesforce
- relationship-management
capability:
exposes:
- type: mcp
namespace: rm-tools
port: 8080
tools:
- name: get-client-account-health
description: Given a Salesforce account ID, retrieve the client's health indicators including last contact date, open opportunities, and contract status. Use for quarterly relationship reviews and client planning sessions.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID for the banking client.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: account_name
type: string
mapping: $.Name
- name: owner_name
type: string
mapping: $.Owner.Name
- name: last_activity_date
type: string
mapping: $.LastActivityDate
- name: annual_revenue
type: number
mapping: $.AnnualRevenue
consumes:
- type: http
namespace: salesforce
baseUri: https://deutschebank.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
Looks up a SAP purchase order by number and returns the header status, vendor, and total value for procurement and finance operations.
naftiko: '0.5'
info:
label: SAP S/4HANA Purchase Order Status Lookup
description: Looks up a SAP purchase order by number and returns the header status, vendor, and total value for procurement and finance operations.
tags:
- finance
- procurement
- sap
- erp
capability:
exposes:
- type: mcp
namespace: erp-finance
port: 8080
tools:
- name: get-purchase-order-status
description: Given a SAP purchase order number, retrieve the PO header status, vendor name, total amount, and currency from SAP S/4HANA. Use for procurement audits and payment processing verification.
inputParameters:
- name: po_number
in: body
type: string
description: SAP purchase order number to look up.
call: sap.get-po
with:
po_number: '{{po_number}}'
outputParameters:
- name: status
type: string
mapping: $.d.OverallStatus
- name: vendor
type: string
mapping: $.d.Supplier.CompanyName
- name: total_amount
type: string
mapping: $.d.TotalAmount
- name: currency
type: string
mapping: $.d.TransactionCurrency
consumes:
- type: http
namespace: sap
baseUri: https://deutschebank-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: purchase-orders
path: /A_PurchaseOrder('{{po_number}}')
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
outputRawFormat: xml
When a Salesforce deal opportunity reaches Closed Won, creates a corresponding SAP project code and notifies the deal team in Microsoft Teams to begin project setup.
naftiko: '0.5'
info:
label: Salesforce Opportunity to SAP Project Sync
description: When a Salesforce deal opportunity reaches Closed Won, creates a corresponding SAP project code and notifies the deal team in Microsoft Teams to begin project setup.
tags:
- sales
- crm
- salesforce
- sap
- erp
capability:
exposes:
- type: mcp
namespace: deal-management
port: 8080
tools:
- name: activate-won-deal-project
description: Given a Salesforce opportunity ID that reached Closed Won, create a SAP project code for the engagement and notify the deal team in Microsoft Teams to initiate project setup.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID for the won deal.
- name: deal_team_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the deal team.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sap-project
type: call
call: sap.create-project
with:
description: '{{get-opportunity.name}}'
client: '{{get-opportunity.account_name}}'
planned_start: '{{get-opportunity.close_date}}'
- name: update-opportunity
type: call
call: salesforce-update.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
sap_project_code: '{{create-sap-project.project_id}}'
- name: notify-deal-team
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_deals_team_id
channel_id: '{{deal_team_channel_id}}'
text: 'Deal closed: {{get-opportunity.name}} for {{get-opportunity.account_name}} | SAP project: {{create-sap-project.project_id}}. Project setup can begin.'
consumes:
- type: http
namespace: salesforce
baseUri: https://deutschebank.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://deutschebank-s4.sap.com/sap/opu/odata/sap/PS_PROJECT_MANAGEMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: projects
path: /A_Project
operations:
- name: create-project
method: POST
- type: http
namespace: salesforce-update
baseUri: https://deutschebank.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the current status of all critical trading platform monitors from Datadog and returns a structured health summary for the technology operations team.
naftiko: '0.5'
info:
label: Datadog Trading Platform Health Monitor
description: Retrieves the current status of all critical trading platform monitors from Datadog and returns a structured health summary for the technology operations team.
tags:
- observability
- monitoring
- datadog
- trading
- operations
capability:
exposes:
- type: mcp
namespace: trading-health
port: 8080
tools:
- name: get-trading-platform-health
description: Given a Datadog service tag for a trading system, retrieve all monitor statuses and return a structured health report. Use before trading hours and during incident investigations.
inputParameters:
- name: service_tag
in: body
type: string
description: Datadog service tag to filter monitors (e.g. service:trading-engine or env:production).
call: datadog.get-monitors
with:
monitor_tags: '{{service_tag}}'
outputParameters:
- name: monitors
type: array
mapping: $.monitors
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
inputParameters:
- name: monitor_tags
in: query
operations:
- name: get-monitors
method: GET
Runs a Snowflake procedure to compute daily market risk and credit exposure aggregates and stores the results for risk reporting and regulatory compliance.
naftiko: '0.5'
info:
label: Snowflake Risk Analytics Daily Snapshot
description: Runs a Snowflake procedure to compute daily market risk and credit exposure aggregates and stores the results for risk reporting and regulatory compliance.
tags:
- risk
- analytics
- snowflake
- reporting
- compliance
capability:
exposes:
- type: mcp
namespace: risk-analytics
port: 8080
tools:
- name: compute-daily-risk-snapshot
description: Given a reporting date, execute the Snowflake risk aggregation procedure to compute VaR, credit exposure, and counterparty risk metrics, then store the results for risk reporting and regulatory submissions.
inputParameters:
- name: reporting_date
in: body
type: string
description: ISO 8601 date for the risk analytics snapshot.
call: snowflake.execute-query
with:
statement: CALL compute_daily_risk_aggregates('{{reporting_date}}')
outputParameters:
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: snowflake
baseUri: https://deutschebank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves the health status of a specified Azure resource in Deutsche Bank cloud infrastructure.
naftiko: '0.5'
info:
label: Azure Resource Health Lookup
description: Retrieves the health status of a specified Azure resource in Deutsche Bank cloud infrastructure.
tags:
- cloud
- azure
- monitoring
- lookup
capability:
exposes:
- type: mcp
namespace: cloud-health
port: 8080
tools:
- name: get-resource-health
description: Given an Azure resource ID, return the availability status and summary.
inputParameters:
- name: resource_id
in: body
type: string
description: The full Azure resource ID.
call: azure.get-resource-health
with:
resource_id: '{{resource_id}}'
outputParameters:
- name: availability_state
type: string
mapping: $.properties.availabilityState
- name: summary
type: string
mapping: $.properties.summary
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-resource-health
method: GET
When an employee is terminated in Workday, disables their Microsoft 365 account, creates a ServiceNow offboarding task, and notifies IT security in Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Employee Offboarding Access Revocation
description: When an employee is terminated in Workday, disables their Microsoft 365 account, creates a ServiceNow offboarding task, and notifies IT security in Microsoft Teams.
tags:
- hr
- offboarding
- workday
- microsoft-365
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: revoke-employee-access
description: Given a Workday employee ID and Microsoft 365 UPN, disable the M365 account, create a ServiceNow offboarding task for full access revocation, and notify IT security in Teams.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: Workday worker ID of the terminated employee.
- name: upn
in: body
type: string
description: Microsoft 365 UPN of the terminated employee.
steps:
- name: disable-m365-account
type: call
call: msgraph.disable-user
with:
user_id: '{{upn}}'
accountEnabled: false
- name: create-offboarding-task
type: call
call: servicenow.create-task
with:
category: hr_offboarding
short_description: 'IT offboarding: {{upn}}'
assigned_group: IT_Security
- name: notify-security
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_security_team_id
channel_id: $secrets.teams_security_channel_id
text: 'Employee offboarded: {{upn}} (Workday: {{workday_employee_id}}) | M365 disabled | SNOW: {{create-offboarding-task.number}}'
consumes:
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: https://deutschebank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Submits a ServiceNow change request for planned changes to trading or risk systems, assigns it to the CAB, and notifies the technology operations Microsoft Teams channel.
naftiko: '0.5'
info:
label: ServiceNow IT Change Request for Trading Systems
description: Submits a ServiceNow change request for planned changes to trading or risk systems, assigns it to the CAB, and notifies the technology operations Microsoft Teams channel.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: submit-trading-system-change
description: Given a change description, risk level, and planned window for a trading or risk system, create a ServiceNow change request for CAB review and notify the technology operations Microsoft Teams channel.
inputParameters:
- name: short_description
in: body
type: string
description: Brief description of the planned system change.
- name: change_type
in: body
type: string
description: 'Type of change: standard, normal, or emergency.'
- name: risk_level
in: body
type: string
description: 'Risk level: low, medium, or high.'
- name: planned_start
in: body
type: string
description: Planned change start time in ISO 8601 format.
- name: planned_end
in: body
type: string
description: Planned change end time in ISO 8601 format.
- name: systems_affected
in: body
type: string
description: Comma-separated list of trading or risk systems affected.
steps:
- name: create-cr
type: call
call: servicenow.create-change-request
with:
type: '{{change_type}}'
risk: '{{risk_level}}'
short_description: '{{short_description}}'
start_date: '{{planned_start}}'
end_date: '{{planned_end}}'
- name: notify-tech-ops
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_tech_ops_team_id
channel_id: $secrets.teams_cab_channel_id
text: 'Change request: {{short_description}} | Systems: {{systems_affected}} | Window: {{planned_start}} to {{planned_end}} | SNOW: {{create-cr.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://deutschebank.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
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves real-time market data from Refinitiv Eikon for a given security instrument at Deutsche Bank.
naftiko: '0.5'
info:
label: Refinitiv Market Data Lookup
description: Retrieves real-time market data from Refinitiv Eikon for a given security instrument at Deutsche Bank.
tags:
- trading
- market-data
- refinitiv
- lookup
capability:
exposes:
- type: mcp
namespace: market-data-refinitiv
port: 8080
tools:
- name: get-refinitiv-price
description: Given a Refinitiv instrument code, return the last price and bid/ask spread.
inputParameters:
- name: ric_code
in: body
type: string
description: The Refinitiv Instrument Code (RIC).
call: refinitiv.get-pricing
with:
ric: '{{ric_code}}'
outputParameters:
- name: last_price
type: number
mapping: $.data[0].fields.TRDPRC_1
- name: bid
type: number
mapping: $.data[0].fields.BID
- name: ask
type: number
mapping: $.data[0].fields.ASK
consumes:
- type: http
namespace: refinitiv
baseUri: https://api.refinitiv.com/data/pricing/v1
authentication:
type: bearer
token: $secrets.refinitiv_token
resources:
- name: pricing
path: /{{ric}}
inputParameters:
- name: ric
in: path
operations:
- name: get-pricing
method: GET
Retrieves a PagerDuty incident by ID for Deutsche Bank operations.
naftiko: '0.5'
info:
label: PagerDuty Incident Lookup
description: Retrieves a PagerDuty incident by ID for Deutsche Bank operations.
tags:
- operations
- pagerduty
- itsm
- lookup
capability:
exposes:
- type: mcp
namespace: ops-lookup
port: 8080
tools:
- name: get-pagerduty-incident
description: Given a PagerDuty incident ID, return the title, urgency, and status.
inputParameters:
- name: incident_id
in: body
type: string
description: The PagerDuty incident ID.
call: pagerduty.get-incident
with:
incident_id: '{{incident_id}}'
outputParameters:
- name: title
type: string
mapping: $.incident.title
- name: urgency
type: string
mapping: $.incident.urgency
- name: status
type: string
mapping: $.incident.status
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/{{incident_id}}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
When a new hire is created in Workday, provisions Microsoft 365 access, opens a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the new hire's division team.
naftiko: '0.5'
info:
label: New Employee Onboarding Orchestration
description: When a new hire is created in Workday, provisions Microsoft 365 access, opens a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message to the new hire's division team.
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-employee-onboarding
description: Given a Workday employee ID and start date, provision Microsoft 365 access, create a ServiceNow onboarding ticket, and send a Teams welcome message to the new hire's division channel.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: Workday worker ID for the new hire.
- name: start_date
in: body
type: string
description: Employee start date in ISO 8601 format.
- name: division_team_id
in: body
type: string
description: Microsoft Teams team ID for the new hire's banking division.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: provision-m365
type: call
call: msgraph.create-user
with:
displayName: '{{get-employee.full_name}}'
userPrincipalName: '{{get-employee.work_email}}'
department: '{{get-employee.department}}'
- name: create-snow-ticket
type: call
call: servicenow.create-incident
with:
category: hr_onboarding
short_description: 'New hire onboarding: {{get-employee.full_name}}'
assigned_group: IT_Onboarding
- name: welcome-message
type: call
call: msteams.send-channel-message
with:
team_id: '{{division_team_id}}'
channel_id: $secrets.teams_general_channel_id
text: 'Welcome to Deutsche Bank, {{get-employee.first_name}}! IT 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: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: https://deutschebank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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-channel-message
method: POST
Monitors ServiceNow tickets for SLA breaches and escalates overdue tickets by updating priority and notifying the IT service delivery manager in Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow SLA Breach Escalation
description: Monitors ServiceNow tickets for SLA breaches and escalates overdue tickets by updating priority and notifying the IT service delivery manager in Microsoft Teams.
tags:
- itsm
- sla
- servicenow
- microsoft-teams
- escalation
capability:
exposes:
- type: mcp
namespace: sla-management
port: 8080
tools:
- name: escalate-sla-breach
description: Given a ServiceNow incident number that has breached its SLA, update the ticket priority, reassign it, and notify the IT service delivery manager in Microsoft Teams.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number that has breached its SLA.
- name: breach_minutes
in: body
type: integer
description: Number of minutes the SLA has been exceeded.
- name: it_manager_upn
in: body
type: string
description: Microsoft 365 UPN of the IT service delivery manager.
steps:
- name: escalate-ticket
type: call
call: servicenow.update-incident
with:
number: '{{incident_number}}'
priority: 1
assigned_group: IT_Service_Delivery
work_notes: SLA breached by {{breach_minutes}} minutes. Escalated.
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{it_manager_upn}}'
text: 'SLA breach: {{incident_number}} is {{breach_minutes}}min overdue. Escalated to IT Service Delivery.'
consumes:
- type: http
namespace: servicenow
baseUri: https://deutschebank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{{number}}
inputParameters:
- name: number
in: path
operations:
- name: update-incident
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Queries Jira for sprint progress across platform engineering projects and posts a weekly digest to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: Jira Platform Engineering Sprint Digest
description: Queries Jira for sprint progress across platform engineering projects and posts a weekly digest to the engineering Microsoft Teams channel.
tags:
- devops
- engineering
- jira
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: eng-reporting
port: 8080
tools:
- name: digest-engineering-sprint
description: Given a Jira board ID and sprint ID, retrieve sprint issue counts and velocity metrics, then post a weekly progress digest to the platform engineering Microsoft Teams channel.
inputParameters:
- name: board_id
in: body
type: string
description: Jira board ID for the engineering team.
- name: sprint_id
in: body
type: string
description: Jira sprint ID to report on.
steps:
- name: get-sprint-issues
type: call
call: jira.get-sprint-issues
with:
board_id: '{{board_id}}'
sprint_id: '{{sprint_id}}'
- name: post-digest
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_engineering_team_id
channel_id: $secrets.teams_engineering_channel_id
text: 'Sprint digest — board {{board_id}} sprint {{sprint_id}}: {{get-sprint-issues.total}} total issues | {{get-sprint-issues.done}} done | {{get-sprint-issues.in_progress}} in progress'
consumes:
- type: http
namespace: jira
baseUri: https://deutschebank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $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
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 purchase order details from SAP S/4HANA for Deutsche Bank procurement teams.
naftiko: '0.5'
info:
label: SAP Purchase Order Lookup
description: Retrieves purchase order details from SAP S/4HANA for Deutsche Bank procurement teams.
tags:
- finance
- procurement
- sap
- lookup
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: Given a SAP purchase order number, return the PO status, vendor, and total amount.
inputParameters:
- name: po_number
in: body
type: string
description: SAP purchase order number.
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
consumes:
- type: http
namespace: sap-erp
baseUri: https://db-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 Azure Cost Management detects a spending anomaly, annotates Datadog, creates a ServiceNow review incident, and alerts the FinOps Microsoft Teams channel.
naftiko: '0.5'
info:
label: Azure Cloud Cost Anomaly Response
description: When Azure Cost Management detects a spending anomaly, annotates Datadog, creates a ServiceNow review incident, and alerts the FinOps Microsoft Teams channel.
tags:
- finops
- cloud
- azure
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-azure-cost-anomaly
description: Given an Azure cost anomaly alert with service name and overage amount, annotate Datadog, open a ServiceNow cost review incident, and notify the FinOps Microsoft Teams channel.
inputParameters:
- name: anomaly_id
in: body
type: string
description: Azure cost anomaly ID from Azure Cost Management.
- name: azure_service
in: body
type: string
description: Azure service name with the anomalous spend.
- name: estimated_overage_eur
in: body
type: number
description: Estimated overage amount in EUR.
steps:
- name: annotate-dd
type: call
call: datadog.create-event
with:
title: 'Azure Cost Anomaly: {{azure_service}}'
text: 'Anomaly {{anomaly_id}} — estimated overage: €{{estimated_overage_eur}}'
alert_type: warning
- name: open-review-incident
type: call
call: servicenow.create-incident
with:
category: cloud_cost
short_description: 'Azure cost anomaly: {{azure_service}} — €{{estimated_overage_eur}}'
assigned_group: FinOps
- name: notify-finops
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_finops_team_id
channel_id: $secrets.teams_finops_channel_id
text: 'Azure cost anomaly: {{azure_service}} | €{{estimated_overage_eur}} overage | SNOW: {{open-review-incident.number}} | Datadog: {{annotate-dd.url}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://deutschebank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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-channel-message
method: POST
Retrieves the current run status for a Terraform Cloud workspace used in Deutsche Bank infrastructure provisioning.
naftiko: '0.5'
info:
label: Terraform Workspace Status Lookup
description: Retrieves the current run status for a Terraform Cloud workspace used in Deutsche Bank infrastructure provisioning.
tags:
- cloud
- infrastructure
- terraform
- lookup
capability:
exposes:
- type: mcp
namespace: infra-lookup
port: 8080
tools:
- name: get-workspace-status
description: Given a Terraform Cloud workspace name, return the current run status.
inputParameters:
- name: workspace_name
in: body
type: string
description: The Terraform Cloud workspace name.
call: terraform.get-workspace
with:
workspace_name: '{{workspace_name}}'
outputParameters:
- name: current_run_status
type: string
mapping: $.data.attributes.current-run.status
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: workspaces
path: /organizations/deutsche-bank/workspaces/{{workspace_name}}
inputParameters:
- name: workspace_name
in: path
operations:
- name: get-workspace
method: GET
Retrieves vendor master data from SAP by vendor number for Deutsche Bank procurement.
naftiko: '0.5'
info:
label: SAP Vendor Master Lookup
description: Retrieves vendor master data from SAP by vendor number for Deutsche Bank procurement.
tags:
- finance
- procurement
- sap
- lookup
capability:
exposes:
- type: mcp
namespace: erp-vendor
port: 8080
tools:
- name: get-vendor
description: Given a SAP vendor number, return the vendor name and payment terms.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor master number.
call: sap-erp.get-vendor
with:
vendor_id: '{{vendor_number}}'
outputParameters:
- name: vendor_name
type: string
mapping: $.d.CompanyName
- name: payment_terms
type: string
mapping: $.d.PaymentTerms
consumes:
- type: http
namespace: sap-erp
baseUri: https://db-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_Supplier('{{vendor_id}}')
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
When an employee's role changes in Workday, updates their Microsoft 365 security group memberships and creates a ServiceNow access review task for IT security to validate the permission changes.
naftiko: '0.5'
info:
label: Microsoft 365 Access Provisioning on Role Change
description: When an employee's role changes in Workday, updates their Microsoft 365 security group memberships and creates a ServiceNow access review task for IT security to validate the permission changes.
tags:
- hr
- access-management
- workday
- microsoft-365
- servicenow
capability:
exposes:
- type: mcp
namespace: access-management
port: 8080
tools:
- name: reprovision-access-on-role-change
description: Given a Workday employee ID, old and new Microsoft 365 group IDs, update the user's group memberships and create a ServiceNow access review task for IT security validation.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: Workday worker ID of the employee changing roles.
- name: upn
in: body
type: string
description: Microsoft 365 UPN of the employee.
- name: old_group_id
in: body
type: string
description: Microsoft 365 group ID to remove the user from.
- name: new_group_id
in: body
type: string
description: Microsoft 365 group ID to add the user to.
- name: new_role_title
in: body
type: string
description: New job title for context in the access review task.
steps:
- name: remove-old-group
type: call
call: msgraph.remove-group-member
with:
group_id: '{{old_group_id}}'
user_id: '{{upn}}'
- name: add-new-group
type: call
call: msgraph-new.add-group-member
with:
group_id: '{{new_group_id}}'
user_id: '{{upn}}'
- name: create-access-review
type: call
call: servicenow.create-task
with:
category: access_review
short_description: 'Access review: {{upn}} role change to {{new_role_title}}'
assigned_group: IT_Security
consumes:
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: group-members
path: /groups/{{group_id}}/members/{{user_id}}/$ref
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: remove-group-member
method: DELETE
- type: http
namespace: msgraph-new
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: group-members
path: /groups/{{group_id}}/members/$ref
inputParameters:
- name: group_id
in: path
operations:
- name: add-group-member
method: POST
- type: http
namespace: servicenow
baseUri: https://deutschebank.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 a Zendesk support ticket by ID for Deutsche Bank customer service.
naftiko: '0.5'
info:
label: Zendesk Ticket Lookup
description: Retrieves a Zendesk support ticket by ID for Deutsche Bank customer service.
tags:
- support
- zendesk
- customer-service
- lookup
capability:
exposes:
- type: mcp
namespace: support-lookup
port: 8080
tools:
- name: get-ticket
description: Given a Zendesk ticket ID, return the subject, status, and priority.
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://deutschebank.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
Retrieves the currently on-call engineer for a Deutsche Bank IT service from PagerDuty for use at the start of incident response workflows.
naftiko: '0.5'
info:
label: PagerDuty On-Call Roster Lookup
description: Retrieves the currently on-call engineer for a Deutsche Bank IT service from PagerDuty for use at the start of incident response workflows.
tags:
- incident-response
- operations
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: oncall-lookup
port: 8080
tools:
- name: get-current-oncall
description: Given a PagerDuty schedule ID, return the name and email of the current on-call engineer for that service. Use at the beginning of incident response to identify who to engage immediately.
inputParameters:
- name: schedule_id
in: body
type: string
description: PagerDuty schedule ID for the service's on-call rotation.
call: pagerduty.get-oncall
with:
schedule_id: '{{schedule_id}}'
outputParameters:
- name: user_name
type: string
mapping: $.oncalls[0].user.name
- name: user_email
type: string
mapping: $.oncalls[0].user.email
consumes:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_api_key
placement: header
resources:
- name: oncalls
path: /oncalls
inputParameters:
- name: schedule_id
in: query
operations:
- name: get-oncall
method: GET
When a new headcount requisition is approved in Workday, creates a Jira recruiting task and notifies the talent acquisition team in Microsoft Teams to begin sourcing.
naftiko: '0.5'
info:
label: Workday Position Approval for Recruiting
description: When a new headcount requisition is approved in Workday, creates a Jira recruiting task and notifies the talent acquisition team in Microsoft Teams to begin sourcing.
tags:
- hr
- recruiting
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: activate-recruiting-position
description: Given a Workday position requisition ID, job title, and division, create a Jira recruiting task and notify the talent acquisition Microsoft Teams channel to begin sourcing.
inputParameters:
- name: requisition_id
in: body
type: string
description: Workday position requisition ID.
- name: job_title
in: body
type: string
description: Job title for the open position.
- name: division
in: body
type: string
description: Deutsche Bank division requesting the headcount.
steps:
- name: create-recruiting-task
type: call
call: jira.create-issue
with:
project_key: HR
issuetype: Task
summary: 'Recruiting: {{job_title}} — {{division}}'
description: Position requisition {{requisition_id}} approved. Begin sourcing for {{job_title}} in {{division}}.
- name: notify-ta-team
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_hr_team_id
channel_id: $secrets.teams_ta_channel_id
text: 'New position to fill: {{job_title}} in {{division}} | Jira: {{create-recruiting-task.key}} | Workday req: {{requisition_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://deutschebank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the current balance for a specified SAP general ledger account and company code at Deutsche Bank.
naftiko: '0.5'
info:
label: SAP General Ledger Balance Lookup
description: Retrieves the current balance for a specified SAP general ledger account and company code at Deutsche Bank.
tags:
- finance
- erp
- sap
- lookup
capability:
exposes:
- type: mcp
namespace: erp-finance
port: 8080
tools:
- name: get-gl-balance
description: Given an SAP GL account number and company code, return the current period balance and currency.
inputParameters:
- name: gl_account
in: body
type: string
description: The SAP general ledger account number.
- name: company_code
in: body
type: string
description: The SAP company code.
call: sap-erp.get-gl-balance
with:
gl_account: '{{gl_account}}'
company_code: '{{company_code}}'
outputParameters:
- name: balance
type: string
mapping: $.d.Balance
- name: currency
type: string
mapping: $.d.Currency
consumes:
- type: http
namespace: sap-erp
baseUri: https://db-s4.sap.com/sap/opu/odata/sap/API_GLACCOUNTBALANCE
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: gl-balances
path: /GLAccountBalanceSet(GLAccount='{{gl_account}}',CompanyCode='{{company_code}}')
inputParameters:
- name: gl_account
in: path
- name: company_code
in: path
operations:
- name: get-gl-balance
method: GET
Enriches a Salesforce client account with LinkedIn executive profile data to give relationship managers context before client meetings and business development calls.
naftiko: '0.5'
info:
label: Salesforce Client Relationship Enrichment
description: Enriches a Salesforce client account with LinkedIn executive profile data to give relationship managers context before client meetings and business development calls.
tags:
- sales
- crm
- salesforce
- linkedin
- relationship-management
capability:
exposes:
- type: mcp
namespace: client-intelligence
port: 8080
tools:
- name: enrich-client-from-linkedin
description: Given a Salesforce contact ID and LinkedIn member URN for a client executive, retrieve the LinkedIn profile and update the Salesforce contact with current title, industry, and profile URL for relationship managers.
inputParameters:
- name: contact_id
in: body
type: string
description: Salesforce contact ID for the client executive.
- name: linkedin_member_urn
in: body
type: string
description: LinkedIn member URN for the client executive.
steps:
- name: get-linkedin-profile
type: call
call: linkedin.get-profile
with:
member_urn: '{{linkedin_member_urn}}'
- name: update-contact
type: call
call: salesforce.update-contact
with:
contact_id: '{{contact_id}}'
title: '{{get-linkedin-profile.headline}}'
linkedin_url: https://www.linkedin.com/in/{{get-linkedin-profile.vanityName}}
industry: '{{get-linkedin-profile.industry}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: profiles
path: /people/{{member_urn}}
inputParameters:
- name: member_urn
in: path
operations:
- name: get-profile
method: GET
- type: http
namespace: salesforce
baseUri: https://deutschebank.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 a Confluence page by ID for Deutsche Bank knowledge management.
naftiko: '0.5'
info:
label: Confluence Page Lookup
description: Retrieves a Confluence page by ID for Deutsche Bank knowledge management.
tags:
- knowledge
- confluence
- lookup
capability:
exposes:
- type: mcp
namespace: knowledge-lookup
port: 8080
tools:
- name: get-confluence-page
description: Given a Confluence page ID, return the page title, body content, and last modified date.
inputParameters:
- name: page_id
in: body
type: string
description: The Confluence page ID.
call: confluence.get-page
with:
page_id: '{{page_id}}'
outputParameters:
- name: title
type: string
mapping: $.title
- name: body
type: string
mapping: $.body.storage.value
consumes:
- type: http
namespace: confluence
baseUri: https://deutschebank.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content/{{page_id}}?expand=body.storage,version
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
Retrieves the last refresh status for a Power BI dataset used in Deutsche Bank financial reporting.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh Status Lookup
description: Retrieves the last refresh status for a Power BI dataset used in Deutsche Bank financial reporting.
tags:
- analytics
- power-bi
- reporting
- lookup
capability:
exposes:
- type: mcp
namespace: bi-lookup
port: 8080
tools:
- name: get-dataset-refresh-status
description: Given a Power BI workspace and dataset ID, return the last refresh status.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace ID.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.get-refresh-history
with:
group_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
outputParameters:
- name: status
type: string
mapping: $.value[0].status
- name: end_time
type: string
mapping: $.value[0].endTime
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: refresh-history
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-refresh-history
method: GET
Retrieves metadata for a Deutsche Bank GitHub repository including default branch, open issues count, and last push date.
naftiko: '0.5'
info:
label: GitHub Repository Lookup
description: Retrieves metadata for a Deutsche Bank GitHub repository including default branch, open issues count, and last push date.
tags:
- devops
- github
- lookup
capability:
exposes:
- type: mcp
namespace: devops-lookup
port: 8080
tools:
- name: get-repository
description: Given a GitHub repository name, return the default branch and open issues count.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name.
call: github.get-repo
with:
repo: '{{repo_name}}'
outputParameters:
- name: default_branch
type: string
mapping: $.default_branch
- name: open_issues
type: number
mapping: $.open_issues_count
consumes:
- 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
Generates a weekly digest of the Salesforce corporate banking pipeline by deal stage and sends the summary to the global markets Microsoft Teams channel.
naftiko: '0.5'
info:
label: Salesforce Pipeline Revenue Forecast Digest
description: Generates a weekly digest of the Salesforce corporate banking pipeline by deal stage and sends the summary to the global markets Microsoft Teams channel.
tags:
- sales
- crm
- salesforce
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pipeline-reporting
port: 8080
tools:
- name: digest-pipeline-forecast
description: Given a Salesforce division filter and reporting date, query the open opportunity pipeline by stage and post a weekly revenue forecast digest to the global markets Microsoft Teams channel.
inputParameters:
- name: division
in: body
type: string
description: Deutsche Bank division to filter opportunities (e.g. Corporate Bank, Investment Bank).
- name: report_date
in: body
type: string
description: ISO 8601 date for the pipeline snapshot.
steps:
- name: query-pipeline
type: call
call: salesforce.query-opportunities
with:
q: SELECT StageName, COUNT(Id) as count, SUM(Amount) as total_value FROM Opportunity WHERE IsClosed = false AND Division__c = '{{division}}' GROUP BY StageName
- name: post-digest
type: call
call: msteams.send-channel-message
with:
team_id: $secrets.teams_markets_team_id
channel_id: $secrets.teams_markets_channel_id
text: 'Pipeline forecast — {{division}} as of {{report_date}}: {{query-pipeline.total}} open deals. Review in Salesforce for stage breakdown.'
consumes:
- type: http
namespace: salesforce
baseUri: https://deutschebank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
inputParameters:
- name: q
in: query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{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 Power BI dataset refresh for Deutsche Bank's executive financial dashboard after Snowflake data pipelines complete, ensuring current P&L and revenue data is available to leadership.
naftiko: '0.5'
info:
label: Power BI Executive Financial Dashboard Refresh
description: Triggers a Power BI dataset refresh for Deutsche Bank's executive financial dashboard after Snowflake data pipelines complete, ensuring current P&L and revenue data is available to leadership.
tags:
- analytics
- finance
- power-bi
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: executive-reporting
port: 8080
tools:
- name: refresh-executive-financial-dashboard
description: Given a Power BI dataset ID and pipeline name, verify the latest Snowflake data load and trigger a Power BI dataset refresh for the executive financial leadership dashboard.
inputParameters:
- name: dataset_id
in: body
type: string
description: Power BI dataset ID for the executive financial report.
- name: pipeline_name
in: body
type: string
description: Snowflake pipeline name that completed loading.
steps:
- name: verify-pipeline
type: call
call: snowflake.execute-query
with:
statement: SELECT MAX(loaded_at) as last_load FROM pipeline_audit WHERE pipeline = '{{pipeline_name}}' AND status = 'success'
- name: refresh-dataset
type: call
call: powerbi.refresh-dataset
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://deutschebank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Retrieves the status of a DocuSign envelope for Deutsche Bank contract signing workflows.
naftiko: '0.5'
info:
label: DocuSign Envelope Status Lookup
description: Retrieves the status of a DocuSign envelope for Deutsche Bank contract signing workflows.
tags:
- legal
- docusign
- contracts
- lookup
capability:
exposes:
- type: mcp
namespace: legal-lookup
port: 8080
tools:
- name: get-envelope-status
description: Given a DocuSign envelope ID, return the envelope status and sender name.
inputParameters:
- name: envelope_id
in: body
type: string
description: The DocuSign envelope ID.
call: docusign.get-envelope
with:
envelope_id: '{{envelope_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: sender
type: string
mapping: $.sender.userName
consumes:
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /accounts/$secrets.docusign_account_id/envelopes/{{envelope_id}}
inputParameters:
- name: envelope_id
in: path
operations:
- name: get-envelope
method: GET
Retrieves an Okta user profile by login email for Deutsche Bank identity management.
naftiko: '0.5'
info:
label: Okta User Status Lookup
description: Retrieves an Okta user profile by login email for Deutsche Bank identity management.
tags:
- security
- identity
- okta
- lookup
capability:
exposes:
- type: mcp
namespace: identity-lookup
port: 8080
tools:
- name: get-okta-user
description: Given an Okta user login email, return the user status and last login.
inputParameters:
- name: user_email
in: body
type: string
description: The user login 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://deutschebank.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: users
path: /users/{{login}}
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
Executes a Snowflake query to retrieve daily trade volume aggregates for a given Deutsche Bank trading desk.
naftiko: '0.5'
info:
label: Snowflake Trading Data Query
description: Executes a Snowflake query to retrieve daily trade volume aggregates for a given Deutsche Bank trading desk.
tags:
- data
- analytics
- snowflake
- trading
- lookup
capability:
exposes:
- type: mcp
namespace: trading-analytics
port: 8080
tools:
- name: get-trade-volume
description: Given a trading desk code and date, return aggregated trade volume from Snowflake.
inputParameters:
- name: desk_code
in: body
type: string
description: The trading desk code.
- name: trade_date
in: body
type: string
description: Trade date in YYYY-MM-DD format.
call: snowflake.execute-statement
with:
statement: SELECT desk_code, SUM(volume) as total_volume FROM trading.daily_trades WHERE desk_code = '{{desk_code}}' AND trade_date = '{{trade_date}}' GROUP BY desk_code
outputParameters:
- name: total_volume
type: number
mapping: $.data[0].total_volume
consumes:
- type: http
namespace: snowflake
baseUri: https://deutschebank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Generates KPI digest at Dow Jones from Snowflake, Oracle, Power BI, and email.
naftiko: '0.5'
info:
label: Weekly KPI Digest Pipeline
description: Generates KPI digest at Dow Jones 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 Dow Jones.
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://dowjones.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.dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.email_token
resources:
- name: messages
path: /send
operations:
- name: send
method: POST
Checks Okta user at Dow Jones.
naftiko: '0.5'
info:
label: Okta User Check
description: Checks Okta user at Dow Jones.
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: okta-user
port: 8080
tools:
- name: check-user
description: Check user at Dow Jones.
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://dowjones.com.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: users
path: /users/{{email}}
inputParameters:
- name: email
in: path
operations:
- name: get-user
method: GET
Routes changes at Dow Jones through ServiceNow and CAB approval.
naftiko: '0.5'
info:
label: Change Management Pipeline
description: Routes changes at Dow Jones 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 Dow Jones.
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://dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.email_token
resources:
- name: messages
path: /send
operations:
- name: send
method: POST
Retrieves SharePoint metadata at Dow Jones.
naftiko: '0.5'
info:
label: SharePoint File Metadata
description: Retrieves SharePoint metadata at Dow Jones.
tags:
- document-management
- sharepoint
- collaboration
capability:
exposes:
- type: mcp
namespace: sp-docs
port: 8080
tools:
- name: get-file
description: Look up file at Dow Jones.
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 Dow Jones via surveys, AI sentiment, and Power BI.
naftiko: '0.5'
info:
label: Customer Feedback Pipeline
description: Analyzes feedback at Dow Jones 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 Dow Jones.
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.dowjones.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 Dow Jones via scanning, entitlements, and procurement.
naftiko: '0.5'
info:
label: License Compliance Pipeline
description: Checks license compliance at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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.dowjones.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://dowjones.com.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
Plans capacity at Dow Jones by collecting utilization and forecasting.
naftiko: '0.5'
info:
label: Capacity Planning Pipeline
description: Plans capacity at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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://dowjones.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
Retrieves the current status of an AWS CloudFormation stack including resources, events, and drift detection results.
naftiko: '0.5'
info:
label: CloudFormation Stack Status
description: Retrieves the current status of an AWS CloudFormation stack including resources, events, and drift detection results.
tags:
- infrastructure
- cloudformation
capability:
exposes:
- type: mcp
namespace: cloud-infra
port: 8080
tools:
- name: get-stack-status
description: Fetch AWS CloudFormation stack status by stack name.
inputParameters:
- name: stack_name
in: body
type: string
description: The CloudFormation stack name.
call: cfn.describe-stack
with:
stack_name: '{{stack_name}}'
consumes:
- type: http
namespace: cfn
baseUri: https://cloudformation.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_token
resources:
- name: stacks
path: /
operations:
- name: describe-stack
method: POST
Publishes an Instagram story from a CMS-provided image URL and caption, tracking engagement via a Datadog custom metric.
naftiko: '0.5'
info:
label: Instagram Story Publish
description: Publishes an Instagram story from a CMS-provided image URL and caption, tracking engagement via a Datadog custom metric.
tags:
- social-media
- publishing
- instagram
- datadog
capability:
exposes:
- type: mcp
namespace: social-instagram
port: 8080
tools:
- name: publish-instagram-story
description: Post an Instagram story with tracking and publish a Datadog metric.
inputParameters:
- name: image_url
in: body
type: string
description: URL of the image to post.
- name: caption
in: body
type: string
description: Story caption text.
steps:
- name: create-post
type: call
call: instagram.create-story
with:
image_url: '{{image_url}}'
caption: '{{caption}}'
- name: track-metric
type: call
call: datadog.submit-metric
with:
metric: social.instagram.stories_published
value: 1
tags: channel:instagram,type:story
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: stories
path: /media
operations:
- name: create-story
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: metrics
path: /series
operations:
- name: submit-metric
method: POST
Checks SAP PO at Dow Jones.
naftiko: '0.5'
info:
label: SAP PO Check
description: Checks SAP PO at Dow Jones.
tags:
- procurement
- sap
- purchase-orders
capability:
exposes:
- type: mcp
namespace: sap-po
port: 8080
tools:
- name: get-po
description: Check PO at Dow Jones.
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.dowjones.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
Creates a new lead in Salesforce from an inbound subscription inquiry and notifies the sales team in Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Lead Capture
description: Creates a new lead in Salesforce from an inbound subscription inquiry and notifies the sales team in Microsoft Teams.
tags:
- sales
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sales-leads
port: 8080
tools:
- name: capture-lead
description: Create a Salesforce lead from inquiry data and notify the sales team.
inputParameters:
- name: email
in: body
type: string
description: Lead email address.
- name: company
in: body
type: string
description: Lead company name.
- name: source
in: body
type: string
description: Lead source (web, event, referral).
steps:
- name: create-lead
type: call
call: salesforce.create-lead
with:
email: '{{email}}'
company: '{{company}}'
source: '{{source}}'
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: sales_leads
text: 'New lead from {{company}} ({{source}}): {{email}}. SF ID: {{create-lead.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://dowjones.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: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks Power BI refresh at Dow Jones.
naftiko: '0.5'
info:
label: Power BI Refresh Check
description: Checks Power BI refresh at Dow Jones.
tags:
- analytics
- power-bi
- dashboards
capability:
exposes:
- type: mcp
namespace: pbi-refresh
port: 8080
tools:
- name: check-refresh
description: Check refresh at Dow Jones.
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 Dow Jones.
naftiko: '0.5'
info:
label: Release Readiness Pipeline
description: Checks release readiness at Dow Jones.
tags:
- release-management
- devops
- quality
capability:
exposes:
- type: mcp
namespace: release-ready
port: 8080
tools:
- name: check-release
description: Check release at Dow Jones.
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/dowjones.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.dowjones.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.dowjones.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://dowjones.com.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Checks GitHub repo at Dow Jones.
naftiko: '0.5'
info:
label: GitHub Repo Check
description: Checks GitHub repo at Dow Jones.
tags:
- devops
- github
- version-control
capability:
exposes:
- type: mcp
namespace: gh-repo
port: 8080
tools:
- name: get-branch
description: Check branch at Dow Jones.
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 Dow Jones via Concur, compliance checks, and email.
naftiko: '0.5'
info:
label: Expense Audit Pipeline
description: Audits expenses at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.email_token
resources:
- name: messages
path: /send
operations:
- name: send
method: POST
Triggers a Google Apps Script function by script ID and function name, and returns the execution result.
naftiko: '0.5'
info:
label: Google Apps Script Execution
description: Triggers a Google Apps Script function by script ID and function name, and returns the execution result.
tags:
- automation
- google-apps-script
capability:
exposes:
- type: mcp
namespace: gscript-automation
port: 8080
tools:
- name: run-apps-script
description: Execute a Google Apps Script function by script ID and function name.
inputParameters:
- name: script_id
in: body
type: string
description: The Apps Script project ID.
- name: function_name
in: body
type: string
description: The function name to execute.
- name: parameters
in: body
type: string
description: JSON array of function parameters.
call: gscript.run
with:
script_id: '{{script_id}}'
function: '{{function_name}}'
parameters: '{{parameters}}'
consumes:
- type: http
namespace: gscript
baseUri: https://script.googleapis.com/v1
authentication:
type: bearer
token: $secrets.google_apps_script_token
resources:
- name: scripts
path: /scripts/{{script_id}}:run
inputParameters:
- name: script_id
in: path
operations:
- name: run
method: POST
Monitors SLAs at Dow Jones via Datadog and Slack.
naftiko: '0.5'
info:
label: SLA Monitoring Pipeline
description: Monitors SLAs at Dow Jones 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 Dow Jones.
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://dowjones.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
Scans a draft article through Palo Alto Networks content filter, checks for restricted terms in Elasticsearch, and routes flagged content to a ServiceNow compliance task.
naftiko: '0.5'
info:
label: Content Compliance Review
description: Scans a draft article through Palo Alto Networks content filter, checks for restricted terms in Elasticsearch, and routes flagged content to a ServiceNow compliance task.
tags:
- compliance
- publishing
- palo-alto-networks
- elasticsearch
- servicenow
capability:
exposes:
- type: mcp
namespace: content-compliance
port: 8080
tools:
- name: review-content-compliance
description: Scan article for compliance issues, check restricted terms, and route flagged items to compliance team.
inputParameters:
- name: article_id
in: body
type: string
description: The CMS article ID to review.
- name: author_email
in: body
type: string
description: Author email for notification.
steps:
- name: fetch-article
type: call
call: cms.get-article
with:
article_id: '{{article_id}}'
- name: scan-content
type: call
call: paloalto.scan-content
with:
content: '{{fetch-article.content}}'
- name: check-terms
type: call
call: elasticsearch.search
with:
index: restricted_terms
query: '{{fetch-article.content}}'
- name: create-review-task
type: call
call: servicenow.create-task
with:
short_description: 'Compliance review: {{fetch-article.headline}}'
description: 'Scan result: {{scan-content.status}}. Restricted terms found: {{check-terms.hits_total}}. Author: {{author_email}}.'
assigned_group: Editorial_Compliance
consumes:
- type: http
namespace: cms
baseUri: https://cms.dowjones.com/api/v2
authentication:
type: bearer
token: $secrets.cms_token
resources:
- name: articles
path: /articles/{{article_id}}
inputParameters:
- name: article_id
in: path
operations:
- name: get-article
method: GET
- type: http
namespace: paloalto
baseUri: https://api.paloaltonetworks.com/v1
authentication:
type: bearer
token: $secrets.paloalto_token
resources:
- name: scans
path: /content-scan
operations:
- name: scan-content
method: POST
- type: http
namespace: elasticsearch
baseUri: https://search.dowjones.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
- type: http
namespace: servicenow
baseUri: https://dowjones.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
Reviews vendors at Dow Jones.
naftiko: '0.5'
info:
label: Quarterly Vendor Review Pipeline
description: Reviews vendors at Dow Jones.
tags:
- procurement
- vendor-management
- review
capability:
exposes:
- type: mcp
namespace: vendor-review
port: 8080
tools:
- name: review-vendor
description: Review vendors at Dow Jones.
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.dowjones.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.dowjones.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.dowjones.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
Reads editorial assignments from Google Forms responses, creates corresponding tasks in Microsoft Planner, and notifies editors in Microsoft Teams.
naftiko: '0.5'
info:
label: Editorial Calendar Sync
description: Reads editorial assignments from Google Forms responses, creates corresponding tasks in Microsoft Planner, and notifies editors in Microsoft Teams.
tags:
- publishing
- planning
- google-forms
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: editorial-calendar
port: 8080
tools:
- name: sync-editorial-calendar
description: Pull form submissions, create planner tasks, and notify editors.
inputParameters:
- name: form_id
in: body
type: string
description: The Google Forms form identifier.
- name: team_channel
in: body
type: string
description: Microsoft Teams channel for notifications.
steps:
- name: get-responses
type: call
call: gforms.get-responses
with:
form_id: '{{form_id}}'
- name: create-tasks
type: call
call: planner.create-task
with:
plan_id: editorial_plan
title: '{{get-responses.latest_title}}'
due_date: '{{get-responses.latest_due_date}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: '{{team_channel}}'
text: 'New editorial assignment: {{get-responses.latest_title}} due {{get-responses.latest_due_date}}.'
consumes:
- type: http
namespace: gforms
baseUri: https://forms.googleapis.com/v1
authentication:
type: bearer
token: $secrets.google_forms_token
resources:
- name: responses
path: /forms/{{form_id}}/responses
inputParameters:
- name: form_id
in: path
operations:
- name: get-responses
method: GET
- 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: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks K8s pod health at Dow Jones.
naftiko: '0.5'
info:
label: K8s Pod Health
description: Checks K8s pod health at Dow Jones.
tags:
- containers
- kubernetes
- infrastructure
capability:
exposes:
- type: mcp
namespace: k8s-pod
port: 8080
tools:
- name: check-pod
description: Check pod at Dow Jones.
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.dowjones.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 Confluence at Dow Jones.
naftiko: '0.5'
info:
label: Confluence Article Search
description: Searches Confluence at Dow Jones.
tags:
- knowledge-management
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: confluence-search
port: 8080
tools:
- name: search-articles
description: Search Confluence at Dow Jones.
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://dowjones.com.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: content
path: /content/search
operations:
- name: search
method: GET
Fetches results from a Google Optimize experiment and returns variant performance metrics.
naftiko: '0.5'
info:
label: Google Optimize A/B Test Results
description: Fetches results from a Google Optimize experiment and returns variant performance metrics.
tags:
- analytics
- experimentation
- google-optimize
capability:
exposes:
- type: mcp
namespace: experimentation
port: 8080
tools:
- name: get-experiment-results
description: Retrieve Google Optimize experiment results by experiment ID.
inputParameters:
- name: experiment_id
in: body
type: string
description: The Google Optimize experiment identifier.
call: optimize.get-experiment
with:
experiment_id: '{{experiment_id}}'
consumes:
- type: http
namespace: optimize
baseUri: https://www.googleapis.com/analytics/v3
authentication:
type: bearer
token: $secrets.google_optimize_token
resources:
- name: experiments
path: /management/accounts/dowjones/experiments/{{experiment_id}}
inputParameters:
- name: experiment_id
in: path
operations:
- name: get-experiment
method: GET
Checks New Relic APM at Dow Jones.
naftiko: '0.5'
info:
label: New Relic APM Check
description: Checks New Relic APM at Dow Jones.
tags:
- monitoring
- new-relic
- apm
capability:
exposes:
- type: mcp
namespace: nr-apm
port: 8080
tools:
- name: check-apm
description: Check APM at Dow Jones.
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
Maintains KB at Dow Jones by finding stale articles and notifying owners.
naftiko: '0.5'
info:
label: Knowledge Base Maintenance Pipeline
description: Maintains KB at Dow Jones 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 Dow Jones.
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://dowjones.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.dowjones.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
Checks the status of an Azure Databricks job run and returns the run state, result, and execution duration.
naftiko: '0.5'
info:
label: Azure Databricks Job Status
description: Checks the status of an Azure Databricks job run and returns the run state, result, and execution duration.
tags:
- data
- azure-databricks
capability:
exposes:
- type: mcp
namespace: databricks-ops
port: 8080
tools:
- name: get-job-status
description: Fetch Azure Databricks job run status by run ID.
inputParameters:
- name: run_id
in: body
type: string
description: The Databricks run identifier.
call: databricks.get-run
with:
run_id: '{{run_id}}'
consumes:
- type: http
namespace: databricks
baseUri: https://eastus.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: runs
path: /jobs/runs/get
operations:
- name: get-run
method: GET
Initiates the SAP monthly financial close process, validates balances against Oracle Cloud, and generates a Crystal Reports summary for the finance team via SharePoint.
naftiko: '0.5'
info:
label: SAP Financial Close Orchestrator
description: Initiates the SAP monthly financial close process, validates balances against Oracle Cloud, and generates a Crystal Reports summary for the finance team via SharePoint.
tags:
- finance
- sap
- oracle-cloud
- crystal-reports
- sharepoint
capability:
exposes:
- type: mcp
namespace: financial-close
port: 8080
tools:
- name: run-financial-close
description: Execute monthly close in SAP, cross-check Oracle, and generate finance report.
inputParameters:
- name: period
in: body
type: string
description: The fiscal period (e.g., 2026-03).
- name: company_code
in: body
type: string
description: SAP company code.
steps:
- name: close-period
type: call
call: sap.close-period
with:
period: '{{period}}'
company_code: '{{company_code}}'
- name: validate-oracle
type: call
call: oraclecloud.get-balances
with:
period: '{{period}}'
- name: generate-report
type: call
call: crystal.generate-report
with:
template_id: monthly_close
parameters: '{"period":"{{period}}","sap_balance":"{{close-period.balance}}","oracle_balance":"{{validate-oracle.balance}}"}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: finance_site
folder_path: MonthlyClose/{{period}}
file_name: close_report_{{period}}.pdf
content: '{{generate-report.output_url}}'
consumes:
- type: http
namespace: sap
baseUri: https://dowjones-sap.s4hana.cloud/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: periods
path: /financial-close
operations:
- name: close-period
method: POST
- type: http
namespace: oraclecloud
baseUri: https://usageapi.us-ashburn-1.oci.oraclecloud.com/20200107
authentication:
type: bearer
token: $secrets.oracle_cloud_token
resources:
- name: balances
path: /balances
operations:
- name: get-balances
method: POST
- type: http
namespace: crystal
baseUri: https://reports.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.crystal_reports_token
resources:
- name: reports
path: /reports/generate
operations:
- name: generate-report
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
When a subscription nears expiration in SAP, sends a renewal reminder via Microsoft Outlook, creates a follow-up task in Salesforce, and logs the outreach in Datadog.
naftiko: '0.5'
info:
label: Subscriber Renewal Orchestrator
description: When a subscription nears expiration in SAP, sends a renewal reminder via Microsoft Outlook, creates a follow-up task in Salesforce, and logs the outreach in Datadog.
tags:
- subscriptions
- renewals
- sap
- microsoft-outlook
- salesforce
- datadog
capability:
exposes:
- type: mcp
namespace: renewals
port: 8080
tools:
- name: trigger-renewal-outreach
description: Send renewal reminders, create follow-up tasks, and log the outreach.
inputParameters:
- name: account_id
in: body
type: string
description: The SAP subscription account ID.
- name: subscriber_email
in: body
type: string
description: Subscriber email address.
steps:
- name: get-subscription
type: call
call: sap.get-subscription
with:
account_id: '{{account_id}}'
- name: send-reminder
type: call
call: outlook.send-email
with:
to: '{{subscriber_email}}'
subject: Your Dow Jones subscription expires {{get-subscription.expiry_date}}
body: Dear subscriber, your {{get-subscription.plan_name}} plan expires on {{get-subscription.expiry_date}}. Renew now to maintain access.
- name: create-task
type: call
call: salesforce.create-task
with:
subject: 'Renewal follow-up: {{account_id}}'
description: Subscription {{get-subscription.plan_name}} expiring {{get-subscription.expiry_date}}.
due_date: '{{get-subscription.expiry_date}}'
- name: log-outreach
type: call
call: datadog.send-event
with:
title: 'Renewal outreach: {{account_id}}'
text: Reminder sent to {{subscriber_email}} for plan {{get-subscription.plan_name}}
tags: renewals,subscriptions
consumes:
- type: http
namespace: sap
baseUri: https://dowjones-sap.s4hana.cloud/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: subscriptions
path: /subscriptions/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/noreply@dowjones.com/sendMail
operations:
- name: send-email
method: POST
- type: http
namespace: salesforce
baseUri: https://dowjones.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Reviews access at Dow Jones via Okta, IAM, and Jira.
naftiko: '0.5'
info:
label: Access Review Pipeline
description: Reviews access at Dow Jones 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 Dow Jones.
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://dowjones.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.dowjones.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://dowjones.com.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Publishes a post to the Dow Jones Facebook page with a link and message text.
naftiko: '0.5'
info:
label: Facebook Page Post
description: Publishes a post to the Dow Jones Facebook page with a link and message text.
tags:
- social-media
- facebook
capability:
exposes:
- type: mcp
namespace: social-facebook
port: 8080
tools:
- name: post-to-facebook
description: Publish a post to the Dow Jones Facebook page.
inputParameters:
- name: message
in: body
type: string
description: The post message text.
- name: link
in: body
type: string
description: URL to attach to the post.
call: facebook.create-post
with:
message: '{{message}}'
link: '{{link}}'
consumes:
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: posts
path: /me/feed
operations:
- name: create-post
method: POST
Pulls subscriber engagement data from Google Analytics and SAP subscription records, runs a churn prediction in Azure Databricks, and creates a retention campaign in Salesforce.
naftiko: '0.5'
info:
label: Subscriber Churn Prediction Pipeline
description: Pulls subscriber engagement data from Google Analytics and SAP subscription records, runs a churn prediction in Azure Databricks, and creates a retention campaign in Salesforce.
tags:
- subscriptions
- analytics
- google-analytics
- sap
- azure-databricks
- salesforce
capability:
exposes:
- type: mcp
namespace: churn-prediction
port: 8080
tools:
- name: predict-churn
description: Run churn prediction for a subscriber segment and create retention campaigns.
inputParameters:
- name: segment_id
in: body
type: string
description: The subscriber segment identifier.
- name: date_range
in: body
type: string
description: Analysis date range (e.g., last_30d).
steps:
- name: get-engagement
type: call
call: ga.get-report
with:
property_id: dj_subscriber_property
date_from: '{{date_range}}'
date_to: today
- name: get-subscriptions
type: call
call: sap.get-segment
with:
segment_id: '{{segment_id}}'
- name: run-prediction
type: call
call: databricks.submit-job
with:
job_name: churn_prediction
parameters: '{"segment":"{{segment_id}}","engagement":"{{get-engagement.summary}}"}'
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: Retention — {{segment_id}}
description: 'Auto-generated retention campaign. Churn risk: {{run-prediction.risk_score}}'
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: sap
baseUri: https://dowjones-sap.s4hana.cloud/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: segments
path: /segments/{{segment_id}}
inputParameters:
- name: segment_id
in: path
operations:
- name: get-segment
method: GET
- type: http
namespace: databricks
baseUri: https://eastus.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: submit-job
method: POST
- type: http
namespace: salesforce
baseUri: https://dowjones.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
Monitors cert expiry at Dow Jones.
naftiko: '0.5'
info:
label: Certificate Expiry Pipeline
description: Monitors cert expiry at Dow Jones.
tags:
- security
- certificates
- monitoring
capability:
exposes:
- type: mcp
namespace: cert-monitor
port: 8080
tools:
- name: check-certs
description: Monitor certs at Dow Jones.
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.dowjones.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://dowjones.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 Dow Jones via Oracle, Workday, and Slack.
naftiko: '0.5'
info:
label: Budget Variance Pipeline
description: Analyzes budget variance at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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.dowjones.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
Synchronizes product listings from SAP to the BigCommerce storefront and updates the Elasticsearch product search index.
naftiko: '0.5'
info:
label: BigCommerce Product Catalog Sync
description: Synchronizes product listings from SAP to the BigCommerce storefront and updates the Elasticsearch product search index.
tags:
- ecommerce
- bigcommerce
- sap
- elasticsearch
capability:
exposes:
- type: mcp
namespace: product-sync
port: 8080
tools:
- name: sync-product
description: Push a SAP product to BigCommerce and update the search index.
inputParameters:
- name: product_id
in: body
type: string
description: The SAP material number.
steps:
- name: get-product
type: call
call: sap.get-product
with:
product_id: '{{product_id}}'
- name: upsert-bigcommerce
type: call
call: bigcommerce.upsert-product
with:
sku: '{{product_id}}'
name: '{{get-product.name}}'
price: '{{get-product.price}}'
description: '{{get-product.description}}'
- name: update-index
type: call
call: elasticsearch.index-document
with:
index: products
document_id: '{{product_id}}'
body: '{"name":"{{get-product.name}}","price":"{{get-product.price}}"}'
consumes:
- type: http
namespace: sap
baseUri: https://dowjones-sap.s4hana.cloud/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/dowjones/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: upsert-product
method: POST
- type: http
namespace: elasticsearch
baseUri: https://search.dowjones.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: documents
path: /{{index}}/_doc/{{document_id}}
inputParameters:
- name: index
in: path
- name: document_id
in: path
operations:
- name: index-document
method: PUT
Checks device compliance status in Microsoft Endpoint Manager and returns compliance state, OS version, and last check-in time.
naftiko: '0.5'
info:
label: Microsoft Endpoint Manager Device Compliance
description: Checks device compliance status in Microsoft Endpoint Manager and returns compliance state, OS version, and last check-in time.
tags:
- security
- devices
- microsoft-endpoint-manager
capability:
exposes:
- type: mcp
namespace: device-compliance
port: 8080
tools:
- name: check-device-compliance
description: Check Microsoft Endpoint Manager compliance for a device by device ID.
inputParameters:
- name: device_id
in: body
type: string
description: The Intune managed device ID.
call: intune.get-device-compliance
with:
device_id: '{{device_id}}'
consumes:
- type: http
namespace: intune
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: devices
path: /deviceManagement/managedDevices/{{device_id}}
inputParameters:
- name: device_id
in: path
operations:
- name: get-device-compliance
method: GET
Retrieves a Bloomberg Intelligence research report by report ID and returns the executive summary, sector, and analyst details.
naftiko: '0.5'
info:
label: Bloomberg Intelligence Report Fetch
description: Retrieves a Bloomberg Intelligence research report by report ID and returns the executive summary, sector, and analyst details.
tags:
- research
- bloomberg-intelligence
capability:
exposes:
- type: mcp
namespace: bi-research
port: 8080
tools:
- name: get-bi-report
description: Fetch a Bloomberg Intelligence report by ID.
inputParameters:
- name: report_id
in: body
type: string
description: The Bloomberg Intelligence report identifier.
call: bi.get-report
with:
report_id: '{{report_id}}'
consumes:
- type: http
namespace: bi
baseUri: https://api.bloomberg.com/bi/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: reports
path: /reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
Exports a Sparx Enterprise Architect model package as XMI and uploads it to SharePoint for architecture review.
naftiko: '0.5'
info:
label: Sparx Enterprise Architect Model Export
description: Exports a Sparx Enterprise Architect model package as XMI and uploads it to SharePoint for architecture review.
tags:
- architecture
- sparx-enterprise-architect
- sharepoint
capability:
exposes:
- type: mcp
namespace: architecture-models
port: 8080
tools:
- name: export-model
description: Export a Sparx EA model package and store in SharePoint.
inputParameters:
- name: package_id
in: body
type: string
description: The Sparx EA package GUID.
- name: output_folder
in: body
type: string
description: SharePoint folder for the export.
steps:
- name: export-package
type: call
call: sparxea.export-package
with:
package_id: '{{package_id}}'
- name: upload-export
type: call
call: sharepoint.upload-file
with:
site_id: architecture_site
folder_path: '{{output_folder}}'
file_name: '{{export-package.file_name}}'
content: '{{export-package.xmi_url}}'
consumes:
- type: http
namespace: sparxea
baseUri: https://sparxea.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.sparxea_token
resources:
- name: packages
path: /packages/{{package_id}}/export
inputParameters:
- name: package_id
in: path
operations:
- name: export-package
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
Uploads a video to YouTube from an editorial brief, creates the listing metadata, and shares the link across Twitter and LinkedIn.
naftiko: '0.5'
info:
label: YouTube Video Upload Pipeline
description: Uploads a video to YouTube from an editorial brief, creates the listing metadata, and shares the link across Twitter and LinkedIn.
tags:
- publishing
- video
- youtube
- twitter
- linkedin
capability:
exposes:
- type: mcp
namespace: video-publishing
port: 8080
tools:
- name: publish-video
description: Upload a video to YouTube and distribute links to social channels.
inputParameters:
- name: video_url
in: body
type: string
description: URL of the video file to upload.
- name: title
in: body
type: string
description: Video title.
- name: description
in: body
type: string
description: Video description.
steps:
- name: upload-video
type: call
call: youtube.upload-video
with:
video_url: '{{video_url}}'
title: '{{title}}'
description: '{{description}}'
- name: share-twitter
type: call
call: twitter.create-tweet
with:
text: 'NEW VIDEO: {{title}} — Watch now: {{upload-video.url}}'
- name: share-linkedin
type: call
call: linkedin.create-post
with:
text: 'New video from Dow Jones: {{title}} — {{upload-video.url}}'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/upload/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: videos
path: /videos
operations:
- name: upload-video
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
Retrieves the current alert status from SolarWinds for a monitored node and returns severity, message, and timestamp.
naftiko: '0.5'
info:
label: SolarWinds Infrastructure Alert
description: Retrieves the current alert status from SolarWinds for a monitored node and returns severity, message, and timestamp.
tags:
- infrastructure
- monitoring
- solarwinds
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-node-alerts
description: Fetch active alerts for a SolarWinds monitored node.
inputParameters:
- name: node_id
in: body
type: string
description: The SolarWinds node identifier.
call: solarwinds.get-alerts
with:
node_id: '{{node_id}}'
consumes:
- type: http
namespace: solarwinds
baseUri: https://solarwinds.dowjones.com:17778/SolarWinds/InformationService/v3/Json
authentication:
type: basic
username: $secrets.solarwinds_user
password: $secrets.solarwinds_password
resources:
- name: alerts
path: /Query
operations:
- name: get-alerts
method: POST
Queries Cisco network infrastructure for device status, interface health, and uptime metrics.
naftiko: '0.5'
info:
label: Cisco Network Device Status
description: Queries Cisco network infrastructure for device status, interface health, and uptime metrics.
tags:
- infrastructure
- networking
- cisco
capability:
exposes:
- type: mcp
namespace: network-status
port: 8080
tools:
- name: get-device-status
description: Fetch Cisco device status by hostname or IP.
inputParameters:
- name: device_id
in: body
type: string
description: The Cisco device hostname or IP address.
call: cisco.get-device
with:
device_id: '{{device_id}}'
consumes:
- type: http
namespace: cisco
baseUri: https://sandboxdnac.cisco.com/dna/intent/api/v1
authentication:
type: bearer
token: $secrets.cisco_token
resources:
- name: devices
path: /network-device/{{device_id}}
inputParameters:
- name: device_id
in: path
operations:
- name: get-device
method: GET
Triggers a Terraform plan for a specified workspace, retrieves the plan output, and posts a summary to Microsoft Teams for approval.
naftiko: '0.5'
info:
label: Terraform Infrastructure Plan
description: Triggers a Terraform plan for a specified workspace, retrieves the plan output, and posts a summary to Microsoft Teams for approval.
tags:
- infrastructure
- terraform
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-automation
port: 8080
tools:
- name: run-terraform-plan
description: Trigger a Terraform plan and post the summary to Teams for review.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID.
- name: team_channel
in: body
type: string
description: Teams channel for plan review.
steps:
- name: create-run
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
plan_only: true
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: '{{team_channel}}'
text: 'Terraform plan ready for {{workspace_id}}: {{create-run.resource_additions}} additions, {{create-run.resource_changes}} changes, {{create-run.resource_destructions}} destructions. Run ID: {{create-run.id}}'
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /runs
operations:
- name: create-run
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks ES index at Dow Jones.
naftiko: '0.5'
info:
label: ES Index Health
description: Checks ES index at Dow Jones.
tags:
- search
- elasticsearch
- infrastructure
capability:
exposes:
- type: mcp
namespace: es-health
port: 8080
tools:
- name: check-index
description: Check ES index at Dow Jones.
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.dowjones.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 Dow Jones via Terraform, Slack, and Jira.
naftiko: '0.5'
info:
label: Drift Detection Pipeline
description: Detects infrastructure drift at Dow Jones 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 Dow Jones.
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://dowjones.com.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Pulls latest market data from Bloomberg Enterprise Data, enriches it with Factiva news sentiment, and pushes a consolidated feed to the internal data warehouse via Azure Databricks.
naftiko: '0.5'
info:
label: Bloomberg Data Feed Sync
description: Pulls latest market data from Bloomberg Enterprise Data, enriches it with Factiva news sentiment, and pushes a consolidated feed to the internal data warehouse via Azure Databricks.
tags:
- data
- market-data
- bloomberg-enterprise-data
- factiva
- azure-databricks
capability:
exposes:
- type: mcp
namespace: market-data-sync
port: 8080
tools:
- name: sync-market-feed
description: Pull market data from Bloomberg, enrich with Factiva sentiment, and load into Databricks.
inputParameters:
- name: instrument_id
in: body
type: string
description: Bloomberg instrument identifier.
- name: date
in: body
type: string
description: Market date in YYYY-MM-DD format.
steps:
- name: get-market-data
type: call
call: bloomberg.get-instrument-data
with:
instrument_id: '{{instrument_id}}'
date: '{{date}}'
- name: get-sentiment
type: call
call: factiva.search-articles
with:
query: '{{get-market-data.issuer_name}}'
date_from: '{{date}}'
date_to: '{{date}}'
- name: load-to-warehouse
type: call
call: databricks.submit-job
with:
job_name: market_data_load
parameters: '{"instrument":"{{instrument_id}}","sentiment_score":"{{get-sentiment.avg_score}}"}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: instruments
path: /data/{{instrument_id}}
inputParameters:
- name: instrument_id
in: path
operations:
- name: get-instrument-data
method: GET
- type: http
namespace: factiva
baseUri: https://api.dowjones.com/factiva/v1
authentication:
type: bearer
token: $secrets.factiva_token
resources:
- name: articles
path: /search
operations:
- name: search-articles
method: POST
- type: http
namespace: databricks
baseUri: https://eastus.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: submit-job
method: POST
Retrieves cost and usage data from Oracle Cloud for a specified compartment and date range.
naftiko: '0.5'
info:
label: Oracle Cloud Cost Reporting
description: Retrieves cost and usage data from Oracle Cloud for a specified compartment and date range.
tags:
- finance
- cloud
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: cloud-costs
port: 8080
tools:
- name: get-cloud-costs
description: Fetch Oracle Cloud cost and usage data by compartment and date range.
inputParameters:
- name: compartment_id
in: body
type: string
description: The Oracle Cloud compartment OCID.
- 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: oraclecloud.get-usage
with:
compartment_id: '{{compartment_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: oraclecloud
baseUri: https://usageapi.us-ashburn-1.oci.oraclecloud.com/20200107
authentication:
type: bearer
token: $secrets.oracle_cloud_token
resources:
- name: usage
path: /usage
operations:
- name: get-usage
method: POST
Monitors data pipelines at Dow Jones via Databricks, Snowflake, Slack, and ServiceNow.
naftiko: '0.5'
info:
label: Data Pipeline Monitor Pipeline
description: Monitors data pipelines at Dow Jones 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 Dow Jones.
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://dowjones.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://dowjones.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://dowjones.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 Dow Jones.
naftiko: '0.5'
info:
label: Terraform Workspace Check
description: Checks Terraform workspace at Dow Jones.
tags:
- infrastructure
- terraform
- iac
capability:
exposes:
- type: mcp
namespace: tf-ws
port: 8080
tools:
- name: check-ws
description: Check workspace at Dow Jones.
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 DNS records for a Cloudflare-managed zone by record name and type.
naftiko: '0.5'
info:
label: Cloudflare DNS Record Lookup
description: Retrieves DNS records for a Cloudflare-managed zone by record name and type.
tags:
- infrastructure
- dns
- cloudflare
capability:
exposes:
- type: mcp
namespace: dns-mgmt
port: 8080
tools:
- name: lookup-dns-record
description: Look up Cloudflare DNS records by zone and record name.
inputParameters:
- name: zone_id
in: body
type: string
description: The Cloudflare zone identifier.
- name: record_name
in: body
type: string
description: The DNS record name to look up.
call: cloudflare.get-dns-records
with:
zone_id: '{{zone_id}}'
record_name: '{{record_name}}'
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: dns-records
path: /zones/{{zone_id}}/dns_records
inputParameters:
- name: zone_id
in: path
- name: record_name
in: query
operations:
- name: get-dns-records
method: GET
Queries Datadog for a specific metric time series over a given window. Returns data points for dashboards and alerting.
naftiko: '0.5'
info:
label: Datadog Metric Query
description: Queries Datadog for a specific metric time series over a given window. Returns data points for dashboards and alerting.
tags:
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: metrics
port: 8080
tools:
- name: query-metric
description: Query a Datadog metric by name and time range.
inputParameters:
- name: metric_name
in: body
type: string
description: The Datadog metric name.
- name: from_ts
in: body
type: string
description: Start timestamp (epoch seconds).
- name: to_ts
in: body
type: string
description: End timestamp (epoch seconds).
call: datadog.query-metric
with:
query: '{{metric_name}}'
from: '{{from_ts}}'
to: '{{to_ts}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: metrics
path: /query
operations:
- name: query-metric
method: GET
Checks Datadog monitor at Dow Jones.
naftiko: '0.5'
info:
label: Datadog Monitor Check
description: Checks Datadog monitor at Dow Jones.
tags:
- monitoring
- datadog
- observability
capability:
exposes:
- type: mcp
namespace: dd-monitor
port: 8080
tools:
- name: check-monitor
description: Check monitor at Dow Jones.
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
Checks on-call at Dow Jones.
naftiko: '0.5'
info:
label: PagerDuty On-Call Check
description: Checks on-call at Dow Jones.
tags:
- incident-management
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: pd-oncall
port: 8080
tools:
- name: get-oncall
description: Check on-call at Dow Jones.
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
Retrieves the current status of an F5 virtual server including pool member health, active connections, and throughput.
naftiko: '0.5'
info:
label: F5 Networks Load Balancer Status
description: Retrieves the current status of an F5 virtual server including pool member health, active connections, and throughput.
tags:
- infrastructure
- networking
- f5-networks
capability:
exposes:
- type: mcp
namespace: load-balancer
port: 8080
tools:
- name: get-virtual-server-status
description: Fetch F5 virtual server health and connection stats.
inputParameters:
- name: virtual_server_name
in: body
type: string
description: The F5 virtual server name.
call: f5.get-virtual-server
with:
name: '{{virtual_server_name}}'
consumes:
- type: http
namespace: f5
baseUri: https://f5.dowjones.com/mgmt/tm
authentication:
type: basic
username: $secrets.f5_user
password: $secrets.f5_password
resources:
- name: virtual-servers
path: /ltm/virtual/{{name}}/stats
inputParameters:
- name: name
in: path
operations:
- name: get-virtual-server
method: GET
Checks Redis at Dow Jones.
naftiko: '0.5'
info:
label: Redis Cache Status
description: Checks Redis at Dow Jones.
tags:
- caching
- redis
- infrastructure
capability:
exposes:
- type: mcp
namespace: redis
port: 8080
tools:
- name: check-cache
description: Check Redis at Dow Jones.
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.dowjones.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
Checks IT incident in ServiceNow for Dow Jones.
naftiko: '0.5'
info:
label: ServiceNow Incident Detail Check
description: Checks IT incident in ServiceNow for Dow Jones.
tags:
- it-service
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: snow-incident
port: 8080
tools:
- name: check-incident
description: Check incident at Dow Jones.
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://dowjones.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
When an editor approves a story in the CMS, publishes the article to the website, indexes it in Elasticsearch for search, and sends a push notification via WhatsApp and Twitter.
naftiko: '0.5'
info:
label: Article Publishing Pipeline
description: When an editor approves a story in the CMS, publishes the article to the website, indexes it in Elasticsearch for search, and sends a push notification via WhatsApp and Twitter.
tags:
- publishing
- news
- elasticsearch
- twitter
- whatsapp
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: publish-article
description: Given a CMS article ID, publish to the website, index in Elasticsearch, and distribute via social channels.
inputParameters:
- name: article_id
in: body
type: string
description: The CMS article identifier.
- name: publish_channel
in: body
type: string
description: Target publish channel (web, mobile, all).
steps:
- name: fetch-article
type: call
call: cms.get-article
with:
article_id: '{{article_id}}'
- name: index-article
type: call
call: elasticsearch.index-document
with:
index: articles
document_id: '{{article_id}}'
body: '{{fetch-article.content}}'
- name: post-twitter
type: call
call: twitter.create-tweet
with:
text: 'NEW: {{fetch-article.headline}} — {{fetch-article.url}}'
- name: send-whatsapp
type: call
call: whatsapp.send-message
with:
channel_id: breaking_news
text: '{{fetch-article.headline}}: {{fetch-article.summary}}'
consumes:
- type: http
namespace: cms
baseUri: https://cms.dowjones.com/api/v2
authentication:
type: bearer
token: $secrets.cms_token
resources:
- name: articles
path: /articles/{{article_id}}
inputParameters:
- name: article_id
in: path
operations:
- name: get-article
method: GET
- type: http
namespace: elasticsearch
baseUri: https://search.dowjones.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: documents
path: /{{index}}/_doc/{{document_id}}
inputParameters:
- name: index
in: path
- name: document_id
in: path
operations:
- name: index-document
method: PUT
- 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: whatsapp
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.whatsapp_token
resources:
- name: messages
path: /{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Assigns a Pluralsight learning path to employees by department from PeopleSoft and tracks completion in Microsoft Teams.
naftiko: '0.5'
info:
label: Pluralsight Training Assignment
description: Assigns a Pluralsight learning path to employees by department from PeopleSoft and tracks completion in Microsoft Teams.
tags:
- learning
- pluralsight
- peoplesoft
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: training
port: 8080
tools:
- name: assign-training
description: Assign a Pluralsight path to a department and notify via Teams.
inputParameters:
- name: department_id
in: body
type: string
description: PeopleSoft department identifier.
- name: path_id
in: body
type: string
description: Pluralsight learning path ID.
steps:
- name: get-department
type: call
call: peoplesoft.get-department
with:
department_id: '{{department_id}}'
- name: assign-path
type: call
call: pluralsight.assign-path
with:
path_id: '{{path_id}}'
emails: '{{get-department.employee_emails}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: learning_dev
text: 'New training assigned: Pluralsight path {{path_id}} for {{get-department.name}} ({{get-department.employee_count}} employees).'
consumes:
- type: http
namespace: peoplesoft
baseUri: https://peoplesoft.dowjones.com/PSIGW/RESTListeningConnector/PSFT_HR
authentication:
type: basic
username: $secrets.peoplesoft_user
password: $secrets.peoplesoft_password
resources:
- name: departments
path: /departments/{{department_id}}
inputParameters:
- name: department_id
in: path
operations:
- name: get-department
method: GET
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: assignments
path: /assignments
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: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks contract renewals at Dow Jones via contracts system, email, Jira, and Salesforce.
naftiko: '0.5'
info:
label: Contract Renewal Pipeline
description: Tracks contract renewals at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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://dowjones.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://dowjones.com.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opps
path: /sobjects/Opportunity
operations:
- name: update
method: PATCH
Onboards employees at Dow Jones with Okta, ServiceNow, Slack, and calendar.
naftiko: '0.5'
info:
label: New Employee IT Onboarding Pipeline
description: Onboards employees at Dow Jones 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 Dow Jones.
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://dowjones.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://dowjones.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 Dow Jones.
naftiko: '0.5'
info:
label: Backup Verification Pipeline
description: Verifies backups at Dow Jones.
tags:
- database
- backup
- operations
capability:
exposes:
- type: mcp
namespace: backup-verify
port: 8080
tools:
- name: verify-backups
description: Verify backups at Dow Jones.
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.dowjones.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://dowjones.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 Dow Jones.
naftiko: '0.5'
info:
label: Cost Reallocation Pipeline
description: Reallocates costs at Dow Jones.
tags:
- finance
- cost-allocation
- oracle
capability:
exposes:
- type: mcp
namespace: cost-realloc
port: 8080
tools:
- name: reallocate
description: Reallocate costs at Dow Jones.
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.dowjones.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.dowjones.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
Runs a segment-level Adobe Analytics report for a specified report suite and date range, returning visitor and page view breakdowns.
naftiko: '0.5'
info:
label: Adobe Analytics Segment Report
description: Runs a segment-level Adobe Analytics report for a specified report suite and date range, returning visitor and page view breakdowns.
tags:
- analytics
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: adobe-analytics
port: 8080
tools:
- name: get-segment-report
description: Run an Adobe Analytics segment report by suite, segment, and date range.
inputParameters:
- name: report_suite_id
in: body
type: string
description: Adobe Analytics report suite ID.
- name: segment_id
in: body
type: string
description: The segment identifier.
- name: date_from
in: body
type: string
description: Start date YYYY-MM-DD.
- name: date_to
in: body
type: string
description: End date YYYY-MM-DD.
call: adobeanalytics.get-report
with:
rsid: '{{report_suite_id}}'
segment_id: '{{segment_id}}'
date_from: '{{date_from}}'
date_to: '{{date_to}}'
consumes:
- type: http
namespace: adobeanalytics
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
Executes a full-text search against the Factiva database and returns matching articles with metadata, source, and relevance scores.
naftiko: '0.5'
info:
label: Factiva Search Query
description: Executes a full-text search against the Factiva database and returns matching articles with metadata, source, and relevance scores.
tags:
- data
- search
- factiva
capability:
exposes:
- type: mcp
namespace: factiva-search
port: 8080
tools:
- name: search-factiva
description: Search the Factiva news archive by keyword, date range, and source filter. Returns article summaries and metadata.
inputParameters:
- name: query
in: body
type: string
description: Full-text search query string.
- name: date_from
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: date_to
in: body
type: string
description: End date in YYYY-MM-DD format.
call: factiva.search-articles
with:
query: '{{query}}'
date_from: '{{date_from}}'
date_to: '{{date_to}}'
consumes:
- type: http
namespace: factiva
baseUri: https://api.dowjones.com/factiva/v1
authentication:
type: bearer
token: $secrets.factiva_token
resources:
- name: articles
path: /search
operations:
- name: search-articles
method: POST
Triggers a WebSphere application deployment, monitors the deployment status, and sends a completion notification to Microsoft Teams.
naftiko: '0.5'
info:
label: WebSphere Application Deployment
description: Triggers a WebSphere application deployment, monitors the deployment status, and sends a completion notification to Microsoft Teams.
tags:
- deployment
- websphere
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: app-deployment
port: 8080
tools:
- name: deploy-application
description: Deploy an application to WebSphere and notify the team on completion.
inputParameters:
- name: app_name
in: body
type: string
description: The application name to deploy.
- name: version
in: body
type: string
description: The application version.
- name: team_channel
in: body
type: string
description: Teams channel for deployment notification.
steps:
- name: trigger-deploy
type: call
call: websphere.deploy-app
with:
app_name: '{{app_name}}'
version: '{{version}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: '{{team_channel}}'
text: 'Deployment complete: {{app_name}} v{{version}} — Status: {{trigger-deploy.status}}'
consumes:
- type: http
namespace: websphere
baseUri: https://websphere.dowjones.com/IBMJMXConnectorREST/mbeans
authentication:
type: basic
username: $secrets.websphere_user
password: $secrets.websphere_password
resources:
- name: deployments
path: /deployments
operations:
- name: deploy-app
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves sprint progress at Dow Jones.
naftiko: '0.5'
info:
label: Jira Sprint Progress Lookup
description: Retrieves sprint progress at Dow Jones.
tags:
- project-management
- jira
- agile
capability:
exposes:
- type: mcp
namespace: jira-sprint
port: 8080
tools:
- name: get-sprint
description: Look up sprint at Dow Jones.
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://dowjones.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
Generates a formatted Microsoft Office document from a template stored in SharePoint, populates with data, and returns the download URL.
naftiko: '0.5'
info:
label: Microsoft Office Document Generation
description: Generates a formatted Microsoft Office document from a template stored in SharePoint, populates with data, and returns the download URL.
tags:
- content
- microsoft-office
- sharepoint
capability:
exposes:
- type: mcp
namespace: doc-generation
port: 8080
tools:
- name: generate-document
description: Generate an Office document from a SharePoint template with data merge.
inputParameters:
- name: template_path
in: body
type: string
description: SharePoint path to the document template.
- name: data
in: body
type: string
description: JSON data to merge into the template.
steps:
- name: get-template
type: call
call: sharepoint.get-file
with:
site_id: templates_site
file_path: '{{template_path}}'
- name: generate-doc
type: call
call: sharepoint.create-file-from-template
with:
site_id: templates_site
template_url: '{{get-template.download_url}}'
data: '{{data}}'
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
- name: create-file-from-template
method: POST
Checks the latest Veritas InfoScale backup job status for a given volume group and returns completion state and size.
naftiko: '0.5'
info:
label: Veritas InfoScale Backup Status
description: Checks the latest Veritas InfoScale backup job status for a given volume group and returns completion state and size.
tags:
- infrastructure
- backup
- veritas-infoscale
capability:
exposes:
- type: mcp
namespace: backup-status
port: 8080
tools:
- name: get-backup-status
description: Fetch Veritas InfoScale backup job status for a volume group.
inputParameters:
- name: volume_group
in: body
type: string
description: The Veritas InfoScale volume group name.
call: veritas.get-backup-status
with:
volume_group: '{{volume_group}}'
consumes:
- type: http
namespace: veritas
baseUri: https://veritas.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.veritas_token
resources:
- name: backups
path: /volume-groups/{{volume_group}}/backups/latest
inputParameters:
- name: volume_group
in: path
operations:
- name: get-backup-status
method: GET
Looks up active user sessions on Citrix NetScaler by username and returns session count, duration, and gateway details.
naftiko: '0.5'
info:
label: Citrix NetScaler Session Lookup
description: Looks up active user sessions on Citrix NetScaler by username and returns session count, duration, and gateway details.
tags:
- infrastructure
- remote-access
- citrix-netscaler
capability:
exposes:
- type: mcp
namespace: remote-access
port: 8080
tools:
- name: get-user-sessions
description: Look up active Citrix NetScaler sessions by username.
inputParameters:
- name: username
in: body
type: string
description: The user's network login name.
call: netscaler.get-sessions
with:
username: '{{username}}'
consumes:
- type: http
namespace: netscaler
baseUri: https://netscaler.dowjones.com/nitro/v1
authentication:
type: basic
username: $secrets.netscaler_user
password: $secrets.netscaler_password
resources:
- name: sessions
path: /config/aaasession
operations:
- name: get-sessions
method: GET
Escalates IT incidents at Dow Jones via ServiceNow, PagerDuty, and Slack.
naftiko: '0.5'
info:
label: IT Incident Escalation Pipeline
description: Escalates IT incidents at Dow Jones 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 Dow Jones.
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://dowjones.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 Dow Jones.
naftiko: '0.5'
info:
label: Vault Secret Metadata
description: Checks Vault secret at Dow Jones.
tags:
- security
- vault
- secrets-management
capability:
exposes:
- type: mcp
namespace: vault
port: 8080
tools:
- name: check-secret
description: Check secret at Dow Jones.
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.dowjones.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 Dow Jones from Snowflake, Power BI, and email.
naftiko: '0.5'
info:
label: Quarterly Compliance Report Pipeline
description: Generates compliance reports at Dow Jones 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 Dow Jones.
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://dowjones.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.dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.email_token
resources:
- name: messages
path: /send
operations:
- name: send
method: POST
Syndicates a published Dow Jones article to LinkedIn as a company post and tracks impressions via Google Analytics.
naftiko: '0.5'
info:
label: LinkedIn Article Syndication
description: Syndicates a published Dow Jones article to LinkedIn as a company post and tracks impressions via Google Analytics.
tags:
- publishing
- social-media
- linkedin
- google-analytics
capability:
exposes:
- type: mcp
namespace: social-syndication
port: 8080
tools:
- name: syndicate-to-linkedin
description: Publish a Dow Jones article summary to LinkedIn and tag a GA tracking parameter.
inputParameters:
- name: article_id
in: body
type: string
description: The CMS article identifier.
steps:
- name: fetch-article
type: call
call: cms.get-article
with:
article_id: '{{article_id}}'
- name: post-linkedin
type: call
call: linkedin.create-post
with:
text: '{{fetch-article.headline}} — {{fetch-article.summary}} {{fetch-article.url}}?utm_source=linkedin'
consumes:
- type: http
namespace: cms
baseUri: https://cms.dowjones.com/api/v2
authentication:
type: bearer
token: $secrets.cms_token
resources:
- name: articles
path: /articles/{{article_id}}
inputParameters:
- name: article_id
in: path
operations:
- name: get-article
method: GET
- 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
Tests disaster recovery at Dow Jones via failover, health checks, and reporting.
naftiko: '0.5'
info:
label: DR Test Pipeline
description: Tests disaster recovery at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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://dowjones.com.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Searches Splunk at Dow Jones.
naftiko: '0.5'
info:
label: Splunk Log Search
description: Searches Splunk at Dow Jones.
tags:
- security
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: splunk-search
port: 8080
tools:
- name: search-logs
description: Search logs at Dow Jones.
inputParameters:
- name: query
in: body
type: string
description: SPL query.
call: splunk.search
with:
query: '{{query}}'
outputParameters:
- name: count
type: number
mapping: $.results.count
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.dowjones.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search
method: POST
Queries Palo Alto Networks for threat intelligence on an IP address or domain and returns threat classification, severity, and associated campaigns.
naftiko: '0.5'
info:
label: Palo Alto Networks Threat Intelligence
description: Queries Palo Alto Networks for threat intelligence on an IP address or domain and returns threat classification, severity, and associated campaigns.
tags:
- security
- threat-intelligence
- palo-alto-networks
capability:
exposes:
- type: mcp
namespace: threat-intel
port: 8080
tools:
- name: query-threat-intel
description: Look up threat intelligence for an indicator in Palo Alto Networks.
inputParameters:
- name: indicator
in: body
type: string
description: IP address or domain to investigate.
- name: indicator_type
in: body
type: string
description: Type of indicator (ip, domain, url).
call: paloalto.get-threat-intel
with:
indicator: '{{indicator}}'
type: '{{indicator_type}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://api.paloaltonetworks.com/v1
authentication:
type: bearer
token: $secrets.paloalto_token
resources:
- name: threats
path: /threats/{{indicator}}
inputParameters:
- name: indicator
in: path
operations:
- name: get-threat-intel
method: GET
Creates a new digital subscription in SAP, provisions access in Azure Active Directory, and sends the welcome email via Microsoft Outlook.
naftiko: '0.5'
info:
label: Subscription Activation
description: Creates a new digital subscription in SAP, provisions access in Azure Active Directory, and sends the welcome email via Microsoft Outlook.
tags:
- subscriptions
- sap
- azure-active-directory
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: subscriptions
port: 8080
tools:
- name: activate-subscription
description: Given subscriber details, create the SAP subscription record, provision AD access, and send welcome email.
inputParameters:
- name: subscriber_email
in: body
type: string
description: The subscriber email address.
- name: plan_id
in: body
type: string
description: The subscription plan identifier.
- name: subscriber_name
in: body
type: string
description: Full name of the subscriber.
steps:
- name: create-subscription
type: call
call: sap.create-subscription
with:
email: '{{subscriber_email}}'
plan_id: '{{plan_id}}'
name: '{{subscriber_name}}'
- name: provision-access
type: call
call: azuread.create-user
with:
email: '{{subscriber_email}}'
display_name: '{{subscriber_name}}'
group: subscribers_{{plan_id}}
- name: send-welcome
type: call
call: outlook.send-email
with:
to: '{{subscriber_email}}'
subject: Welcome to Dow Jones — Your subscription is active
body: 'Dear {{subscriber_name}}, your {{plan_id}} subscription is now active. Account ID: {{create-subscription.account_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://dowjones-sap.s4hana.cloud/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: subscriptions
path: /subscriptions
operations:
- name: create-subscription
method: POST
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users
operations:
- name: create-user
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/noreply@dowjones.com/sendMail
operations:
- name: send-email
method: POST
Creates or updates an Elasticsearch index with specified mappings and settings for content management.
naftiko: '0.5'
info:
label: Elasticsearch Index Management
description: Creates or updates an Elasticsearch index with specified mappings and settings for content management.
tags:
- data
- elasticsearch
capability:
exposes:
- type: mcp
namespace: search-admin
port: 8080
tools:
- name: manage-index
description: Create or update an Elasticsearch index with mappings.
inputParameters:
- name: index_name
in: body
type: string
description: The Elasticsearch index name.
- name: mappings
in: body
type: string
description: JSON index mappings.
call: elasticsearch.create-index
with:
index: '{{index_name}}'
body: '{{mappings}}'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://search.dowjones.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: indices
path: /{{index}}
inputParameters:
- name: index
in: path
operations:
- name: create-index
method: PUT
Retrieves the latest pipeline status and merge request summary for a GitLab project.
naftiko: '0.5'
info:
label: GitLab Repository Status
description: Retrieves the latest pipeline status and merge request summary for a GitLab project.
tags:
- development
- gitlab
capability:
exposes:
- type: mcp
namespace: gitlab-ops
port: 8080
tools:
- name: get-project-status
description: Fetch latest GitLab pipeline status and open MR count for a project.
inputParameters:
- name: project_id
in: body
type: string
description: The GitLab project ID.
call: gitlab.get-project
with:
project_id: '{{project_id}}'
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.dowjones.com/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: projects
path: /projects/{{project_id}}
inputParameters:
- name: project_id
in: path
operations:
- name: get-project
method: GET
Fetches the latest CI run status from GitHub Actions for a given repository and branch.
naftiko: '0.5'
info:
label: GitHub Actions CI Status
description: Fetches the latest CI run status from GitHub Actions for a given repository and branch.
tags:
- development
- ci
- github-actions
capability:
exposes:
- type: mcp
namespace: ci-status
port: 8080
tools:
- name: get-ci-status
description: Check the latest GitHub Actions workflow run status for a repo and branch.
inputParameters:
- name: repo
in: body
type: string
description: Repository name (owner/repo).
- name: branch
in: body
type: string
description: Branch name.
call: github.get-workflow-runs
with:
repo: '{{repo}}'
branch: '{{branch}}'
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
inputParameters:
- name: repo
in: path
- name: branch
in: query
operations:
- name: get-workflow-runs
method: GET
Checks Grafana dashboard at Dow Jones.
naftiko: '0.5'
info:
label: Grafana Dashboard Status
description: Checks Grafana dashboard at Dow Jones.
tags:
- monitoring
- grafana
- dashboards
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: check-dash
description: Check dashboard at Dow Jones.
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.dowjones.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 Dow Jones from Splunk and Qualys.
naftiko: '0.5'
info:
label: Monthly Security Report Pipeline
description: Generates monthly security reports at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.email_token
resources:
- name: messages
path: /send
operations:
- name: send
method: POST
Retrieves Teams activity at Dow Jones.
naftiko: '0.5'
info:
label: Teams Channel Activity
description: Retrieves Teams activity at Dow Jones.
tags:
- communications
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: teams-activity
port: 8080
tools:
- name: get-activity
description: Check Teams activity at Dow Jones.
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
Fetches the latest bond quote from Tradeweb by instrument ISIN and returns bid, ask, yield, and last-traded timestamp.
naftiko: '0.5'
info:
label: Tradeweb Bond Quote Lookup
description: Fetches the latest bond quote from Tradeweb by instrument ISIN and returns bid, ask, yield, and last-traded timestamp.
tags:
- data
- trading
- tradeweb
capability:
exposes:
- type: mcp
namespace: bond-trading
port: 8080
tools:
- name: get-bond-quote
description: Look up a Tradeweb bond quote by ISIN. Returns bid, ask, yield, and timestamp.
inputParameters:
- name: isin
in: body
type: string
description: The bond ISIN identifier.
call: tradeweb.get-quote
with:
isin: '{{isin}}'
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: quotes
path: /quotes/{{isin}}
inputParameters:
- name: isin
in: path
operations:
- name: get-quote
method: GET
On breaking news flag in CMS, pushes alerts to Twitter, Instagram, LinkedIn, and WhatsApp simultaneously, then logs the distribution event in Datadog.
naftiko: '0.5'
info:
label: Breaking News Alert Orchestrator
description: On breaking news flag in CMS, pushes alerts to Twitter, Instagram, LinkedIn, and WhatsApp simultaneously, then logs the distribution event in Datadog.
tags:
- news
- alerts
- twitter
- instagram
- linkedin
- whatsapp
- datadog
capability:
exposes:
- type: mcp
namespace: breaking-news
port: 8080
tools:
- name: distribute-breaking-alert
description: Distribute a breaking news alert across all social channels and log to monitoring.
inputParameters:
- name: article_id
in: body
type: string
description: The CMS article ID for the breaking story.
- name: headline
in: body
type: string
description: The breaking news headline.
- name: url
in: body
type: string
description: The article URL.
steps:
- name: post-twitter
type: call
call: twitter.create-tweet
with:
text: 'BREAKING: {{headline}} {{url}}'
- name: post-linkedin
type: call
call: linkedin.create-post
with:
text: 'BREAKING: {{headline}} — Read more: {{url}}'
- name: post-instagram
type: call
call: instagram.create-post
with:
caption: 'BREAKING: {{headline}}'
link: '{{url}}'
- name: send-whatsapp
type: call
call: whatsapp.send-message
with:
channel_id: breaking_alerts
text: 'BREAKING: {{headline}} {{url}}'
- name: log-distribution
type: call
call: datadog.send-event
with:
title: 'Breaking news distributed: {{article_id}}'
text: '{{headline}} pushed to 4 channels'
tags: breaking,news
consumes:
- 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: instagram
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /media
operations:
- name: create-post
method: POST
- type: http
namespace: whatsapp
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.whatsapp_token
resources:
- name: messages
path: /{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Retrieves a Google Analytics traffic report for a specified date range and property, returning page views, sessions, and bounce rate.
naftiko: '0.5'
info:
label: Google Analytics Report Fetch
description: Retrieves a Google Analytics traffic report for a specified date range and property, returning page views, sessions, and bounce rate.
tags:
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-analytics-report
description: Fetch a Google Analytics report by property ID and date range.
inputParameters:
- name: property_id
in: body
type: string
description: The GA4 property ID.
- name: date_from
in: body
type: string
description: Report start date YYYY-MM-DD.
- name: date_to
in: body
type: string
description: Report end date YYYY-MM-DD.
call: ga.get-report
with:
property_id: '{{property_id}}'
date_from: '{{date_from}}'
date_to: '{{date_to}}'
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
Manages API deprecation at Dow Jones via consumer identification, notices, and tracking.
naftiko: '0.5'
info:
label: API Deprecation Pipeline
description: Manages API deprecation at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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.dowjones.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://dowjones.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 SolarWinds critical alert fires, creates a ServiceNow incident, pages the on-call team via Microsoft Teams, and opens a Datadog investigation dashboard.
naftiko: '0.5'
info:
label: Incident Response Orchestrator
description: When a SolarWinds critical alert fires, creates a ServiceNow incident, pages the on-call team via Microsoft Teams, and opens a Datadog investigation dashboard.
tags:
- incident-response
- solarwinds
- servicenow
- microsoft-teams
- datadog
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: handle-critical-alert
description: On critical SolarWinds alert, create incident, page team, and open investigation.
inputParameters:
- name: alert_id
in: body
type: string
description: The SolarWinds alert identifier.
- name: node_name
in: body
type: string
description: The affected node name.
- name: severity
in: body
type: string
description: Alert severity level.
steps:
- name: get-alert-detail
type: call
call: solarwinds.get-alert-detail
with:
alert_id: '{{alert_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Critical alert on {{node_name}}: {{get-alert-detail.message}}'
severity: '{{severity}}'
assigned_group: NOC
description: 'SolarWinds alert {{alert_id}} on {{node_name}}. Details: {{get-alert-detail.message}}'
- name: page-oncall
type: call
call: msteams.send-message
with:
channel_id: noc_alerts
text: 'CRITICAL: {{node_name}} — {{get-alert-detail.message}}. Incident: {{create-incident.number}}. Severity: {{severity}}'
- name: create-dashboard
type: call
call: datadog.create-dashboard
with:
title: 'Investigation: {{node_name}} — {{alert_id}}'
widgets: '{"node":"{{node_name}}","metric":"system.cpu.user"}'
consumes:
- type: http
namespace: solarwinds
baseUri: https://solarwinds.dowjones.com:17778/SolarWinds/InformationService/v3/Json
authentication:
type: basic
username: $secrets.solarwinds_user
password: $secrets.solarwinds_password
resources:
- name: alerts
path: /Query
operations:
- name: get-alert-detail
method: POST
- type: http
namespace: servicenow
baseUri: https://dowjones.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: dashboards
path: /dashboard
operations:
- name: create-dashboard
method: POST
Checks build at Dow Jones.
naftiko: '0.5'
info:
label: Azure DevOps Build Check
description: Checks build at Dow Jones.
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: azdo-build
port: 8080
tools:
- name: check-build
description: Check build at Dow Jones.
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/dowjones.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
Aggregates Google Analytics page metrics, Elasticsearch article counts, and Salesforce subscription conversions to build a daily newsroom performance snapshot and posts it to Microsoft Teams.
naftiko: '0.5'
info:
label: Newsroom Performance Dashboard
description: Aggregates Google Analytics page metrics, Elasticsearch article counts, and Salesforce subscription conversions to build a daily newsroom performance snapshot and posts it to Microsoft Teams.
tags:
- analytics
- news
- google-analytics
- elasticsearch
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: newsroom-dashboard
port: 8080
tools:
- name: build-daily-snapshot
description: Aggregate metrics from GA, Elasticsearch, and Salesforce, then post summary to Teams.
inputParameters:
- name: date
in: body
type: string
description: Snapshot date YYYY-MM-DD.
- name: channel_id
in: body
type: string
description: Teams channel for the summary.
steps:
- name: get-traffic
type: call
call: ga.get-report
with:
property_id: dj_web_property
date_from: '{{date}}'
date_to: '{{date}}'
- name: get-article-count
type: call
call: elasticsearch.count
with:
index: articles
date: '{{date}}'
- name: get-conversions
type: call
call: salesforce.get-conversions
with:
date: '{{date}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: '{{channel_id}}'
text: 'Daily Snapshot ({{date}}): {{get-traffic.sessions}} sessions, {{get-article-count.count}} articles, {{get-conversions.total}} conversions.'
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: elasticsearch
baseUri: https://search.dowjones.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: count
path: /{{index}}/_count
inputParameters:
- name: index
in: path
operations:
- name: count
method: POST
- type: http
namespace: salesforce
baseUri: https://dowjones.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: conversions
path: /query
operations:
- name: get-conversions
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Searches the PeopleSoft employee directory by name or employee ID and returns contact information, department, and location.
naftiko: '0.5'
info:
label: PeopleSoft Employee Directory Lookup
description: Searches the PeopleSoft employee directory by name or employee ID and returns contact information, department, and location.
tags:
- hr
- peoplesoft
capability:
exposes:
- type: mcp
namespace: employee-directory
port: 8080
tools:
- name: search-employee
description: Search PeopleSoft employee directory by name or ID.
inputParameters:
- name: search_term
in: body
type: string
description: Employee name or ID to search.
call: peoplesoft.search-employees
with:
query: '{{search_term}}'
consumes:
- type: http
namespace: peoplesoft
baseUri: https://peoplesoft.dowjones.com/PSIGW/RESTListeningConnector/PSFT_HR
authentication:
type: basic
username: $secrets.peoplesoft_user
password: $secrets.peoplesoft_password
resources:
- name: employees
path: /employees
operations:
- name: search-employees
method: GET
When a reader accesses premium content, validates their SAP subscription status via Azure Active Directory, and either grants access or redirects to the subscription page, logging the event in Elasticsearch.
naftiko: '0.5'
info:
label: Content Paywall Enforcement
description: When a reader accesses premium content, validates their SAP subscription status via Azure Active Directory, and either grants access or redirects to the subscription page, logging the event in Elasticsearch.
tags:
- subscriptions
- access-control
- sap
- azure-active-directory
- elasticsearch
capability:
exposes:
- type: mcp
namespace: paywall
port: 8080
tools:
- name: enforce-paywall
description: Validate subscriber access to premium content and log the access attempt.
inputParameters:
- name: user_email
in: body
type: string
description: The reader email address.
- name: article_id
in: body
type: string
description: The premium article identifier.
steps:
- name: lookup-user
type: call
call: azuread.get-user
with:
upn: '{{user_email}}'
- name: check-subscription
type: call
call: sap.get-subscription
with:
account_id: '{{lookup-user.extension_account_id}}'
- name: log-access
type: call
call: elasticsearch.index-document
with:
index: paywall_events
document_id: '{{article_id}}_{{user_email}}'
body: '{"article":"{{article_id}}","user":"{{user_email}}","status":"{{check-subscription.status}}"}'
consumes:
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{upn}}
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: sap
baseUri: https://dowjones-sap.s4hana.cloud/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: subscriptions
path: /subscriptions/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: elasticsearch
baseUri: https://search.dowjones.com
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: documents
path: /{{index}}/_doc/{{document_id}}
inputParameters:
- name: index
in: path
- name: document_id
in: path
operations:
- name: index-document
method: PUT
Triggers an Azure Functions deployment from a GitHub Actions build artifact and monitors the deployment status.
naftiko: '0.5'
info:
label: Azure Functions Deployment Trigger
description: Triggers an Azure Functions deployment from a GitHub Actions build artifact and monitors the deployment status.
tags:
- deployment
- azure-functions
- github-actions
capability:
exposes:
- type: mcp
namespace: serverless-deploy
port: 8080
tools:
- name: deploy-azure-function
description: Deploy an Azure Function from a GitHub Actions build artifact.
inputParameters:
- name: function_app_name
in: body
type: string
description: The Azure Function App name.
- name: artifact_url
in: body
type: string
description: URL of the build artifact.
steps:
- name: deploy-function
type: call
call: azurefunctions.deploy
with:
app_name: '{{function_app_name}}'
artifact_url: '{{artifact_url}}'
- name: check-status
type: call
call: azurefunctions.get-status
with:
app_name: '{{function_app_name}}'
consumes:
- type: http
namespace: azurefunctions
baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/dj-rg/providers/Microsoft.Web/sites
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: deployments
path: /{{app_name}}/extensions/MSDeploy
inputParameters:
- name: app_name
in: path
operations:
- name: deploy
method: PUT
- name: status
path: /{{app_name}}
inputParameters:
- name: app_name
in: path
operations:
- name: get-status
method: GET
Triggers a Crystal Reports generation job for a specified report template and parameters, then stores the output PDF in SharePoint.
naftiko: '0.5'
info:
label: Crystal Reports Generation
description: Triggers a Crystal Reports generation job for a specified report template and parameters, then stores the output PDF in SharePoint.
tags:
- reporting
- crystal-reports
- sharepoint
capability:
exposes:
- type: mcp
namespace: reporting
port: 8080
tools:
- name: generate-report
description: Generate a Crystal Report and store the result in SharePoint.
inputParameters:
- name: template_id
in: body
type: string
description: Crystal Reports template identifier.
- name: parameters
in: body
type: string
description: JSON-encoded report parameters.
- name: output_folder
in: body
type: string
description: SharePoint folder path for output.
steps:
- name: run-report
type: call
call: crystal.generate-report
with:
template_id: '{{template_id}}'
parameters: '{{parameters}}'
- name: upload-to-sharepoint
type: call
call: sharepoint.upload-file
with:
site_id: reports_site
folder_path: '{{output_folder}}'
file_name: '{{run-report.file_name}}'
content: '{{run-report.output_url}}'
consumes:
- type: http
namespace: crystal
baseUri: https://reports.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.crystal_reports_token
resources:
- name: reports
path: /reports/generate
operations:
- name: generate-report
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
Creates postmortems at Dow Jones.
naftiko: '0.5'
info:
label: Incident Postmortem Pipeline
description: Creates postmortems at Dow Jones.
tags:
- incident-management
- postmortem
- pagerduty
- confluence
capability:
exposes:
- type: mcp
namespace: postmortem
port: 8080
tools:
- name: create-postmortem
description: Create postmortem at Dow Jones.
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://dowjones.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 Dow Jones via Okta, Slack, ServiceNow, and storage.
naftiko: '0.5'
info:
label: Employee Offboarding Pipeline
description: Offboards employees at Dow Jones 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 Dow Jones.
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://dowjones.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://dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.storage_token
resources:
- name: archives
path: /archive
operations:
- name: archive
method: POST
Processes invoices at Dow Jones via OCR, SAP matching, approval, and Oracle recording.
naftiko: '0.5'
info:
label: Vendor Invoice Processing Pipeline
description: Processes invoices at Dow Jones 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 Dow Jones.
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.dowjones.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.dowjones.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.dowjones.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.dowjones.com/api/v1
authentication:
type: bearer
token: $secrets.oracle_token
resources:
- name: payments
path: /payments
operations:
- name: create-payment
method: POST
On a critical Datadog alert for trading infrastructure, creates a ServiceNow P1 incident, pages the on-call team via PagerDuty, and posts to the operations Teams channel.
naftiko: '0.5'
info:
label: IT Incident P1 Response Chain
description: On a critical Datadog alert for trading infrastructure, creates a ServiceNow P1 incident, pages the on-call team via PagerDuty, and posts to the operations Teams channel.
tags:
- itsm
- incident-response
- datadog
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-critical-alert
description: Given a Datadog alert ID and monitor name, create a ServiceNow P1 incident, trigger PagerDuty escalation, and notify the operations Teams channel.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog alert or event ID triggering the P1 incident.
- name: monitor_name
in: body
type: string
description: The name of the Datadog monitor that fired.
steps:
- name: create-p1-incident
type: call
call: servicenow.create-p1
with:
short_description: 'P1: {{monitor_name}}'
impact: '1'
urgency: '1'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: 'P1: {{monitor_name}}'
service_id: $secrets.pagerduty_service_id
body: 'ServiceNow: {{create-p1-incident.number}}'
- name: notify-ops
type: call
call: msteams.post-p1-alert
with:
channel: it-ops-p1
text: 'P1 Incident opened: {{monitor_name}} | SN: {{create-p1-incident.number}} | PD: {{page-oncall.id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-p1
method: POST
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/it-ops/channels/p1/messages
operations:
- name: post-p1-alert
method: POST
Runs data quality checks in Snowflake, sends alerts to PagerDuty on failures, and logs issues in Jira for data engineering follow-up.
naftiko: '0.5'
info:
label: Data Quality Alerting Pipeline
description: Runs data quality checks in Snowflake, sends alerts to PagerDuty on failures, and logs issues in Jira for data engineering follow-up.
tags:
- data-quality
- snowflake
- pagerduty
- jira
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-data-quality-check
description: Execute data quality validation and alert on failures.
inputParameters:
- name: dataset
in: body
type: string
description: Snowflake dataset name.
- name: threshold
in: body
type: string
description: Acceptable error threshold percentage.
steps:
- name: run-check
type: call
call: snowflake-api.run-query
with:
query: SELECT COUNT(*) as errors FROM {{dataset}} WHERE is_valid = false
- name: alert-oncall
type: call
call: pagerduty-api.create-event
with:
routing_key: $secrets.pagerduty_routing_key
summary: 'Data quality failure: {{dataset}} has {{run-check.errors}} errors (threshold: {{threshold}}%)'
- name: log-issue
type: call
call: jira-api.create-issue
with:
project: DATA
summary: 'Data quality: {{dataset}}'
description: 'Errors: {{run-check.errors}}. Threshold: {{threshold}}%. PagerDuty incident: {{alert-oncall.dedup_key}}.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: pagerduty-api
baseUri: https://events.pagerduty.com/v2
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: events
path: /enqueue
operations:
- name: create-event
method: POST
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Polls SolarWinds for degraded network nodes, creates ServiceNow incidents, and notifies network ops via Microsoft Teams.
naftiko: '0.5'
info:
label: SolarWinds Network Health to ServiceNow
description: Polls SolarWinds for degraded network nodes, creates ServiceNow incidents, and notifies network ops via Microsoft Teams.
tags:
- networking
- solarwinds
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: solarwinds-health
port: 8080
tools:
- name: report-network-degradation
description: Detect degraded network nodes and create incident tickets.
inputParameters:
- name: node_id
in: body
type: string
description: SolarWinds node identifier.
steps:
- name: get-node
type: call
call: solarwinds-api.get-node-status
with:
node_id: '{{node_id}}'
- name: create-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'Network degradation: {{get-node.name}}'
description: 'Status: {{get-node.status}}. CPU: {{get-node.cpu_pct}}%. Memory: {{get-node.memory_pct}}%.'
priority: '2'
- name: notify-ops
type: call
call: msteams-api.post-message
with:
team_id: network-ops
channel_id: alerts
message: 'Network node {{get-node.name}} degraded. Incident: {{create-incident.number}}.'
consumes:
- type: http
namespace: solarwinds-api
baseUri: https://solarwinds.goldmansachs.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: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves GitHub Advanced Security code scanning alerts for critical findings and creates prioritized Jira security issues for the application security team.
naftiko: '0.5'
info:
label: GitHub Code Security Alert to Jira Sync
description: Retrieves GitHub Advanced Security code scanning alerts for critical findings and creates prioritized Jira security issues for the application security team.
tags:
- security
- devops
- github
- jira
- code-scanning
capability:
exposes:
- type: mcp
namespace: security-devops
port: 8080
tools:
- name: sync-security-alerts-to-jira
description: Given a GitHub repository and severity filter, fetch all open code scanning alerts at or above that severity and create Jira security issues for each critical finding.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository full name to scan, e.g. goldman-sachs/platform.
- name: severity_filter
in: body
type: string
description: 'Minimum severity level to import: critical, high, or medium.'
steps:
- name: get-alerts
type: call
call: github.list-code-scanning-alerts
with:
repo: '{{repo}}'
severity: '{{severity_filter}}'
- name: create-security-issues
type: call
call: jira.create-issue
with:
project_key: APPSEC
summary: 'Security alerts in {{repo}}: {{get-alerts.total}} {{severity_filter}}+ findings'
description: 'Top finding: {{get-alerts.top_rule}}
Severity filter: {{severity_filter}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: code-scanning-alerts
path: /repos/{{repo}}/code-scanning/alerts
inputParameters:
- name: repo
in: path
operations:
- name: list-code-scanning-alerts
method: GET
- type: http
namespace: jira
baseUri: https://goldmansachs.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
Checks the health and status of Oracle Cloud Infrastructure resources provisioned for Goldman Sachs applications.
naftiko: '0.5'
info:
label: Oracle Cloud Infrastructure Status Check
description: Checks the health and status of Oracle Cloud Infrastructure resources provisioned for Goldman Sachs applications.
tags:
- infrastructure
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: oracle-cloud
port: 8080
tools:
- name: check-infra-status
description: Retrieve the current status of OCI compute and network resources.
inputParameters:
- name: resource_id
in: body
type: string
description: OCI resource OCID.
call: oci-api.get-resource-status
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: oci-api
baseUri: https://iaas.us-ashburn-1.oraclecloud.com/20160918
authentication:
type: bearer
token: $secrets.oci_token
resources:
- name: resources
path: /instances/{{resource_id}}
inputParameters:
- name: resource_id
in: path
operations:
- name: get-resource-status
method: GET
Searches Confluence for regulatory policy documents matching a keyword query within the compliance knowledge base.
naftiko: '0.5'
info:
label: Confluence Regulatory Policy Search
description: Searches Confluence for regulatory policy documents matching a keyword query within the compliance knowledge base.
tags:
- compliance
- documentation
- confluence
capability:
exposes:
- type: mcp
namespace: policy-search
port: 8080
tools:
- name: search-policy
description: Given a keyword, search for matching regulatory policy pages in Confluence. Use when compliance officers need to find specific policy documentation.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: confluence-api.search-content
with:
keyword: '{{keyword}}'
outputParameters:
- name: page_id
type: string
mapping: $.results[0].id
- name: title
type: string
mapping: $.results[0].title
- name: url
type: string
mapping: $.results[0]._links.webui
consumes:
- type: http
namespace: confluence-api
baseUri: https://gs-engineering.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: content
path: /content/search
inputParameters:
- name: keyword
in: query
operations:
- name: search-content
method: GET
Submits a ServiceNow change request for trading system infrastructure changes, routes it to the CAB, and notifies stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Management for Trading Systems
description: Submits a ServiceNow change request for trading system infrastructure changes, routes it to the CAB, and notifies stakeholders via Microsoft Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- trading-infrastructure
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-trading-change-request
description: Given change details for a trading system modification, create a ServiceNow change request, assign to the trading CAB group, and notify approvers in Teams.
inputParameters:
- name: short_description
in: body
type: string
description: Description of the trading system change being requested.
- name: change_type
in: body
type: string
description: 'ServiceNow change type: normal, standard, or emergency.'
- name: risk_level
in: body
type: string
description: 'Risk level: low, medium, or high.'
- name: approver_email
in: body
type: string
description: Email of the primary change approver.
steps:
- name: create-change
type: call
call: servicenow.create-change-request
with:
short_description: '{{short_description}}'
type: '{{change_type}}'
risk: '{{risk_level}}'
assignment_group: Trading_CAB
- name: notify-approver
type: call
call: msteams.notify-approver
with:
recipient: '{{approver_email}}'
text: 'Change request {{create-change.number}} awaiting your approval: {{short_description}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://goldmansachs.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-request
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient}}/sendMail
inputParameters:
- name: recipient
in: path
operations:
- name: notify-approver
method: POST
Audits all Okta users for MFA enrollment, flags non-compliant users, and creates a ServiceNow compliance incident for the security team.
naftiko: '0.5'
info:
label: Okta MFA Compliance Audit
description: Audits all Okta users for MFA enrollment, flags non-compliant users, and creates a ServiceNow compliance incident for the security team.
tags:
- identity
- security
- okta
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security-compliance
port: 8080
tools:
- name: audit-mfa-compliance
description: List all active Okta users, identify those without MFA enrolled, and open a ServiceNow compliance incident when non-compliance exceeds threshold.
inputParameters:
- name: compliance_threshold
in: body
type: number
description: Maximum allowed percentage of non-MFA users before opening a compliance incident.
steps:
- name: list-users
type: call
call: okta.list-active-users
- name: create-compliance-incident
type: call
call: servicenow.create-compliance-incident
with:
short_description: 'Okta MFA non-compliance: threshold exceeded at {{compliance_threshold}}%'
category: security_compliance
consumes:
- type: http
namespace: okta
baseUri: https://goldmansachs.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users
operations:
- name: list-active-users
method: GET
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-compliance-incident
method: POST
Posts a message to a Microsoft Teams channel for real-time team communication and alerting.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Message Post
description: Posts a message to a Microsoft Teams channel for real-time team communication and alerting.
tags:
- communication
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: msteams
port: 8080
tools:
- name: post-channel-message
description: Send a message to a specific Teams channel.
inputParameters:
- name: team_id
in: body
type: string
description: Teams team identifier.
- name: channel_id
in: body
type: string
description: Teams channel identifier.
- name: message
in: body
type: string
description: Message text to post.
call: msteams-api.post-message
with:
team_id: '{{team_id}}'
channel_id: '{{channel_id}}'
message: '{{message}}'
consumes:
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Extracts resolved incidents from ServiceNow, generates knowledge articles in Confluence, and indexes them in SharePoint search.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Update Pipeline
description: Extracts resolved incidents from ServiceNow, generates knowledge articles in Confluence, and indexes them in SharePoint search.
tags:
- knowledge-management
- servicenow
- confluence
- sharepoint
capability:
exposes:
- type: mcp
namespace: kb-update
port: 8080
tools:
- name: update-knowledge-base
description: Convert resolved incidents into knowledge base articles.
inputParameters:
- name: category
in: body
type: string
description: Incident category to process.
- name: since_date
in: body
type: string
description: Date to search from YYYY-MM-DD.
steps:
- name: get-resolved
type: call
call: servicenow-api.list-incidents
with:
category: '{{category}}'
state: resolved
since: '{{since_date}}'
- name: create-article
type: call
call: confluence-api.create-page
with:
space: KB
title: 'KB: {{get-resolved.top.short_description}}'
body: 'Resolution: {{get-resolved.top.resolution_notes}}. Category: {{category}}.'
- name: index-article
type: call
call: sharepoint-api.create-file
with:
site_id: knowledge-base
path: Articles/{{category}}/{{get-resolved.top.number}}.html
consumes:
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: list-incidents
method: GET
- type: http
namespace: confluence-api
baseUri: https://goldmansachs.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
- type: http
namespace: sharepoint-api
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: create-file
method: PUT
Detects ETL failures in Snowflake, restarts the pipeline via GitHub Actions, and logs the incident in ServiceNow.
naftiko: '0.5'
info:
label: Snowflake ETL Failure Recovery Pipeline
description: Detects ETL failures in Snowflake, restarts the pipeline via GitHub Actions, and logs the incident in ServiceNow.
tags:
- data-engineering
- snowflake
- github-actions
- servicenow
capability:
exposes:
- type: mcp
namespace: etl-recovery
port: 8080
tools:
- name: recover-etl-pipeline
description: Detect and recover from ETL pipeline failures.
inputParameters:
- name: pipeline_name
in: body
type: string
description: ETL pipeline name.
- name: run_date
in: body
type: string
description: Pipeline run date YYYY-MM-DD.
steps:
- name: check-status
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM etl.pipeline_runs WHERE name = '{{pipeline_name}}' AND run_date = '{{run_date}}'
- name: restart-pipeline
type: call
call: github-api.dispatch-workflow
with:
repo: etl-pipelines
workflow: '{{pipeline_name}}.yml'
ref: main
- name: log-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'ETL failure: {{pipeline_name}} on {{run_date}}'
description: 'Status: {{check-status.status}}. Restart workflow: {{restart-pipeline.id}}.'
category: data_engineering
consumes:
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /repos/goldman-sachs/{{repo}}/actions/workflows/{{workflow}}/dispatches
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: dispatch-workflow
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/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 company firmographic data from ZoomInfo to enrich CRM records for business development.
naftiko: '0.5'
info:
label: ZoomInfo Company Enrichment Lookup
description: Retrieves company firmographic data from ZoomInfo to enrich CRM records for business development.
tags:
- data-enrichment
- zoominfo
capability:
exposes:
- type: mcp
namespace: zoominfo
port: 8080
tools:
- name: get-company-info
description: Look up company firmographics by domain name.
inputParameters:
- name: domain
in: body
type: string
description: Company website domain.
call: zoominfo-api.enrich-company
with:
domain: '{{domain}}'
consumes:
- type: http
namespace: zoominfo-api
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: companies
path: /enrich/company
operations:
- name: enrich-company
method: POST
Retrieves metadata for an object stored in an S3 bucket used for risk data archival.
naftiko: '0.5'
info:
label: Amazon S3 Bucket Object Lookup
description: Retrieves metadata for an object stored in an S3 bucket used for risk data archival.
tags:
- storage
- amazon-s3
capability:
exposes:
- type: mcp
namespace: s3
port: 8080
tools:
- name: get-object-metadata
description: Get metadata for an object in a given S3 bucket.
inputParameters:
- name: bucket
in: body
type: string
description: S3 bucket name.
- name: key
in: body
type: string
description: S3 object key.
call: s3-api.head-object
with:
bucket: '{{bucket}}'
key: '{{key}}'
consumes:
- type: http
namespace: s3-api
baseUri: https://s3.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: objects
path: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: head-object
method: HEAD
Pulls website traffic metrics from Google Analytics for Goldman Sachs digital properties.
naftiko: '0.5'
info:
label: Google Analytics Traffic Report
description: Pulls website traffic metrics from Google Analytics for Goldman Sachs digital properties.
tags:
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: google-analytics
port: 8080
tools:
- name: get-traffic-report
description: Fetch a traffic summary for a given property and date range.
inputParameters:
- name: property_id
in: body
type: string
description: 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-api.run-report
with:
property_id: '{{property_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: ga-api
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
Runs data quality validation queries on Snowflake financial data tables and posts completeness and anomaly results to the data engineering team in Teams.
naftiko: '0.5'
info:
label: Snowflake Financial Data Quality Check
description: Runs data quality validation queries on Snowflake financial data tables and posts completeness and anomaly results to the data engineering team in Teams.
tags:
- data-analytics
- snowflake
- microsoft-teams
- data-quality
- finance
capability:
exposes:
- type: mcp
namespace: financial-data-ops
port: 8080
tools:
- name: run-financial-data-quality
description: Given a Snowflake database and table name for financial data, execute a quality check query and post completeness and anomaly results to the data engineering Teams channel.
inputParameters:
- name: database
in: body
type: string
description: The Snowflake database containing the financial data table.
- name: table_name
in: body
type: string
description: The Snowflake table to run quality checks against.
steps:
- name: run-quality-check
type: call
call: snowflake.execute-statement
with:
database: '{{database}}'
statement: SELECT COUNT(*) as total, COUNT_IF(trade_id IS NULL) as missing_ids, COUNT_IF(amount IS NULL) as missing_amounts FROM {{table_name}}
- name: post-results
type: call
call: msteams.post-quality-results
with:
channel: data-engineering
text: 'Data quality check on {{table_name}}: Total={{run-quality-check.total}}, Missing IDs={{run-quality-check.missing_ids}}, Missing Amounts={{run-quality-check.missing_amounts}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://goldmansachs.snowflakecomputing.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/data-engineering/channels/general/messages
operations:
- name: post-quality-results
method: POST
Detects cloud infrastructure cost anomalies in Datadog, opens a ServiceNow change request for remediation, and notifies the FinOps team in Teams.
naftiko: '0.5'
info:
label: Datadog Cloud Cost Anomaly Response
description: Detects cloud infrastructure cost anomalies in Datadog, opens a ServiceNow change request for remediation, and notifies the FinOps team in Teams.
tags:
- cloud
- observability
- datadog
- servicenow
- cost-management
- finops
capability:
exposes:
- type: mcp
namespace: finops-ops
port: 8080
tools:
- name: respond-to-cost-anomaly
description: Given a Datadog monitor ID flagging a cost anomaly, retrieve monitor details, open a ServiceNow change request, and alert the FinOps team in Teams.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that detected the cost anomaly.
- name: resource_type
in: body
type: string
description: The cloud resource type with the anomaly, e.g. EC2, S3, GKE.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: 'Cost anomaly: {{resource_type}} — {{get-monitor.name}}'
category: cloud_cost
priority: '2'
- name: notify-finops
type: call
call: msteams.post-cost-alert
with:
channel: cloud-finops
text: 'Cost anomaly on {{resource_type}}: {{get-monitor.name}}. Change: {{create-change.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://goldmansachs.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: messages
path: /teams/finops/channels/general/messages
operations:
- name: post-cost-alert
method: POST
Queries Snowflake for profit and loss attribution data by desk and strategy for a specified trading date.
naftiko: '0.5'
info:
label: Snowflake PnL Attribution Query
description: Queries Snowflake for profit and loss attribution data by desk and strategy for a specified trading date.
tags:
- trading
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: pnl-attribution
port: 8080
tools:
- name: query-pnl
description: Given a trading desk and date, return the PnL breakdown by strategy. Use when risk managers need daily PnL attribution reports.
inputParameters:
- name: desk
in: body
type: string
description: The trading desk identifier.
- name: trade_date
in: body
type: string
description: The trade date in YYYY-MM-DD format.
call: snowflake-api.run-pnl-query
with:
desk: '{{desk}}'
trade_date: '{{trade_date}}'
outputParameters:
- name: total_pnl
type: number
mapping: $.data[0].total_pnl
- name: strategy_count
type: integer
mapping: $.data[0].strategy_count
consumes:
- type: http
namespace: snowflake-api
baseUri: https://gs-analytics.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-pnl-query
method: POST
Registers a new supplier in SAP Ariba, creates a ServiceNow vendor request ticket, and notifies the procurement team in Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Supplier Onboarding
description: Registers a new supplier in SAP Ariba, creates a ServiceNow vendor request ticket, and notifies the procurement team in Microsoft Teams.
tags:
- procurement
- sap-ariba
- servicenow
- microsoft-teams
- supplier-management
capability:
exposes:
- type: mcp
namespace: supplier-onboarding
port: 8080
tools:
- name: onboard-supplier
description: Given a supplier name, contact email, and spend category, register in SAP Ariba, open a ServiceNow vendor request, and notify the procurement team in Teams.
inputParameters:
- name: supplier_name
in: body
type: string
description: Legal name of the new supplier.
- name: supplier_email
in: body
type: string
description: Primary contact email for the supplier.
- name: spend_category
in: body
type: string
description: Ariba spend category, e.g. Technology Services, Professional Services.
steps:
- name: register-supplier
type: call
call: ariba.create-supplier
with:
name: '{{supplier_name}}'
email: '{{supplier_email}}'
category: '{{spend_category}}'
- name: create-vendor-ticket
type: call
call: servicenow.create-vendor-request
with:
short_description: 'Supplier onboarding: {{supplier_name}}'
supplier_id: '{{register-supplier.supplier_id}}'
- name: notify-procurement
type: call
call: msteams.notify-procurement
with:
channel: procurement-ops
text: 'Supplier {{supplier_name}} registered in Ariba (ID: {{register-supplier.supplier_id}}). SN: {{create-vendor-ticket.number}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplier/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: suppliers
path: /suppliers
operations:
- name: create-supplier
method: POST
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: vendor-requests
path: /table/u_vendor_request
operations:
- name: create-vendor-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/procurement/channels/general/messages
operations:
- name: notify-procurement
method: POST
Collects cost data from AWS CloudWatch, analyzes spend in Datadog, and creates optimization recommendations in Jira.
naftiko: '0.5'
info:
label: Infrastructure Cost Optimization Pipeline
description: Collects cost data from AWS CloudWatch, analyzes spend in Datadog, and creates optimization recommendations in Jira.
tags:
- finops
- cloudwatch
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: cost-optimization
port: 8080
tools:
- name: run-cost-analysis
description: Analyze infrastructure costs and create optimization tickets.
inputParameters:
- name: account_id
in: body
type: string
description: AWS account identifier.
- name: threshold_pct
in: body
type: string
description: Overspend threshold percentage.
steps:
- name: get-costs
type: call
call: cloudwatch-api.get-metric-data
with:
account_id: '{{account_id}}'
metric: EstimatedCharges
- name: analyze-trend
type: call
call: datadog-api.query-metrics
with:
query: aws.billing.estimated_charges{account:{{account_id}}}
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: FINOPS
summary: 'Cost optimization: account {{account_id}}'
description: 'Current spend: {{get-costs.total}}. Trend: {{analyze-trend.trend}}. Threshold: {{threshold_pct}}%.'
consumes:
- type: http
namespace: cloudwatch-api
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: metrics
path: /?Action=GetMetricData
operations:
- name: get-metric-data
method: POST
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Identifies expiring contracts in SAP Ariba, notifies procurement in Jira, and sends renewal reminders through Microsoft Outlook.
naftiko: '0.5'
info:
label: SAP Ariba Contract Renewal Pipeline
description: Identifies expiring contracts in SAP Ariba, notifies procurement in Jira, and sends renewal reminders through Microsoft Outlook.
tags:
- procurement
- sap-ariba
- jira
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: contract-renewal
port: 8080
tools:
- name: process-contract-renewals
description: Identify and process expiring vendor contracts.
inputParameters:
- name: days_until_expiry
in: body
type: string
description: Number of days before expiry to trigger renewal.
steps:
- name: get-contracts
type: call
call: ariba-api.list-expiring-contracts
with:
days: '{{days_until_expiry}}'
- name: create-tasks
type: call
call: jira-api.create-issue
with:
project: PROCUREMENT
summary: 'Contract renewal: {{get-contracts.top.vendor_name}}'
description: 'Contract: {{get-contracts.top.contract_id}}. Expires: {{get-contracts.top.expiry_date}}. Value: {{get-contracts.top.value}}.'
- name: send-reminder
type: call
call: outlook-api.send-mail
with:
to: '{{get-contracts.top.owner_email}}'
subject: 'Contract renewal required: {{get-contracts.top.vendor_name}}'
body: 'Your contract with {{get-contracts.top.vendor_name}} expires on {{get-contracts.top.expiry_date}}. Jira: {{create-tasks.key}}.'
consumes:
- type: http
namespace: ariba-api
baseUri: https://openapi.ariba.com/api/sourcing-projects/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: contracts
path: /contracts
operations:
- name: list-expiring-contracts
method: GET
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: outlook-api
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
Retrieves the current state of a CloudWatch alarm to determine if a trading infrastructure metric has breached its threshold.
naftiko: '0.5'
info:
label: CloudWatch Metric Alarm Check
description: Retrieves the current state of a CloudWatch alarm to determine if a trading infrastructure metric has breached its threshold.
tags:
- monitoring
- cloudwatch
capability:
exposes:
- type: mcp
namespace: cloudwatch
port: 8080
tools:
- name: get-alarm-state
description: Check whether a named CloudWatch alarm is in OK, ALARM, or INSUFFICIENT_DATA state.
inputParameters:
- name: alarm_name
in: body
type: string
description: CloudWatch alarm name.
call: aws-cloudwatch.describe-alarm
with:
alarm_name: '{{alarm_name}}'
consumes:
- type: http
namespace: aws-cloudwatch
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: alarms
path: /?Action=DescribeAlarms&AlarmNames.member.1={{alarm_name}}
inputParameters:
- name: alarm_name
in: query
operations:
- name: describe-alarm
method: GET
Creates a Snowflake data share for a client, registers access in Okta, and notifies the client via Microsoft Outlook.
naftiko: '0.5'
info:
label: Snowflake Data Sharing Setup Pipeline
description: Creates a Snowflake data share for a client, registers access in Okta, and notifies the client via Microsoft Outlook.
tags:
- data-sharing
- snowflake
- okta
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: data-sharing
port: 8080
tools:
- name: setup-data-share
description: Provision a Snowflake data share with access control and notification.
inputParameters:
- name: share_name
in: body
type: string
description: Data share name.
- name: client_email
in: body
type: string
description: Client email address.
- name: datasets
in: body
type: string
description: Comma-separated dataset names.
steps:
- name: create-share
type: call
call: snowflake-api.run-query
with:
query: CREATE SHARE IF NOT EXISTS {{share_name}}
- name: grant-access
type: call
call: okta-api.assign-app
with:
login: '{{client_email}}'
app_id: snowflake-data-share
- name: notify-client
type: call
call: outlook-api.send-mail
with:
to: '{{client_email}}'
subject: 'Data Share Ready: {{share_name}}'
body: 'Your Snowflake data share {{share_name}} is now available. Datasets: {{datasets}}.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: okta-api
baseUri: https://goldmansachs.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: apps
path: /apps/{{app_id}}/users
inputParameters:
- name: app_id
in: path
operations:
- name: assign-app
method: POST
- type: http
namespace: outlook-api
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
Retrieves the priority and assignment details of a ServiceNow incident by number.
naftiko: '0.5'
info:
label: ServiceNow Incident Priority Lookup
description: Retrieves the priority and assignment details of a ServiceNow incident by number.
tags:
- it-operations
- incident-management
- servicenow
capability:
exposes:
- type: mcp
namespace: incident-priority
port: 8080
tools:
- name: get-incident-priority
description: Given a ServiceNow incident number, return the priority, state, and assigned group. Use when operations needs quick incident triage information.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number.
call: servicenow-api.get-incident
with:
incident_number: '{{incident_number}}'
outputParameters:
- name: priority
type: string
mapping: $.result.priority
- name: state
type: string
mapping: $.result.state
- name: assignment_group
type: string
mapping: $.result.assignment_group.display_value
consumes:
- type: http
namespace: servicenow-api
baseUri: https://gs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{{incident_number}}
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
Checks Azure Functions execution logs, identifies failures in Datadog, and creates ServiceNow incidents for degraded functions.
naftiko: '0.5'
info:
label: Azure Functions Health Check Pipeline
description: Checks Azure Functions execution logs, identifies failures in Datadog, and creates ServiceNow incidents for degraded functions.
tags:
- serverless
- azure-functions
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: azfunc-health
port: 8080
tools:
- name: check-functions-health
description: Monitor Azure Functions health and alert on failures.
inputParameters:
- name: function_app
in: body
type: string
description: Azure Function App name.
steps:
- name: get-logs
type: call
call: azure-api.get-function-logs
with:
function_app: '{{function_app}}'
- name: check-errors
type: call
call: datadog-api.query-metrics
with:
query: azure.functions.errors{function_app:{{function_app}}}
- name: create-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'Azure Function degraded: {{function_app}}'
description: 'Error count: {{check-errors.value}}. Last execution: {{get-logs.last_execution}}.'
category: serverless
consumes:
- type: http
namespace: azure-api
baseUri: https://management.azure.com/subscriptions
authentication:
type: bearer
token: $secrets.azure_management_token
resources:
- name: functions
path: /resourceGroups/gs-prod/providers/Microsoft.Web/sites/{{function_app}}/functions
inputParameters:
- name: function_app
in: path
operations:
- name: get-function-logs
method: GET
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/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 an ECS deployment via CloudWatch, triggers rollback on failure, and notifies the team through Microsoft Teams.
naftiko: '0.5'
info:
label: AWS ECS Deployment Rollback Pipeline
description: Monitors an ECS deployment via CloudWatch, triggers rollback on failure, and notifies the team through Microsoft Teams.
tags:
- deployment
- amazon-ecs
- cloudwatch
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ecs-rollback
port: 8080
tools:
- name: rollback-ecs-deployment
description: Monitor an ECS deployment and roll back on failure.
inputParameters:
- name: cluster
in: body
type: string
description: ECS cluster name.
- name: service
in: body
type: string
description: ECS service name.
steps:
- name: check-health
type: call
call: cloudwatch-api.get-metric-data
with:
metric: HealthyHostCount
dimensions: ClusterName={{cluster}},ServiceName={{service}}
- name: trigger-rollback
type: call
call: ecs-api.update-service
with:
cluster: '{{cluster}}'
service: '{{service}}'
task_definition: '{{service}}:previous'
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: platform-team
channel_id: deployments
message: 'ECS rollback triggered for {{service}} in {{cluster}}. Health: {{check-health.value}}.'
consumes:
- type: http
namespace: cloudwatch-api
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: metrics
path: /?Action=GetMetricData
operations:
- name: get-metric-data
method: POST
- type: http
namespace: ecs-api
baseUri: https://ecs.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: services
path: /?Action=UpdateService
operations:
- name: update-service
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Triggers a Power BI dataset refresh for the divisional P&L dashboard and notifies the finance team in Microsoft Teams upon completion.
naftiko: '0.5'
info:
label: Power BI Financial Performance Dashboard Refresh
description: Triggers a Power BI dataset refresh for the divisional P&L dashboard and notifies the finance team in Microsoft Teams upon completion.
tags:
- finance
- data-analytics
- power-bi
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: refresh-pl-dashboard
description: Given a Power BI workspace and dataset ID for the P&L dashboard, trigger a refresh and notify the CFO team channel in Teams.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace GUID containing the P&L dashboard.
- name: dataset_id
in: body
type: string
description: The Power BI dataset GUID to refresh.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: notify-finance
type: call
call: msteams.notify-finance
with:
channel: cfo-finance-analytics
text: P&L dashboard dataset {{dataset_id}} refresh triggered.
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/finance/channels/analytics/messages
operations:
- name: notify-finance
method: POST
Analyzes Oracle database performance metrics, identifies slow queries in Datadog, and creates optimization tasks in Jira.
naftiko: '0.5'
info:
label: Oracle Database Performance Tuning Workflow
description: Analyzes Oracle database performance metrics, identifies slow queries in Datadog, and creates optimization tasks in Jira.
tags:
- database
- oracle
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: oracle-tuning
port: 8080
tools:
- name: tune-oracle-performance
description: Analyze database performance and create tuning tasks.
inputParameters:
- name: db_instance
in: body
type: string
description: Oracle database instance name.
steps:
- name: get-metrics
type: call
call: oracle-api.get-performance
with:
instance: '{{db_instance}}'
- name: analyze-queries
type: call
call: datadog-api.query-metrics
with:
query: oracle.queries.slow{instance:{{db_instance}}}
- name: create-task
type: call
call: jira-api.create-issue
with:
project: DBA
summary: 'Oracle tuning: {{db_instance}}'
description: 'Slow queries: {{analyze-queries.count}}. Avg response: {{get-metrics.avg_response_ms}}ms.'
consumes:
- type: http
namespace: oracle-api
baseUri: https://oracle-cloud.goldmansachs.com/api/v1
authentication:
type: bearer
token: $secrets.oracle_token
resources:
- name: instances
path: /dbSystems/{{instance}}/metrics
inputParameters:
- name: instance
in: path
operations:
- name: get-performance
method: GET
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Retrieves a pending SAP Ariba purchase requisition, validates against procurement policy, and routes it for approval via ServiceNow.
naftiko: '0.5'
info:
label: SAP Ariba Procurement Approval Routing
description: Retrieves a pending SAP Ariba purchase requisition, validates against procurement policy, and routes it for approval via ServiceNow.
tags:
- procurement
- sap-ariba
- servicenow
- approval
- finance
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: route-procurement-approval
description: Given an Ariba purchase requisition ID, retrieve the requisition details and create a ServiceNow approval task routed to the appropriate approver.
inputParameters:
- name: requisition_id
in: body
type: string
description: The SAP Ariba purchase requisition ID to process.
- name: approver_email
in: body
type: string
description: Email of the approver to route the requisition to.
steps:
- name: get-requisition
type: call
call: ariba.get-requisition
with:
requisition_id: '{{requisition_id}}'
- name: create-approval
type: call
call: servicenow.create-procurement-approval
with:
short_description: 'Procurement approval: {{get-requisition.title}}'
amount: '{{get-requisition.total_amount}}'
approver: '{{approver_email}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/requisition/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: requisitions
path: /requisitions/{{requisition_id}}
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-procurement-approval
method: POST
Reads issues from a Jira project, creates corresponding GitHub issues, and posts a migration summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Jira to GitHub Issue Migration
description: Reads issues from a Jira project, creates corresponding GitHub issues, and posts a migration summary to Microsoft Teams.
tags:
- project-management
- jira
- github
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: jira-github-migration
port: 8080
tools:
- name: migrate-jira-to-github
description: Migrate Jira issues to GitHub and report on the migration.
inputParameters:
- name: jira_project
in: body
type: string
description: Jira project key.
- name: github_repo
in: body
type: string
description: Target GitHub repository.
steps:
- name: get-issues
type: call
call: jira-api.search-issues
with:
project: '{{jira_project}}'
- name: create-gh-issue
type: call
call: github-api.create-issue
with:
repo: '{{github_repo}}'
title: '{{get-issues.top.summary}}'
body: 'Migrated from Jira {{get-issues.top.key}}. Description: {{get-issues.top.description}}'
- name: post-summary
type: call
call: msteams-api.post-message
with:
team_id: engineering
channel_id: migrations
message: Migrated {{get-issues.total}} issues from Jira {{jira_project}} to GitHub {{github_repo}}.
consumes:
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: search
path: /search
operations:
- name: search-issues
method: GET
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: issues
path: /repos/goldman-sachs/{{repo}}/issues
inputParameters:
- name: repo
in: path
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Receives order instructions from Bloomberg AIM, validates against compliance rules in Snowflake, and routes to Tradeweb for execution.
naftiko: '0.5'
info:
label: Bloomberg AIM Order Routing Pipeline
description: Receives order instructions from Bloomberg AIM, validates against compliance rules in Snowflake, and routes to Tradeweb for execution.
tags:
- trading
- bloomberg-aim
- snowflake
- tradeweb
capability:
exposes:
- type: mcp
namespace: aim-routing
port: 8080
tools:
- name: route-aim-order
description: Validate and route a Bloomberg AIM order to Tradeweb.
inputParameters:
- name: order_id
in: body
type: string
description: Bloomberg AIM order identifier.
steps:
- name: get-order
type: call
call: aim-api.get-order
with:
order_id: '{{order_id}}'
- name: check-compliance
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM compliance.order_rules WHERE instrument = '{{get-order.instrument}}'
- name: route-to-tradeweb
type: call
call: tradeweb-api.submit-rfq
with:
instrument: '{{get-order.instrument}}'
quantity: '{{get-order.quantity}}'
side: '{{get-order.side}}'
consumes:
- type: http
namespace: aim-api
baseUri: https://api.bloomberg.com/aim/v1
authentication:
type: bearer
token: $secrets.bloomberg_aim_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: tradeweb-api
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: rfqs
path: /rfq
operations:
- name: submit-rfq
method: POST
Fetches a triggered PagerDuty incident, creates a corresponding Jira ticket, and posts an update to Microsoft Teams.
naftiko: '0.5'
info:
label: PagerDuty Incident to Jira Sync
description: Fetches a triggered PagerDuty incident, creates a corresponding Jira ticket, and posts an update to Microsoft Teams.
tags:
- incident-management
- pagerduty
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pd-jira-sync
port: 8080
tools:
- name: sync-incident-to-jira
description: Sync a PagerDuty incident into Jira and notify the team.
inputParameters:
- name: incident_id
in: body
type: string
description: PagerDuty incident ID.
steps:
- name: get-incident
type: call
call: pagerduty-api.get-incident
with:
incident_id: '{{incident_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
summary: 'PD: {{get-incident.title}}'
description: 'Severity: {{get-incident.urgency}}. Service: {{get-incident.service}}.'
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: sre-team
channel_id: incidents
message: 'PagerDuty incident {{incident_id}} synced to Jira: {{create-ticket.key}}.'
consumes:
- type: http
namespace: pagerduty-api
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: incidents
path: /incidents/{{incident_id}}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Queries Datadog for the p99 latency of trading platform services over the last hour.
naftiko: '0.5'
info:
label: Datadog Trading Platform Latency Check
description: Queries Datadog for the p99 latency of trading platform services over the last hour.
tags:
- monitoring
- trading
- datadog
capability:
exposes:
- type: mcp
namespace: trading-latency
port: 8080
tools:
- name: check-trading-latency
description: Given a trading service name, return the p99 latency metric. Use when SREs need to verify trading platform performance meets SLAs.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog service name for the trading platform.
call: datadog-api.get-latency
with:
service_name: '{{service_name}}'
outputParameters:
- name: p99_latency_ms
type: number
mapping: $.series[0].pointlist[-1][1]
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: datadog-api
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /query
inputParameters:
- name: service_name
in: query
operations:
- name: get-latency
method: GET
Retrieves indicative bond pricing from the Tradeweb platform for fixed-income trading desks.
naftiko: '0.5'
info:
label: Tradeweb Bond Price Lookup
description: Retrieves indicative bond pricing from the Tradeweb platform for fixed-income trading desks.
tags:
- trading
- tradeweb
capability:
exposes:
- type: mcp
namespace: tradeweb
port: 8080
tools:
- name: get-bond-price
description: Fetch indicative price for a bond by ISIN.
inputParameters:
- name: isin
in: body
type: string
description: Bond ISIN identifier.
call: tradeweb-api.get-price
with:
isin: '{{isin}}'
consumes:
- type: http
namespace: tradeweb-api
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: prices
path: /bonds/{{isin}}/price
inputParameters:
- name: isin
in: path
operations:
- name: get-price
method: GET
Queries Snowflake for the daily profit and loss summary for a given Goldman Sachs trading desk and date.
naftiko: '0.5'
info:
label: Snowflake Daily PnL Report Lookup
description: Queries Snowflake for the daily profit and loss summary for a given Goldman Sachs trading desk and date.
tags:
- trading
- snowflake
- pnl
- reporting
capability:
exposes:
- type: mcp
namespace: pnl-report
port: 8080
tools:
- name: get-daily-pnl
description: Given a trading desk code and date, returns the daily PnL summary from Snowflake. Use for end-of-day trading reviews.
inputParameters:
- name: desk_code
in: body
type: string
description: The trading desk identifier code.
- name: report_date
in: body
type: string
description: The report date in YYYY-MM-DD format.
call: snowflake-pnl.query-pnl
with:
desk: '{{desk_code}}'
date: '{{report_date}}'
outputParameters:
- name: total_pnl
type: number
mapping: $.data[0].TOTAL_PNL
- name: realized_pnl
type: number
mapping: $.data[0].REALIZED_PNL
consumes:
- type: http
namespace: snowflake-pnl
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
inputParameters:
- name: desk
in: body
- name: date
in: body
operations:
- name: query-pnl
method: POST
Pulls economic indicators from Bloomberg Economics, generates a summary, and distributes it via Confluence and Microsoft Outlook.
naftiko: '0.5'
info:
label: Bloomberg Economics Briefing Generator
description: Pulls economic indicators from Bloomberg Economics, generates a summary, and distributes it via Confluence and Microsoft Outlook.
tags:
- research
- bloomberg-economics
- confluence
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: economics-briefing
port: 8080
tools:
- name: generate-economics-briefing
description: Generate and distribute an economics briefing.
inputParameters:
- name: region
in: body
type: string
description: Economic region (e.g. US, EU, APAC).
- name: date
in: body
type: string
description: Briefing date YYYY-MM-DD.
steps:
- name: get-indicators
type: call
call: bloomberg-econ-api.get-indicators
with:
region: '{{region}}'
date: '{{date}}'
- name: create-page
type: call
call: confluence-api.create-page
with:
space: RESEARCH
title: 'Economics Briefing: {{region}} - {{date}}'
body: 'GDP: {{get-indicators.gdp}}. CPI: {{get-indicators.cpi}}. Unemployment: {{get-indicators.unemployment}}.'
- name: email-briefing
type: call
call: outlook-api.send-mail
with:
to: research-distribution@goldmansachs.com
subject: 'Economics Briefing: {{region}} - {{date}}'
body: The {{region}} economics briefing for {{date}} is available in Confluence.
consumes:
- type: http
namespace: bloomberg-econ-api
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: indicators
path: /economics/{{region}}
inputParameters:
- name: region
in: path
operations:
- name: get-indicators
method: GET
- type: http
namespace: confluence-api
baseUri: https://goldmansachs.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
- type: http
namespace: outlook-api
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
Promotes a trained ML model from Azure ML staging to production, validates metrics in Datadog, and notifies stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Machine Learning Model Promotion
description: Promotes a trained ML model from Azure ML staging to production, validates metrics in Datadog, and notifies stakeholders via Microsoft Teams.
tags:
- ml-ops
- azure-machine-learning
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-promotion
port: 8080
tools:
- name: promote-ml-model
description: Promote an ML model to production with validation and notification.
inputParameters:
- name: model_name
in: body
type: string
description: Azure ML model name.
- name: version
in: body
type: string
description: Model version to promote.
steps:
- name: promote-model
type: call
call: azureml-api.promote-model
with:
model_name: '{{model_name}}'
version: '{{version}}'
- name: validate-metrics
type: call
call: datadog-api.query-metrics
with:
query: ml.model.accuracy{model:{{model_name}},version:{{version}}}
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: data-science
channel_id: deployments
message: 'Model {{model_name}} v{{version}} promoted to production. Accuracy: {{validate-metrics.value}}.'
consumes:
- type: http
namespace: azureml-api
baseUri: https://ml.azure.com/api/v1
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: models
path: /models/{{model_name}}/versions/{{version}}/promote
inputParameters:
- name: model_name
in: path
- name: version
in: path
operations:
- name: promote-model
method: POST
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Checks the status of an Azure DevOps build pipeline run to confirm successful deployment artifacts.
naftiko: '0.5'
info:
label: Azure DevOps Build Status Check
description: Checks the status of an Azure DevOps build pipeline run to confirm successful deployment artifacts.
tags:
- cicd
- azure-devops
capability:
exposes:
- type: mcp
namespace: azure-devops
port: 8080
tools:
- name: get-build-status
description: Get the current status of an Azure DevOps build by ID.
inputParameters:
- name: build_id
in: body
type: string
description: Azure DevOps build identifier.
call: azdo-api.get-build
with:
build_id: '{{build_id}}'
consumes:
- type: http
namespace: azdo-api
baseUri: https://dev.azure.com/goldmansachs
authentication:
type: basic
username: ''
password: $secrets.azdo_pat
resources:
- name: builds
path: /_apis/build/builds/{{build_id}}
inputParameters:
- name: build_id
in: path
operations:
- name: get-build
method: GET
Fetches route configuration from the Kong API Gateway to verify service routing for internal APIs.
naftiko: '0.5'
info:
label: Kong API Gateway Route Lookup
description: Fetches route configuration from the Kong API Gateway to verify service routing for internal APIs.
tags:
- api-management
- kong
capability:
exposes:
- type: mcp
namespace: kong
port: 8080
tools:
- name: get-route
description: Retrieve a Kong route by its identifier.
inputParameters:
- name: route_id
in: body
type: string
description: Kong route ID.
call: kong-api.get-route
with:
route_id: '{{route_id}}'
consumes:
- type: http
namespace: kong-api
baseUri: https://kong-admin.goldmansachs.com
authentication:
type: apikey
key: apikey
value: $secrets.kong_admin_key
placement: header
resources:
- name: routes
path: /routes/{{route_id}}
inputParameters:
- name: route_id
in: path
operations:
- name: get-route
method: GET
Pulls research reports from FactSet, stores them in SharePoint, and notifies portfolio managers via Microsoft Teams.
naftiko: '0.5'
info:
label: FactSet Research Distribution Pipeline
description: Pulls research reports from FactSet, stores them in SharePoint, and notifies portfolio managers via Microsoft Teams.
tags:
- research
- factset
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: research-distribution
port: 8080
tools:
- name: distribute-research
description: Pull and distribute research reports to portfolio managers.
inputParameters:
- name: topic
in: body
type: string
description: Research topic or sector.
- name: date
in: body
type: string
description: Report date YYYY-MM-DD.
steps:
- name: get-research
type: call
call: factset-api.search-research
with:
topic: '{{topic}}'
date: '{{date}}'
- name: store-report
type: call
call: sharepoint-api.create-file
with:
site_id: research
path: Reports/{{topic}}/{{date}}.pdf
- name: notify-pms
type: call
call: msteams-api.post-message
with:
team_id: portfolio-mgmt
channel_id: research
message: 'New {{topic}} research available for {{date}}. Reports: {{get-research.count}}. View in SharePoint.'
consumes:
- type: http
namespace: factset-api
baseUri: https://api.factset.com/content/factset-research/v1
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: research
path: /research/articles
operations:
- name: search-research
method: GET
- type: http
namespace: sharepoint-api
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves the current backlog count and velocity metrics for a trade operations Jira project.
naftiko: '0.5'
info:
label: Jira Trade Ops Backlog Status
description: Retrieves the current backlog count and velocity metrics for a trade operations Jira project.
tags:
- project-management
- trading
- jira
capability:
exposes:
- type: mcp
namespace: backlog-status
port: 8080
tools:
- name: get-backlog-status
description: Given a Jira project key, return the open issue count and sprint velocity. Use when trade ops managers need backlog health metrics.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
call: jira-api.get-backlog
with:
project_key: '{{project_key}}'
outputParameters:
- name: open_count
type: integer
mapping: $.total
- name: high_priority
type: integer
mapping: $.high_priority_count
consumes:
- type: http
namespace: jira-api
baseUri: https://gs-engineering.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: search
path: /search
inputParameters:
- name: project_key
in: query
operations:
- name: get-backlog
method: GET
Retrieves all user assignments for a critical Okta application and posts an access review summary to the security team in Microsoft Teams for quarterly certification.
naftiko: '0.5'
info:
label: Okta Application Access Quarterly Review
description: Retrieves all user assignments for a critical Okta application and posts an access review summary to the security team in Microsoft Teams for quarterly certification.
tags:
- identity
- security
- okta
- microsoft-teams
- access-review
- compliance
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-app-access-review
description: Given an Okta application ID and name, list all assigned users and post a quarterly access review summary to the security Teams channel.
inputParameters:
- name: app_id
in: body
type: string
description: The Okta application ID to review, e.g. 0oa1abc2defGHI3jk.
- name: app_name
in: body
type: string
description: Human-readable application name for the report, e.g. Trading Platform.
steps:
- name: list-app-users
type: call
call: okta.list-app-users
with:
app_id: '{{app_id}}'
- name: post-review
type: call
call: msteams.post-review-summary
with:
channel: security-access-reviews
text: 'Q1 access review for {{app_name}}: {{list-app-users.total}} users assigned. Review required by end of quarter.'
consumes:
- type: http
namespace: okta
baseUri: https://goldmansachs.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: app-users
path: /apps/{{app_id}}/users
inputParameters:
- name: app_id
in: path
operations:
- name: list-app-users
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/security/channels/reviews/messages
operations:
- name: post-review-summary
method: POST
Retrieves active job postings and applicant pipeline statistics from LinkedIn and posts a weekly talent report to the HR team in Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Talent Pipeline Digest
description: Retrieves active job postings and applicant pipeline statistics from LinkedIn and posts a weekly talent report to the HR team in Microsoft Teams.
tags:
- hr
- recruiting
- linkedin
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: talent-reporting
port: 8080
tools:
- name: digest-talent-pipeline
description: Fetch active LinkedIn job postings and applicant counts for Goldman Sachs and post a weekly pipeline summary to the HR Teams channel.
inputParameters:
- name: organization_id
in: body
type: string
description: The LinkedIn organization URN for Goldman Sachs.
steps:
- name: get-postings
type: call
call: linkedin.list-job-postings
with:
organization_id: '{{organization_id}}'
- name: post-digest
type: call
call: msteams.post-talent-digest
with:
channel: hr-talent-acquisition
text: 'Weekly talent pipeline: {{get-postings.total}} active postings, {{get-postings.applicant_count}} total applicants.'
consumes:
- 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: list-job-postings
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/hr/channels/general/messages
operations:
- name: post-talent-digest
method: POST
Fetches pull request details from GitHub, runs static analysis via SonarQube, and posts compliance status to Confluence.
naftiko: '0.5'
info:
label: GitHub PR Review and Compliance Gate
description: Fetches pull request details from GitHub, runs static analysis via SonarQube, and posts compliance status to Confluence.
tags:
- cicd
- github
- sonarqube
- confluence
capability:
exposes:
- type: mcp
namespace: pr-compliance
port: 8080
tools:
- name: review-pr-compliance
description: Review a pull request for code quality and compliance.
inputParameters:
- name: repo
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-api.get-pull
with:
repo: '{{repo}}'
pr_number: '{{pr_number}}'
- name: run-analysis
type: call
call: sonarqube-api.get-analysis
with:
project: '{{repo}}'
- name: post-status
type: call
call: confluence-api.create-page
with:
space: ENGINEERING
title: 'PR #{{pr_number}} Compliance: {{repo}}'
body: 'Author: {{get-pr.author}}. Quality gate: {{run-analysis.quality_gate}}. Bugs: {{run-analysis.bugs}}.'
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pulls
path: /repos/goldman-sachs/{{repo}}/pulls/{{pr_number}}
inputParameters:
- name: repo
in: path
- name: pr_number
in: path
operations:
- name: get-pull
method: GET
- type: http
namespace: sonarqube-api
baseUri: https://sonarqube.goldmansachs.com/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: analyses
path: /qualitygates/project_status
operations:
- name: get-analysis
method: GET
- type: http
namespace: confluence-api
baseUri: https://goldmansachs.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Pulls candidate applications from LinkedIn, matches them in Workday, and creates interview scheduling tasks in Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Recruiting Pipeline Sync
description: Pulls candidate applications from LinkedIn, matches them in Workday, and creates interview scheduling tasks in Microsoft Teams.
tags:
- recruiting
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recruiting-sync
port: 8080
tools:
- name: sync-recruiting-pipeline
description: Sync LinkedIn candidates into Workday and schedule interviews.
inputParameters:
- name: job_id
in: body
type: string
description: LinkedIn job posting ID.
steps:
- name: get-applicants
type: call
call: linkedin-api.get-applications
with:
job_id: '{{job_id}}'
- name: create-candidates
type: call
call: workday-api.create-candidate
with:
name: '{{get-applicants.top_candidate.name}}'
email: '{{get-applicants.top_candidate.email}}'
- name: schedule-interview
type: call
call: msteams-api.post-message
with:
team_id: recruiting-team
channel_id: interviews
message: 'New candidate from LinkedIn: {{get-applicants.top_candidate.name}} for {{job_id}}. Workday ID: {{create-candidates.id}}.'
consumes:
- type: http
namespace: linkedin-api
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: applications
path: /jobApplications
operations:
- name: get-applications
method: GET
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: candidates
path: /goldman-sachs/recruiting/candidates
operations:
- name: create-candidate
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves the current status, priority, and assignment details of a ServiceNow incident for Goldman Sachs IT operations triage.
naftiko: '0.5'
info:
label: ServiceNow Incident Status Lookup
description: Retrieves the current status, priority, and assignment details of a ServiceNow incident for Goldman Sachs IT operations triage.
tags:
- itsm
- servicenow
- incident-management
- lookup
capability:
exposes:
- type: mcp
namespace: incident-lookup
port: 8080
tools:
- name: get-incident-status
description: Given a ServiceNow incident number, returns the current state, priority, and assigned group. Use for IT support inquiries.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
call: servicenow-incidents.get-incident
with:
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-incidents
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
Processes employee termination in Workday, revokes all Okta application access, and archives documents in Google Drive.
naftiko: '0.5'
info:
label: Workday Termination Offboarding Chain
description: Processes employee termination in Workday, revokes all Okta application access, and archives documents in Google Drive.
tags:
- hr
- workday
- okta
- google-drive
capability:
exposes:
- type: mcp
namespace: termination-offboarding
port: 8080
tools:
- name: process-termination
description: Orchestrate employee termination including access revocation and archival.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID.
- name: termination_date
in: body
type: string
description: Termination date YYYY-MM-DD.
steps:
- name: get-employee
type: call
call: workday-api.get-worker
with:
worker_id: '{{worker_id}}'
- name: revoke-access
type: call
call: okta-api.deactivate-user
with:
login: '{{get-employee.work_email}}'
- name: archive-docs
type: call
call: gdrive-api.move-file
with:
file_id: '{{get-employee.drive_folder_id}}'
destination: archived-employees/{{worker_id}}
consumes:
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /goldman-sachs/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-api
baseUri: https://goldmansachs.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: gdrive-api
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: move-file
method: PATCH
Pulls current headcount by division and compensation band from Workday for finance and HR planning.
naftiko: '0.5'
info:
label: Workday Headcount and Compensation Snapshot
description: Pulls current headcount by division and compensation band from Workday for finance and HR planning.
tags:
- hr
- finance
- workday
- reporting
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns active employees grouped by division and cost center with employment type and compensation band from Workday. Use for workforce planning.
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: $.displayName
- name: division
type: string
mapping: $.businessUnit
- name: cost_center
type: string
mapping: $.costCenter
- name: comp_band
type: string
mapping: $.compensationGrade
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: /goldman-sachs/workers
operations:
- name: headcount-export
method: GET
When an employee changes role in Workday, updates their Okta group memberships to reflect the new job function.
naftiko: '0.5'
info:
label: Workday Role Change and Okta Access Sync
description: When an employee changes role in Workday, updates their Okta group memberships to reflect the new job function.
tags:
- hr
- identity
- workday
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: hr-access
port: 8080
tools:
- name: sync-role-change
description: Given a Workday employee ID, new Okta group ID, and old group ID, reassign the employee's Okta group memberships to reflect their new role.
inputParameters:
- name: okta_user_id
in: body
type: string
description: The Okta user ID to reassign groups for.
- name: old_group_id
in: body
type: string
description: The Okta group ID to remove the user from.
- name: new_group_id
in: body
type: string
description: The Okta group ID to add the user to.
steps:
- name: remove-old-group
type: call
call: okta.remove-user-from-group
with:
user_id: '{{okta_user_id}}'
group_id: '{{old_group_id}}'
- name: add-new-group
type: call
call: okta-assign.add-user-to-group
with:
user_id: '{{okta_user_id}}'
group_id: '{{new_group_id}}'
consumes:
- type: http
namespace: okta
baseUri: https://goldmansachs.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/{{user_id}}
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: remove-user-from-group
method: DELETE
- type: http
namespace: okta-assign
baseUri: https://goldmansachs.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/{{user_id}}
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: add-user-to-group
method: PUT
Retrieves employee directory information from Workday by employee ID including department, manager, and contact details.
naftiko: '0.5'
info:
label: Workday Employee Directory Lookup
description: Retrieves employee directory information from Workday by employee ID including department, manager, and contact details.
tags:
- hr
- directory
- workday
capability:
exposes:
- type: mcp
namespace: employee-directory
port: 8080
tools:
- name: lookup-employee
description: Given a Workday employee ID, return their profile information. Use when HR or managers need to look up employee details.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
call: workday-api.get-worker
with:
employee_id: '{{employee_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.worker.full_name
- name: department
type: string
mapping: $.worker.department
- name: manager
type: string
mapping: $.worker.manager_name
- name: email
type: string
mapping: $.worker.work_email
consumes:
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /gs/workers/{{employee_id}}
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
Retrieves a contact record from HubSpot by email for marketing and relationship management activities.
naftiko: '0.5'
info:
label: HubSpot Contact Lookup
description: Retrieves a contact record from HubSpot by email for marketing and relationship management activities.
tags:
- marketing
- hubspot
capability:
exposes:
- type: mcp
namespace: hubspot
port: 8080
tools:
- name: get-contact-by-email
description: Look up a HubSpot contact by email address.
inputParameters:
- name: email
in: body
type: string
description: Contact email address.
call: hubspot-api.search-contacts
with:
email: '{{email}}'
consumes:
- type: http
namespace: hubspot-api
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /objects/contacts/search
operations:
- name: search-contacts
method: POST
Searches SharePoint Online document libraries for policy or compliance documents by keyword.
naftiko: '0.5'
info:
label: SharePoint Document Library Search
description: Searches SharePoint Online document libraries for policy or compliance documents by keyword.
tags:
- collaboration
- sharepoint
capability:
exposes:
- type: mcp
namespace: sharepoint
port: 8080
tools:
- name: search-documents
description: Search for documents in SharePoint by keyword.
inputParameters:
- name: query
in: body
type: string
description: Search keyword or phrase.
call: sharepoint-api.search
with:
query: '{{query}}'
consumes:
- type: http
namespace: sharepoint-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: search
path: /search/query
operations:
- name: search
method: POST
Provisions Azure resources via Terraform, configures monitoring in Datadog, and logs the deployment in ServiceNow as a change request.
naftiko: '0.5'
info:
label: Azure Infrastructure Provisioning Pipeline
description: Provisions Azure resources via Terraform, configures monitoring in Datadog, and logs the deployment in ServiceNow as a change request.
tags:
- infrastructure
- microsoft-azure
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: azure-provisioning
port: 8080
tools:
- name: provision-azure-infra
description: Provision cloud infrastructure with monitoring and change tracking.
inputParameters:
- name: environment
in: body
type: string
description: Target environment (dev/staging/prod).
- name: resource_type
in: body
type: string
description: Azure resource type to provision.
steps:
- name: apply-terraform
type: call
call: terraform-api.create-run
with:
workspace: gs-{{environment}}
message: Provision {{resource_type}} in {{environment}}
- name: setup-monitoring
type: call
call: datadog-api.create-monitor
with:
name: '{{resource_type}}-{{environment}}'
query: avg(last_5m):avg:azure.{{resource_type}}.health{env:{{environment}}} < 1
- name: log-change
type: call
call: servicenow-api.create-change
with:
short_description: 'Azure provisioning: {{resource_type}} in {{environment}}'
description: 'Terraform run: {{apply-terraform.id}}. Monitor: {{setup-monitoring.id}}.'
category: infrastructure
consumes:
- type: http
namespace: terraform-api
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /workspaces/{{workspace}}/runs
inputParameters:
- name: workspace
in: path
operations:
- name: create-run
method: POST
- type: http
namespace: datadog-api
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.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
Compiles a sprint planning digest from Jira for the platform engineering team and posts a prioritized summary to the engineering Teams channel.
naftiko: '0.5'
info:
label: Jira Engineering Sprint Digest
description: Compiles a sprint planning digest from Jira for the platform engineering team and posts a prioritized summary to the engineering Teams channel.
tags:
- devops
- jira
- microsoft-teams
- sprint-planning
- reporting
capability:
exposes:
- type: mcp
namespace: devops-reporting
port: 8080
tools:
- name: digest-sprint-backlog
description: Given a Jira project key and sprint name, retrieve all open sprint issues and post a digest to the engineering Teams channel.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key, e.g. PLAT.
- name: sprint_name
in: body
type: string
description: The sprint name to filter, e.g. Sprint 42.
steps:
- name: get-sprint-issues
type: call
call: jira.search-issues
with:
jql: project={{project_key}} AND sprint='{{sprint_name}}' AND status!=Done
- name: post-digest
type: call
call: msteams.post-sprint-digest
with:
channel: platform-engineering
text: 'Sprint digest {{sprint_name}} ({{project_key}}): {{get-sprint-issues.total}} open issues.'
consumes:
- type: http
namespace: jira
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /search
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/engineering/channels/general/messages
operations:
- name: post-sprint-digest
method: POST
Extracts portfolio analytics from Bloomberg, calculates risk metrics in Snowflake, and publishes results to Power BI.
naftiko: '0.5'
info:
label: Bloomberg Portfolio Analytics Pipeline
description: Extracts portfolio analytics from Bloomberg, calculates risk metrics in Snowflake, and publishes results to Power BI.
tags:
- portfolio-management
- bloomberg-enterprise-data
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: portfolio-analytics
port: 8080
tools:
- name: run-portfolio-analytics
description: Generate portfolio analytics with risk metrics and visualizations.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Bloomberg portfolio identifier.
- name: as_of_date
in: body
type: string
description: Valuation date YYYY-MM-DD.
steps:
- name: get-analytics
type: call
call: bloomberg-api.get-portfolio-analytics
with:
portfolio_id: '{{portfolio_id}}'
as_of_date: '{{as_of_date}}'
- name: calc-risk
type: call
call: snowflake-api.run-query
with:
query: CALL risk.calculate_var('{{portfolio_id}}', '{{as_of_date}}')
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: portfolio-analytics
consumes:
- type: http
namespace: bloomberg-api
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: portfolios
path: /portfolios/{{portfolio_id}}/analytics
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-portfolio-analytics
method: GET
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
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
Retrieves SLO compliance status from Datadog for all trading system services and posts a daily compliance digest to the technology operations team.
naftiko: '0.5'
info:
label: Datadog Trading Infrastructure SLO Monitor
description: Retrieves SLO compliance status from Datadog for all trading system services and posts a daily compliance digest to the technology operations team.
tags:
- observability
- datadog
- microsoft-teams
- slo
- trading-infrastructure
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: digest-trading-slo-compliance
description: Retrieve all SLO statuses for trading infrastructure services from Datadog and post a daily compliance report to the technology operations Teams channel.
inputParameters:
- name: timeframe
in: body
type: string
description: 'SLO evaluation window: 7d, 30d, or 90d.'
steps:
- name: get-slos
type: call
call: datadog.list-slos
with:
timeframe: '{{timeframe}}'
- name: post-report
type: call
call: msteams.post-slo-report
with:
channel: tech-ops-slo
text: 'Trading SLO Report ({{timeframe}}): {{get-slos.compliant}} compliant, {{get-slos.breached}} breached.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slos
path: /slo
operations:
- name: list-slos
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/tech-ops/channels/slo/messages
operations:
- name: post-slo-report
method: POST
Fetches metadata and download links for a document stored in Google Drive used for internal collaboration.
naftiko: '0.5'
info:
label: Google Drive Document Retrieval
description: Fetches metadata and download links for a document stored in Google Drive used for internal collaboration.
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: google-drive
port: 8080
tools:
- name: get-document
description: Retrieve metadata for a Google Drive file by its ID.
inputParameters:
- name: file_id
in: body
type: string
description: Google Drive file identifier.
call: gdrive-api.get-file
with:
file_id: '{{file_id}}'
consumes:
- type: http
namespace: gdrive-api
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
Assigns the appropriate Microsoft 365 license to a new hire via Microsoft Graph based on their job role and department.
naftiko: '0.5'
info:
label: Microsoft 365 License Provisioning for New Hires
description: Assigns the appropriate Microsoft 365 license to a new hire via Microsoft Graph based on their job role and department.
tags:
- hr
- identity
- microsoft-365
- onboarding
- license-management
capability:
exposes:
- type: mcp
namespace: m365-provisioning
port: 8080
tools:
- name: assign-m365-license
description: Given a new hire user principal name and job role, assign the appropriate Microsoft 365 license SKU via Microsoft Graph API.
inputParameters:
- name: user_upn
in: body
type: string
description: The new hire user principal name, e.g. john.doe@goldmansachs.com.
- name: license_sku_id
in: body
type: string
description: The Microsoft 365 license SKU ID to assign, e.g. E5 SKU GUID.
call: msgraph.assign-license
with:
user_upn: '{{user_upn}}'
license_sku_id: '{{license_sku_id}}'
outputParameters:
- name: user_id
type: string
mapping: $.id
- name: display_name
type: string
mapping: $.displayName
consumes:
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: user-licenses
path: /users/{{user_upn}}/assignLicense
inputParameters:
- name: user_upn
in: path
operations:
- name: assign-license
method: POST
Monitors ECS service metrics in CloudWatch, adjusts desired count, and logs the scaling event in ServiceNow.
naftiko: '0.5'
info:
label: Amazon ECS Service Scaling Pipeline
description: Monitors ECS service metrics in CloudWatch, adjusts desired count, and logs the scaling event in ServiceNow.
tags:
- infrastructure
- amazon-ecs
- cloudwatch
- servicenow
capability:
exposes:
- type: mcp
namespace: ecs-scaling
port: 8080
tools:
- name: scale-ecs-service
description: Auto-scale an ECS service based on metrics and log the event.
inputParameters:
- name: cluster
in: body
type: string
description: ECS cluster name.
- name: service
in: body
type: string
description: ECS service name.
- name: desired_count
in: body
type: string
description: Target task count.
steps:
- name: get-metrics
type: call
call: cloudwatch-api.get-metric-data
with:
metric: CPUUtilization
dimensions: ClusterName={{cluster}},ServiceName={{service}}
- name: scale-service
type: call
call: ecs-api.update-service
with:
cluster: '{{cluster}}'
service: '{{service}}'
desired_count: '{{desired_count}}'
- name: log-event
type: call
call: servicenow-api.create-change
with:
short_description: 'ECS scaling: {{service}} to {{desired_count}}'
description: 'Cluster: {{cluster}}. Current CPU: {{get-metrics.value}}%. New count: {{desired_count}}.'
category: auto_scaling
consumes:
- type: http
namespace: cloudwatch-api
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: metrics
path: /?Action=GetMetricData
operations:
- name: get-metric-data
method: POST
- type: http
namespace: ecs-api
baseUri: https://ecs.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: services
path: /?Action=UpdateService
operations:
- name: update-service
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.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
When a Salesforce opportunity moves to Closed-Won, creates a ServiceNow onboarding project task and notifies the relationship manager in Teams.
naftiko: '0.5'
info:
label: Salesforce Client Onboarding Workflow
description: When a Salesforce opportunity moves to Closed-Won, creates a ServiceNow onboarding project task and notifies the relationship manager in Teams.
tags:
- sales
- crm
- salesforce
- servicenow
- microsoft-teams
- client-onboarding
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: start-client-onboarding
description: Given a Salesforce opportunity ID at Closed-Won, retrieve the deal details, create a ServiceNow onboarding project, and notify the relationship manager in Teams.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce Opportunity record ID to onboard.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-onboarding-project
type: call
call: servicenow.create-project
with:
short_description: 'Client onboarding: {{get-opportunity.account_name}}'
category: client_onboarding
owner: '{{get-opportunity.owner_email}}'
- name: notify-rm
type: call
call: msteams.notify-rm
with:
recipient: '{{get-opportunity.owner_email}}'
text: 'Client onboarding started for {{get-opportunity.account_name}}. Project: {{create-onboarding-project.number}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://goldmansachs.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: projects
path: /table/pm_project
operations:
- name: create-project
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}}/sendMail
inputParameters:
- name: recipient
in: path
operations:
- name: notify-rm
method: POST
Triggers a GitHub Actions release workflow, monitors build status in Datadog, and publishes release notes to Confluence.
naftiko: '0.5'
info:
label: GitHub Actions Release Pipeline
description: Triggers a GitHub Actions release workflow, monitors build status in Datadog, and publishes release notes to Confluence.
tags:
- cicd
- github-actions
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: release-pipeline
port: 8080
tools:
- name: execute-release
description: Trigger, monitor, and document a software release.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository.
- name: version
in: body
type: string
description: Release version tag.
steps:
- name: trigger-release
type: call
call: github-api.dispatch-workflow
with:
repo: '{{repo}}'
workflow: release.yml
ref: v{{version}}
- name: monitor-build
type: call
call: datadog-api.query-metrics
with:
query: ci.pipeline.duration{repo:{{repo}},version:{{version}}}
- name: publish-notes
type: call
call: confluence-api.create-page
with:
space: RELEASES
title: Release {{repo}} v{{version}}
body: 'Version: {{version}}. Build time: {{monitor-build.avg}}ms. Status: complete.'
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /repos/goldman-sachs/{{repo}}/actions/workflows/{{workflow}}/dispatches
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: dispatch-workflow
method: POST
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: confluence-api
baseUri: https://goldmansachs.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Detects network anomalies from Cisco devices, creates a PagerDuty alert, and opens a ServiceNow change request for remediation.
naftiko: '0.5'
info:
label: Cisco Network Incident Response Chain
description: Detects network anomalies from Cisco devices, creates a PagerDuty alert, and opens a ServiceNow change request for remediation.
tags:
- networking
- cisco
- pagerduty
- servicenow
capability:
exposes:
- type: mcp
namespace: network-incident
port: 8080
tools:
- name: respond-to-network-incident
description: Detect and respond to Cisco network incidents.
inputParameters:
- name: device_id
in: body
type: string
description: Cisco device identifier.
steps:
- name: get-status
type: call
call: cisco-api.get-device-status
with:
device_id: '{{device_id}}'
- name: alert-noc
type: call
call: pagerduty-api.create-event
with:
routing_key: $secrets.pagerduty_routing_key
summary: 'Network incident: {{device_id}}. Status: {{get-status.health}}. Interface errors: {{get-status.error_count}}.'
- name: open-change
type: call
call: servicenow-api.create-change
with:
short_description: 'Network remediation: {{device_id}}'
description: 'Device: {{device_id}}. Health: {{get-status.health}}. PagerDuty: {{alert-noc.dedup_key}}.'
category: network
consumes:
- type: http
namespace: cisco-api
baseUri: https://sandboxdnac.cisco.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-status
method: GET
- type: http
namespace: pagerduty-api
baseUri: https://events.pagerduty.com/v2
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: events
path: /enqueue
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.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
Audits Goldman Sachs GitHub repositories for required security settings including branch protection and secret scanning, filing Jira compliance tasks for violations.
naftiko: '0.5'
info:
label: GitHub Repository Security Policy Audit
description: Audits Goldman Sachs GitHub repositories for required security settings including branch protection and secret scanning, filing Jira compliance tasks for violations.
tags:
- security
- devops
- github
- jira
- compliance
capability:
exposes:
- type: mcp
namespace: repo-governance
port: 8080
tools:
- name: enforce-repo-security-policy
description: Given a GitHub repository and default branch, check branch protection rules; if non-compliant, create a Jira task for the security team.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository full name, e.g. goldman-sachs/platform.
- name: default_branch
in: body
type: string
description: The default branch to check, e.g. main.
steps:
- name: check-protection
type: call
call: github.get-branch-protection
with:
repo: '{{repo}}'
branch: '{{default_branch}}'
- name: create-compliance-task
type: call
call: jira.create-security-task
with:
project_key: SEC
summary: 'Repo policy violation: {{repo}}'
description: Branch {{default_branch}} protection missing required checks.
consumes:
- type: http
namespace: github
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
- type: http
namespace: jira
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-security-task
method: POST
Deploys a Cloud Function on GCP, sets up monitoring in Datadog, and logs the deployment in ServiceNow.
naftiko: '0.5'
info:
label: Google Cloud Function Deployment Pipeline
description: Deploys a Cloud Function on GCP, sets up monitoring in Datadog, and logs the deployment in ServiceNow.
tags:
- serverless
- google-cloud-platform
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: gcf-deployment
port: 8080
tools:
- name: deploy-cloud-function
description: Deploy a Google Cloud Function with monitoring and change tracking.
inputParameters:
- name: function_name
in: body
type: string
description: Cloud Function name.
- name: region
in: body
type: string
description: GCP region.
steps:
- name: deploy-function
type: call
call: gcp-api.create-function
with:
name: '{{function_name}}'
region: '{{region}}'
- name: setup-monitor
type: call
call: datadog-api.create-monitor
with:
name: GCF-{{function_name}}
query: avg(last_5m):avg:gcp.cloudfunctions.function.execution_count{function_name:{{function_name}}} < 1
- name: log-deployment
type: call
call: servicenow-api.create-change
with:
short_description: 'GCF deployment: {{function_name}}'
description: 'Region: {{region}}. Monitor: {{setup-monitor.id}}.'
category: serverless
consumes:
- type: http
namespace: gcp-api
baseUri: https://cloudfunctions.googleapis.com/v2
authentication:
type: bearer
token: $secrets.gcp_token
resources:
- name: functions
path: /projects/goldman-sachs/locations/{{region}}/functions
inputParameters:
- name: region
in: path
operations:
- name: create-function
method: POST
- type: http
namespace: datadog-api
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.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
Retrieves the Azure AD group memberships for a specified user principal name.
naftiko: '0.5'
info:
label: Azure AD User Group Membership Lookup
description: Retrieves the Azure AD group memberships for a specified user principal name.
tags:
- security
- identity
- azure-ad
capability:
exposes:
- type: mcp
namespace: group-membership
port: 8080
tools:
- name: get-memberships
description: Given a user principal name, return their Azure AD group memberships. Use when security teams need to audit user access.
inputParameters:
- name: user_upn
in: body
type: string
description: The user principal name (email).
call: azure-ad.get-user-groups
with:
user_upn: '{{user_upn}}'
outputParameters:
- name: group_count
type: integer
mapping: $.value.length
- name: groups
type: string
mapping: $.value[*].displayName
consumes:
- type: http
namespace: azure-ad
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.azure_ad_token
resources:
- name: user-groups
path: /users/{{user_upn}}/memberOf
inputParameters:
- name: user_upn
in: path
operations:
- name: get-user-groups
method: GET
Validates a proposed trade against compliance rules in Snowflake, checks market conditions via Bloomberg, and logs the decision in Jira.
naftiko: '0.5'
info:
label: Trade Execution Compliance Check
description: Validates a proposed trade against compliance rules in Snowflake, checks market conditions via Bloomberg, and logs the decision in Jira.
tags:
- compliance
- trading
- snowflake
- bloomberg-enterprise-data
- jira
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: check-trade-compliance
description: Validate trade compliance and log the outcome.
inputParameters:
- name: trade_id
in: body
type: string
description: Internal trade identifier.
- name: instrument
in: body
type: string
description: Instrument ticker.
steps:
- name: compliance-rules
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM compliance.rules WHERE instrument = '{{instrument}}'
- name: market-check
type: call
call: bloomberg-api.get-quote
with:
ticker: '{{instrument}}'
- name: log-decision
type: call
call: jira-api.create-issue
with:
project: COMPLIANCE
summary: Trade {{trade_id}} compliance review
description: 'Instrument: {{instrument}}. Price: {{market-check.last_price}}. Rules matched: {{compliance-rules.count}}.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: bloomberg-api
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: quotes
path: /quotes/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Scans expense reports from SAP Concur for anomalies, flags suspicious entries in Snowflake, and escalates to compliance via ServiceNow.
naftiko: '0.5'
info:
label: SAP Concur Expense Fraud Detection
description: Scans expense reports from SAP Concur for anomalies, flags suspicious entries in Snowflake, and escalates to compliance via ServiceNow.
tags:
- finance
- sap-concur
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: expense-fraud
port: 8080
tools:
- name: detect-expense-fraud
description: Scan expense reports for fraudulent or suspicious patterns.
inputParameters:
- name: report_id
in: body
type: string
description: SAP Concur expense report ID.
steps:
- name: get-expenses
type: call
call: concur-api.get-report
with:
report_id: '{{report_id}}'
- name: check-anomalies
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM finance.expense_anomaly_model WHERE report_id = '{{report_id}}'
- name: escalate
type: call
call: servicenow-api.create-incident
with:
short_description: 'Expense anomaly: report {{report_id}}'
description: 'Total: {{get-expenses.total}}. Anomalies: {{check-anomalies.count}}. Risk score: {{check-anomalies.risk_score}}.'
category: expense_compliance
consumes:
- type: http
namespace: concur-api
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-report
method: GET
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Fetches current open alert violations from New Relic for a specified policy to surface active infrastructure issues.
naftiko: '0.5'
info:
label: New Relic Alert Status Lookup
description: Fetches current open alert violations from New Relic for a specified policy to surface active infrastructure issues.
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: new-relic
port: 8080
tools:
- name: get-open-violations
description: List currently open alert violations for a given policy ID.
inputParameters:
- name: policy_id
in: body
type: string
description: New Relic alert policy ID.
call: newrelic-api.list-violations
with:
policy_id: '{{policy_id}}'
consumes:
- type: http
namespace: newrelic-api
baseUri: https://api.newrelic.com/v2
authentication:
type: apikey
key: Api-Key
value: $secrets.newrelic_api_key
placement: header
resources:
- name: violations
path: /alerts_violations.json
operations:
- name: list-violations
method: GET
Monitors Power Automate flow runs for failures, creates incidents in ServiceNow, and notifies flow owners via Microsoft Teams.
naftiko: '0.5'
info:
label: Power Automate Workflow Failure Handler
description: Monitors Power Automate flow runs for failures, creates incidents in ServiceNow, and notifies flow owners via Microsoft Teams.
tags:
- automation
- microsoft-power-automate
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: flow-failure
port: 8080
tools:
- name: handle-flow-failure
description: Detect Power Automate failures and create incident notifications.
inputParameters:
- name: flow_id
in: body
type: string
description: Power Automate flow identifier.
steps:
- name: get-runs
type: call
call: powerautomate-api.get-flow-runs
with:
flow_id: '{{flow_id}}'
- name: create-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'Power Automate failure: {{flow_id}}'
description: 'Last run: {{get-runs.last_run.status}}. Error: {{get-runs.last_run.error}}.'
category: automation
- name: notify-owner
type: call
call: msteams-api.post-message
with:
team_id: automation-team
channel_id: alerts
message: 'Flow {{flow_id}} failed. Incident: {{create-incident.number}}.'
consumes:
- type: http
namespace: powerautomate-api
baseUri: https://management.azure.com/providers/Microsoft.ProcessSimple
authentication:
type: bearer
token: $secrets.azure_management_token
resources:
- name: flows
path: /environments/Default/flows/{{flow_id}}/runs
inputParameters:
- name: flow_id
in: path
operations:
- name: get-flow-runs
method: GET
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves vendor details from SAP Ariba, runs a security scan via Palo Alto Networks, and tracks findings in ServiceNow.
naftiko: '0.5'
info:
label: Vendor Security Assessment Workflow
description: Retrieves vendor details from SAP Ariba, runs a security scan via Palo Alto Networks, and tracks findings in ServiceNow.
tags:
- security
- sap-ariba
- palo-alto-networks
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-security
port: 8080
tools:
- name: assess-vendor-security
description: Orchestrate vendor security due diligence.
inputParameters:
- name: vendor_id
in: body
type: string
description: SAP Ariba vendor ID.
steps:
- name: get-vendor
type: call
call: ariba-api.get-vendor
with:
vendor_id: '{{vendor_id}}'
- name: scan-domain
type: call
call: paloalto-api.url-lookup
with:
url: '{{get-vendor.website}}'
- name: create-finding
type: call
call: servicenow-api.create-incident
with:
short_description: 'Security assessment: {{get-vendor.name}}'
description: 'Domain risk: {{scan-domain.risk_score}}. Category: {{scan-domain.category}}.'
category: vendor_security
consumes:
- type: http
namespace: ariba-api
baseUri: https://openapi.ariba.com/api/sourcing-projects/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: vendors
path: /vendors/{{vendor_id}}
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: paloalto-api
baseUri: https://urlfiltering.paloaltonetworks.com/v1
authentication:
type: apikey
key: Authorization
value: $secrets.paloalto_api_key
placement: header
resources:
- name: urls
path: /url-info
operations:
- name: url-lookup
method: POST
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog event marker, and notifies the platform engineering team in 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 event marker, and notifies the platform engineering team in Teams.
tags:
- devops
- cicd
- github
- jira
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions run ID, repo, and branch, open a Jira bug, create a Datadog event, and post the failure summary to the engineering Teams channel.
inputParameters:
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID that failed.
- name: repo
in: body
type: string
description: The GitHub repository full name, e.g. goldman-sachs/platform.
- name: branch
in: body
type: string
description: The branch on which the failure occurred.
- name: workflow_name
in: body
type: string
description: The name of the failed GitHub Actions workflow.
steps:
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}'
description: 'Run ID: {{run_id}}'
- name: create-dd-event
type: call
call: datadog.create-event
with:
title: 'CI Failure: {{workflow_name}} on {{branch}}'
text: 'Run {{run_id}} failed. Jira: {{create-bug.key}}'
alert_type: error
- name: notify-engineering
type: call
call: msteams.post-failure
with:
channel: platform-engineering
text: 'Pipeline failure: {{repo}} | Branch: {{branch}} | Jira: {{create-bug.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://goldmansachs.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: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/engineering/channels/general/messages
operations:
- name: post-failure
method: POST
Pulls client data from Salesforce, runs credit checks via Bloomberg, and creates a risk assessment ticket in ServiceNow.
naftiko: '0.5'
info:
label: Client Risk Assessment Orchestrator
description: Pulls client data from Salesforce, runs credit checks via Bloomberg, and creates a risk assessment ticket in ServiceNow.
tags:
- risk
- salesforce
- bloomberg-enterprise-data
- servicenow
capability:
exposes:
- type: mcp
namespace: client-risk
port: 8080
tools:
- name: assess-client-risk
description: Orchestrate a full client risk assessment across CRM, market data, and ticketing.
inputParameters:
- name: client_id
in: body
type: string
description: Salesforce client account ID.
steps:
- name: get-client
type: call
call: salesforce-api.get-account
with:
account_id: '{{client_id}}'
- name: credit-check
type: call
call: bloomberg-api.get-credit-data
with:
entity: '{{get-client.name}}'
- name: create-assessment
type: call
call: servicenow-api.create-incident
with:
short_description: 'Risk assessment: {{get-client.name}}'
description: 'Credit rating: {{credit-check.rating}}. Exposure: {{credit-check.exposure}}.'
category: risk_management
consumes:
- type: http
namespace: salesforce-api
baseUri: https://goldmansachs.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: bloomberg-api
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: credit
path: /credit/{{entity}}
inputParameters:
- name: entity
in: path
operations:
- name: get-credit-data
method: GET
- type: http
namespace: servicenow-api
baseUri: https://goldmansachs.service-now.com/api/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 Snowflake pipeline task execution for risk data feeds, raises Datadog alerts on failures, and creates Jira incidents for the data engineering team.
naftiko: '0.5'
info:
label: Snowflake Risk Data Pipeline Health Check
description: Monitors Snowflake pipeline task execution for risk data feeds, raises Datadog alerts on failures, and creates Jira incidents for the data engineering team.
tags:
- data-analytics
- snowflake
- datadog
- jira
- risk-management
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: monitor-risk-pipeline
description: Given a Snowflake task name for a risk data pipeline, check execution history, raise a Datadog alert on failure, and create a Jira incident for remediation.
inputParameters:
- name: task_name
in: body
type: string
description: The Snowflake task name to check, e.g. RISK_VAR_DAILY.
- name: database
in: body
type: string
description: The Snowflake database containing the pipeline task.
steps:
- name: get-task-history
type: call
call: snowflake.get-task-history
with:
task_name: '{{task_name}}'
database: '{{database}}'
- name: raise-dd-alert
type: call
call: datadog.create-event
with:
title: 'Risk pipeline failure: {{task_name}}'
text: 'Task {{task_name}} state: {{get-task-history.last_run_state}}'
alert_type: error
- name: open-jira-incident
type: call
call: jira.create-data-incident
with:
project_key: DATA
summary: 'Risk pipeline failure: {{task_name}}'
description: 'Database: {{database}}
State: {{get-task-history.last_run_state}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: task-history
path: /databases/{{database}}/schemas/RISK/tasks/{{task_name}}/executeHistory
inputParameters:
- name: database
in: path
- name: task_name
in: path
operations:
- name: get-task-history
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-data-incident
method: POST
Initiates the annual performance review cycle in Workday and sends manager notifications via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Launcher
description: Initiates the annual performance review cycle in Workday and sends manager notifications via Microsoft Teams.
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-review-cycle
description: Given a review cycle name and due date, create performance review tasks in Workday and broadcast a manager notification to the people managers Teams channel.
inputParameters:
- name: cycle_name
in: body
type: string
description: The performance review cycle name, e.g. 2026 Annual Review.
- name: due_date
in: body
type: string
description: Completion due date in YYYY-MM-DD format.
steps:
- name: create-review-cycle
type: call
call: workday.create-review-event
with:
cycle_name: '{{cycle_name}}'
due_date: '{{due_date}}'
- name: notify-managers
type: call
call: msteams.broadcast-review
with:
channel: people-managers
text: 'Performance review cycle ''{{cycle_name}}'' is now open. Due: {{due_date}}.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: review-events
path: /goldman-sachs/performanceReviews
operations:
- name: create-review-event
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/hr/channels/managers/messages
operations:
- name: broadcast-review
method: POST
Detects suspicious sign-ins from Azure AD, creates an incident in PagerDuty, and disables the compromised account in Okta.
naftiko: '0.5'
info:
label: Microsoft 365 Security Incident Response
description: Detects suspicious sign-ins from Azure AD, creates an incident in PagerDuty, and disables the compromised account in Okta.
tags:
- security
- microsoft-azure
- pagerduty
- okta
capability:
exposes:
- type: mcp
namespace: m365-security
port: 8080
tools:
- name: respond-to-security-incident
description: Detect, alert, and contain a Microsoft 365 security incident.
inputParameters:
- name: user_principal
in: body
type: string
description: Azure AD user principal name.
steps:
- name: get-sign-ins
type: call
call: azuread-api.get-sign-ins
with:
user_principal: '{{user_principal}}'
- name: alert-security
type: call
call: pagerduty-api.create-event
with:
routing_key: $secrets.pagerduty_routing_key
summary: 'Suspicious sign-in: {{user_principal}}. Risk: {{get-sign-ins.risk_level}}. Location: {{get-sign-ins.location}}.'
- name: disable-account
type: call
call: okta-api.suspend-user
with:
login: '{{user_principal}}'
consumes:
- type: http
namespace: azuread-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: sign-ins
path: /auditLogs/signIns
operations:
- name: get-sign-ins
method: GET
- type: http
namespace: pagerduty-api
baseUri: https://events.pagerduty.com/v2
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: events
path: /enqueue
operations:
- name: create-event
method: POST
- type: http
namespace: okta-api
baseUri: https://goldmansachs.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{login}}/lifecycle/suspend
inputParameters:
- name: login
in: path
operations:
- name: suspend-user
method: POST
Extracts financial data from Snowflake, generates a formatted report via Power BI, and files it in SharePoint for regulatory submission.
naftiko: '0.5'
info:
label: Quarterly Regulatory Report Pipeline
description: Extracts financial data from Snowflake, generates a formatted report via Power BI, and files it in SharePoint for regulatory submission.
tags:
- compliance
- snowflake
- power-bi
- sharepoint
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-regulatory-report
description: Extract, format, and file a quarterly regulatory report.
inputParameters:
- name: quarter
in: body
type: string
description: Quarter identifier e.g. Q1-2026.
- name: report_type
in: body
type: string
description: Report type code.
steps:
- name: extract-data
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM regulatory.{{report_type}} WHERE quarter = '{{quarter}}'
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: reg-{{report_type}}
- name: store-report
type: call
call: sharepoint-api.create-file
with:
site_id: compliance
path: Regulatory/{{quarter}}/{{report_type}}.pdf
consumes:
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
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-api
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{path}}:/content
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: create-file
method: PUT
Retrieves the latest GitHub Actions workflow run status for a specified repository and workflow.
naftiko: '0.5'
info:
label: GitHub Actions Workflow Status Check
description: Retrieves the latest GitHub Actions workflow run status for a specified repository and workflow.
tags:
- ci-cd
- devops
- github-actions
capability:
exposes:
- type: mcp
namespace: workflow-status
port: 8080
tools:
- name: check-workflow
description: Given a repository and workflow ID, return the latest run status and conclusion. Use when engineers need to verify CI/CD pipeline health.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: workflow_id
in: body
type: string
description: The workflow file name or ID.
call: github-api.get-workflow-runs
with:
repo: '{{repo}}'
workflow_id: '{{workflow_id}}'
outputParameters:
- name: status
type: string
mapping: $.workflow_runs[0].status
- name: conclusion
type: string
mapping: $.workflow_runs[0].conclusion
- name: run_number
type: integer
mapping: $.workflow_runs[0].run_number
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-runs
path: /repos/{{repo}}/actions/workflows/{{workflow_id}}/runs
inputParameters:
- name: repo
in: path
- name: workflow_id
in: path
operations:
- name: get-workflow-runs
method: GET
Triggers open enrollment in Workday, sends notifications via Microsoft Teams, and tracks completion in Jira.
naftiko: '0.5'
info:
label: Workday Benefits Enrollment Orchestrator
description: Triggers open enrollment in Workday, sends notifications via Microsoft Teams, and tracks completion in Jira.
tags:
- hr
- workday
- microsoft-teams
- jira
capability:
exposes:
- type: mcp
namespace: benefits-enrollment
port: 8080
tools:
- name: run-benefits-enrollment
description: Orchestrate the annual benefits enrollment process.
inputParameters:
- name: enrollment_period
in: body
type: string
description: Enrollment period ID.
- name: department
in: body
type: string
description: Target department code.
steps:
- name: open-enrollment
type: call
call: workday-api.trigger-enrollment
with:
period: '{{enrollment_period}}'
department: '{{department}}'
- name: notify-employees
type: call
call: msteams-api.post-message
with:
team_id: hr-team
channel_id: benefits
message: 'Open enrollment has begun for {{department}}. Period: {{enrollment_period}}. Eligible: {{open-enrollment.eligible_count}} employees.'
- name: track-progress
type: call
call: jira-api.create-issue
with:
project: HR
summary: 'Benefits enrollment: {{department}} - {{enrollment_period}}'
description: 'Eligible: {{open-enrollment.eligible_count}}. Deadline: {{open-enrollment.deadline}}.'
consumes:
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: enrollment
path: /goldman-sachs/benefits/enrollment
operations:
- name: trigger-enrollment
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
- type: http
namespace: jira-api
baseUri: https://goldmansachs.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Compiles a weekly Salesforce opportunity pipeline report by division and posts it to the investment banking Teams channel.
naftiko: '0.5'
info:
label: Salesforce Client Opportunity Pipeline Report
description: Compiles a weekly Salesforce opportunity pipeline report by division and posts it to the investment banking Teams channel.
tags:
- sales
- crm
- salesforce
- microsoft-teams
- reporting
- investment-banking
capability:
exposes:
- type: mcp
namespace: ib-reporting
port: 8080
tools:
- name: digest-opportunity-pipeline
description: Retrieve open Salesforce opportunities by division, compute pipeline values, and post a weekly digest to the investment banking Teams channel.
inputParameters:
- name: division
in: body
type: string
description: The Goldman Sachs division to report on, e.g. Investment Banking, Global Markets.
- name: fiscal_quarter
in: body
type: string
description: The fiscal quarter to scope the report, e.g. Q1-2026.
steps:
- name: query-opps
type: call
call: salesforce.query-opportunities
with:
division: '{{division}}'
fiscal_quarter: '{{fiscal_quarter}}'
- name: post-digest
type: call
call: msteams.post-pipeline-digest
with:
channel: ib-pipeline
text: 'Pipeline digest {{fiscal_quarter}} — {{division}}: {{query-opps.total}} open deals, ${{query-opps.pipeline_value}} total value.'
consumes:
- type: http
namespace: salesforce
baseUri: https://goldmansachs.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/ib/channels/pipeline/messages
operations:
- name: post-pipeline-digest
method: POST
Uses Anthropic to summarize compliance and regulatory documents stored in Microsoft SharePoint and distributes the summary to the compliance team in Teams.
naftiko: '0.5'
info:
label: AI-Assisted Regulatory Document Summary
description: Uses Anthropic to summarize compliance and regulatory documents stored in Microsoft SharePoint and distributes the summary to the compliance team in Teams.
tags:
- regulatory
- compliance
- anthropic
- microsoft-teams
- ai
- document-management
capability:
exposes:
- type: mcp
namespace: compliance-ai
port: 8080
tools:
- name: summarize-regulatory-document
description: Given a SharePoint document URL, retrieve the document content, generate a structured executive summary using Anthropic, and post it to the compliance Teams channel.
inputParameters:
- name: document_url
in: body
type: string
description: The SharePoint document URL to retrieve and summarize.
- name: document_type
in: body
type: string
description: The regulatory document type, e.g. SEC Filing, Compliance Policy, Risk Report.
steps:
- name: get-document
type: call
call: sharepoint.get-document-content
with:
document_url: '{{document_url}}'
- name: generate-summary
type: call
call: anthropic.summarize-document
with:
model: claude-opus-4-5
prompt: 'Summarize this {{document_type}} for the Goldman Sachs compliance team, highlighting key obligations and action items: {{get-document.content}}'
- name: post-summary
type: call
call: msteams.post-compliance-summary
with:
channel: compliance-regulatory
text: 'Regulatory document summary ({{document_type}}): {{generate-summary.summary}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /sites/root/drive/root:{{document_url}}:/content
inputParameters:
- name: document_url
in: path
operations:
- name: get-document-content
method: GET
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: summarize-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/compliance/channels/regulatory/messages
operations:
- name: post-compliance-summary
method: POST
Checks employee training completion in Pluralsight, identifies overdue staff via Workday, and sends reminders through Microsoft Teams.
naftiko: '0.5'
info:
label: Compliance Training Enforcement Workflow
description: Checks employee training completion in Pluralsight, identifies overdue staff via Workday, and sends reminders through Microsoft Teams.
tags:
- compliance
- pluralsight
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-training
port: 8080
tools:
- name: enforce-training-compliance
description: Check training completion and notify overdue employees.
inputParameters:
- name: course_id
in: body
type: string
description: Pluralsight course identifier.
- name: department
in: body
type: string
description: Workday department code.
steps:
- name: check-completions
type: call
call: pluralsight-api.get-completions
with:
course_id: '{{course_id}}'
- name: get-staff
type: call
call: workday-api.list-workers
with:
department: '{{department}}'
- name: send-reminders
type: call
call: msteams-api.post-message
with:
team_id: compliance-team
channel_id: training-reminders
message: 'Training reminder: {{check-completions.overdue_count}} employees in {{department}} have not completed {{course_id}}.'
consumes:
- type: http
namespace: pluralsight-api
baseUri: https://api.pluralsight.com/api/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: completions
path: /courses/{{course_id}}/completions
inputParameters:
- name: course_id
in: path
operations:
- name: get-completions
method: GET
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /goldman-sachs/workers
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves a SAP Concur travel request, validates it against Goldman Sachs travel policy using Anthropic, and routes it for approval in ServiceNow.
naftiko: '0.5'
info:
label: SAP Concur Travel Request Processing
description: Retrieves a SAP Concur travel request, validates it against Goldman Sachs travel policy using Anthropic, and routes it for approval in ServiceNow.
tags:
- finance
- travel
- sap-concur
- anthropic
- servicenow
- approval
capability:
exposes:
- type: mcp
namespace: travel-ops
port: 8080
tools:
- name: process-travel-request
description: Given a SAP Concur request ID, fetch details, analyze against travel policy with Anthropic, and create a ServiceNow approval task with compliance notes.
inputParameters:
- name: request_id
in: body
type: string
description: The SAP Concur travel request ID to process.
steps:
- name: get-request
type: call
call: concur.get-travel-request
with:
request_id: '{{request_id}}'
- name: validate-policy
type: call
call: anthropic.validate-travel-policy
with:
model: claude-opus-4-5
prompt: 'Review this Goldman Sachs travel request against company policy: {{get-request.details}}'
- name: create-approval
type: call
call: servicenow.create-approval
with:
short_description: 'Travel approval: {{get-request.traveler_name}} to {{get-request.destination}}'
policy_notes: '{{validate-policy.compliance_notes}}'
consumes:
- type: http
namespace: concur
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: travel-requests
path: /travelrequest/requests/{{request_id}}
inputParameters:
- name: request_id
in: path
operations:
- name: get-travel-request
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: validate-travel-policy
method: POST
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-approval
method: POST
Retrieves the delivery status and open rates for a Mailchimp email campaign used for investor communications.
naftiko: '0.5'
info:
label: Mailchimp Campaign Status Check
description: Retrieves the delivery status and open rates for a Mailchimp email campaign used for investor communications.
tags:
- marketing
- mailchimp
capability:
exposes:
- type: mcp
namespace: mailchimp
port: 8080
tools:
- name: get-campaign-status
description: Fetch status and performance metrics for a Mailchimp campaign.
inputParameters:
- name: campaign_id
in: body
type: string
description: Mailchimp campaign ID.
call: mailchimp-api.get-campaign
with:
campaign_id: '{{campaign_id}}'
consumes:
- type: http
namespace: mailchimp-api
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: bearer
token: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
method: GET
Retrieves submitted SAP Concur expense reports, uses Anthropic to flag policy violations, and creates ServiceNow audit tasks for out-of-policy items.
naftiko: '0.5'
info:
label: SAP Concur Expense Policy Audit
description: Retrieves submitted SAP Concur expense reports, uses Anthropic to flag policy violations, and creates ServiceNow audit tasks for out-of-policy items.
tags:
- finance
- expense-management
- sap-concur
- anthropic
- servicenow
- audit
capability:
exposes:
- type: mcp
namespace: expense-audit
port: 8080
tools:
- name: audit-expense-reports
description: Given a date range, retrieve SAP Concur expense reports, analyze them with Anthropic for policy violations, and open ServiceNow audit tasks for non-compliant items.
inputParameters:
- name: start_date
in: body
type: string
description: Start date for expense report query in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date for expense report query in YYYY-MM-DD format.
steps:
- name: get-reports
type: call
call: concur.list-expense-reports
with:
startDate: '{{start_date}}'
endDate: '{{end_date}}'
- name: flag-violations
type: call
call: anthropic.analyze-expenses
with:
model: claude-opus-4-5
prompt: 'Review these expense reports for Goldman Sachs policy violations: {{get-reports.reports}}'
- name: create-audit-task
type: call
call: servicenow.create-audit-task
with:
short_description: Expense audit {{start_date}} to {{end_date}}
description: '{{flag-violations.violations_summary}}'
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/reportdigests
operations:
- name: list-expense-reports
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: analyze-expenses
method: POST
- type: http
namespace: servicenow
baseUri: https://goldmansachs.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/u_audit_task
operations:
- name: create-audit-task
method: POST
Retrieves the current status and details of a trade order from Salesforce by order ID for Goldman Sachs front-office operations review.
naftiko: '0.5'
info:
label: Salesforce Trade Order Status Lookup
description: Retrieves the current status and details of a trade order from Salesforce by order ID for Goldman Sachs front-office operations review.
tags:
- trading
- salesforce
- order-management
- lookup
capability:
exposes:
- type: mcp
namespace: trade-orders
port: 8080
tools:
- name: get-trade-order-status
description: Given a Salesforce trade order ID, returns the order status, asset class, notional amount, and counterparty. Use for trade desk inquiries.
inputParameters:
- name: order_id
in: body
type: string
description: The Salesforce trade order record ID.
call: salesforce-trading.get-order
with:
orderId: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.Status__c
- name: notional_amount
type: number
mapping: $.Notional_Amount__c
consumes:
- type: http
namespace: salesforce-trading
baseUri: https://goldmansachs.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: trade-orders
path: /sobjects/Trade_Order__c/{{orderId}}
inputParameters:
- name: orderId
in: path
operations:
- name: get-order
method: GET
Pulls client account details from Salesforce, retrieves recent market data from Bloomberg, and prepares a briefing note in Confluence.
naftiko: '0.5'
info:
label: Client Meeting Preparation Workflow
description: Pulls client account details from Salesforce, retrieves recent market data from Bloomberg, and prepares a briefing note in Confluence.
tags:
- relationship-management
- salesforce
- bloomberg-enterprise-data
- confluence
capability:
exposes:
- type: mcp
namespace: meeting-prep
port: 8080
tools:
- name: prepare-client-briefing
description: Generate a client briefing note for an upcoming meeting.
inputParameters:
- name: client_id
in: body
type: string
description: Salesforce account ID.
- name: meeting_date
in: body
type: string
description: Meeting date YYYY-MM-DD.
steps:
- name: get-client
type: call
call: salesforce-api.get-account
with:
account_id: '{{client_id}}'
- name: market-data
type: call
call: bloomberg-api.get-quote
with:
ticker: '{{get-client.primary_ticker}}'
- name: create-note
type: call
call: confluence-api.create-page
with:
space: CLIENT
title: 'Briefing: {{get-client.name}} - {{meeting_date}}'
body: 'Client: {{get-client.name}}. AUM: {{get-client.aum}}. Market: {{market-data.last_price}} ({{market-data.change_pct}}%).'
consumes:
- type: http
namespace: salesforce-api
baseUri: https://goldmansachs.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: bloomberg-api
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: quotes
path: /quotes/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: confluence-api
baseUri: https://goldmansachs.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Converts a won Salesforce opportunity into a trade order, validates pricing via Bloomberg, and logs the trade in Snowflake.
naftiko: '0.5'
info:
label: Salesforce Opportunity to Trade Pipeline
description: Converts a won Salesforce opportunity into a trade order, validates pricing via Bloomberg, and logs the trade in Snowflake.
tags:
- trading
- salesforce
- bloomberg-enterprise-data
- snowflake
capability:
exposes:
- type: mcp
namespace: opp-to-trade
port: 8080
tools:
- name: convert-opportunity-to-trade
description: Convert a CRM opportunity into a validated trade order.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID.
steps:
- name: get-opp
type: call
call: salesforce-api.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: validate-price
type: call
call: bloomberg-api.get-quote
with:
ticker: '{{get-opp.instrument_ticker}}'
- name: log-trade
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO trades.orders (opp_id, instrument, price, quantity) VALUES ('{{opportunity_id}}', '{{get-opp.instrument_ticker}}', {{validate-price.last_price}}, {{get-opp.quantity}})
consumes:
- type: http
namespace: salesforce-api
baseUri: https://goldmansachs.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: bloomberg-api
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: quotes
path: /quotes/{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
Extracts quarterly pipeline data from Salesforce, analyzes trends in Snowflake, and generates executive dashboards in Power BI.
naftiko: '0.5'
info:
label: Salesforce Quarterly Review Automation
description: Extracts quarterly pipeline data from Salesforce, analyzes trends in Snowflake, and generates executive dashboards in Power BI.
tags:
- sales
- salesforce
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: quarterly-review
port: 8080
tools:
- name: generate-quarterly-review
description: Generate a quarterly sales review from CRM data.
inputParameters:
- name: quarter
in: body
type: string
description: Quarter identifier e.g. Q1-2026.
- name: region
in: body
type: string
description: Sales region.
steps:
- name: get-pipeline
type: call
call: salesforce-api.get-opportunities
with:
quarter: '{{quarter}}'
region: '{{region}}'
- name: analyze-trends
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM sales.quarterly_trends WHERE quarter = '{{quarter}}' AND region = '{{region}}'
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: quarterly-review-{{region}}
consumes:
- type: http
namespace: salesforce-api
baseUri: https://goldmansachs.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: get-opportunities
method: GET
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
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
Fetches portfolio positions from FactSet, compares against target allocation in Snowflake, and creates rebalance orders via Salesforce.
naftiko: '0.5'
info:
label: Client Portfolio Rebalancing Workflow
description: Fetches portfolio positions from FactSet, compares against target allocation in Snowflake, and creates rebalance orders via Salesforce.
tags:
- portfolio-management
- factset
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: portfolio-rebalance
port: 8080
tools:
- name: rebalance-portfolio
description: Orchestrate portfolio rebalancing from analysis to order creation.
inputParameters:
- name: portfolio_id
in: body
type: string
description: FactSet portfolio identifier.
- name: client_id
in: body
type: string
description: Salesforce client ID.
steps:
- name: get-positions
type: call
call: factset-api.get-holdings
with:
portfolio_id: '{{portfolio_id}}'
- name: get-targets
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM wealth.target_allocations WHERE portfolio_id = '{{portfolio_id}}'
- name: create-orders
type: call
call: salesforce-api.create-record
with:
object: Trade_Order__c
data: 'portfolio: {{portfolio_id}}, client: {{client_id}}, positions: {{get-positions.count}}, drift: {{get-targets.max_drift}}'
consumes:
- type: http
namespace: factset-api
baseUri: https://api.factset.com/content/factset-portfolio/v1
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: holdings
path: /portfolios/{{portfolio_id}}/holdings
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-holdings
method: GET
- type: http
namespace: snowflake-api
baseUri: https://goldmansachs.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce-api
baseUri: https://goldmansachs.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
Checks the refresh status of a Tableau workbook to confirm that the latest financial data is available for analysts.
naftiko: '0.5'
info:
label: Tableau Report Status Check
description: Checks the refresh status of a Tableau workbook to confirm that the latest financial data is available for analysts.
tags:
- reporting
- tableau
capability:
exposes:
- type: mcp
namespace: tableau
port: 8080
tools:
- name: get-workbook-status
description: Return the last refresh time and status for a given Tableau workbook.
inputParameters:
- name: workbook_id
in: body
type: string
description: Tableau workbook identifier.
call: tableau-api.get-workbook
with:
workbook_id: '{{workbook_id}}'
consumes:
- type: http
namespace: tableau-api
baseUri: https://tableau.goldmansachs.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/default/workbooks/{{workbook_id}}
inputParameters:
- name: workbook_id
in: path
operations:
- name: get-workbook
method: GET
Identifies expiring vendor contracts in SAP, creates Salesforce renewal opportunities, and notifies procurement managers via Teams.
naftiko: '0.5'
info:
label: Contract Renewal Reminder Orchestrator
description: Identifies expiring vendor contracts in SAP, creates Salesforce renewal opportunities, and notifies procurement managers via Teams.
tags:
- procurement
- contracts
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: contract-ops
port: 8080
tools:
- name: process-contract-renewals
description: Given a days-to-expiry threshold, find expiring SAP contracts, create Salesforce opportunities, and notify procurement.
inputParameters:
- name: days_threshold
in: body
type: number
description: Number of days until expiry to trigger renewal process.
steps:
- name: find-expiring
type: call
call: sap-erp.get-expiring-contracts
with:
days_ahead: '{{days_threshold}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
Name: 'Contract renewal: {{find-expiring.vendor_name}}'
StageName: Renewal
CloseDate: '{{find-expiring.expiry_date}}'
- name: notify-procurement
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.procurement_channel_id
message: 'Contract renewal due: {{find-expiring.vendor_name}} expires {{find-expiring.expiry_date}}. Salesforce opportunity: {{create-opportunity.id}}'
consumes:
- type: http
namespace: sap-erp
baseUri: https://hsbc-s4.sap.com/sap/opu/odata/sap/API_CONTRACT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: contracts
path: /A_Contract
operations:
- name: get-expiring-contracts
method: GET
- type: http
namespace: salesforce
baseUri: https://hsbc.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Executes a Snowflake query to retrieve daily trade volume aggregates for a given HSBC trading desk and date range.
naftiko: '0.5'
info:
label: Snowflake Trade Volume Query
description: Executes a Snowflake query to retrieve daily trade volume aggregates for a given HSBC trading desk and date range.
tags:
- data
- analytics
- snowflake
- trading
- lookup
capability:
exposes:
- type: mcp
namespace: trading-analytics
port: 8080
tools:
- name: get-trade-volume
description: Given a trading desk code and date range, return the aggregated daily trade volume from Snowflake.
inputParameters:
- name: desk_code
in: body
type: string
description: The HSBC trading desk code.
- name: start_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date in YYYY-MM-DD format.
call: snowflake.execute-statement
with:
statement: SELECT trade_date, SUM(volume) as total_volume FROM trading.daily_trades WHERE desk_code = '{{desk_code}}' AND trade_date BETWEEN '{{start_date}}' AND '{{end_date}}' GROUP BY trade_date ORDER BY trade_date
outputParameters:
- name: results
type: array
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Handles customer complaints by creating a Salesforce case, logging a ServiceNow incident, and sending an acknowledgment email via Microsoft Graph.
naftiko: '0.5'
info:
label: Customer Complaint Resolution Workflow
description: Handles customer complaints by creating a Salesforce case, logging a ServiceNow incident, and sending an acknowledgment email via Microsoft Graph.
tags:
- customer-service
- salesforce
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: complaints-ops
port: 8080
tools:
- name: process-complaint
description: Given customer details and complaint description, create a Salesforce case, log a ServiceNow incident, and send an acknowledgment email.
inputParameters:
- name: customer_email
in: body
type: string
description: The customer email address.
- name: complaint_subject
in: body
type: string
description: Brief subject of the complaint.
- name: complaint_detail
in: body
type: string
description: Full complaint description.
steps:
- name: create-case
type: call
call: salesforce.create-case
with:
Subject: '{{complaint_subject}}'
Description: '{{complaint_detail}}'
SuppliedEmail: '{{customer_email}}'
Origin: Digital
Priority: High
- name: log-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Customer complaint: {{complaint_subject}}'
description: 'Case: {{create-case.id}}. {{complaint_detail}}'
category: customer_complaint
- name: send-ack
type: call
call: msgraph.send-mail
with:
recipient: '{{customer_email}}'
subject: 'HSBC: Your complaint has been received - {{create-case.CaseNumber}}'
body: Dear Customer, your complaint regarding '{{complaint_subject}}' has been logged as case {{create-case.CaseNumber}}. We will respond within 48 hours.
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: 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: mail
path: /users/$secrets.service_email/sendMail
operations:
- name: send-mail
method: POST
Lists HSBC Okta users without MFA enrolled and opens a ServiceNow compliance task for the information security team.
naftiko: '0.5'
info:
label: Okta MFA Policy Compliance Audit
description: Lists HSBC Okta users without MFA enrolled and opens a ServiceNow compliance task for the information security team.
tags:
- security
- identity
- okta
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: identity-compliance
port: 8080
tools:
- name: audit-mfa-compliance
description: Retrieve a list of active HSBC Okta users without MFA enrolled and create a ServiceNow security compliance task for remediation by the information security team.
steps:
- name: get-non-mfa-users
type: call
call: okta-audit.list-users-without-mfa
with:
filter: status eq ACTIVE
- name: create-compliance-task
type: call
call: servicenow-audit.create-incident
with:
short_description: 'MFA Compliance: {{get-non-mfa-users.count}} HSBC users without MFA'
description: 'Users without MFA: {{get-non-mfa-users.count}}. Immediate review required per HSBC information security policy.'
category: security_compliance
priority: '1'
consumes:
- type: http
namespace: okta-audit
baseUri: https://hsbc.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: users
path: /users
inputParameters:
- name: filter
in: query
operations:
- name: list-users-without-mfa
method: GET
- type: http
namespace: servicenow-audit
baseUri: https://hsbc.service-now.com/api/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 open job requisitions from Workday Recruiting across HSBC global offices and publishes a weekly status digest to the HR Confluence page.
naftiko: '0.5'
info:
label: Workday Recruiting Pipeline Digest
description: Retrieves open job requisitions from Workday Recruiting across HSBC global offices and publishes a weekly status digest to the HR Confluence page.
tags:
- hr
- recruiting
- workday
- confluence
- reporting
capability:
exposes:
- type: mcp
namespace: talent-ops
port: 8080
tools:
- name: publish-recruiting-digest
description: Retrieve all open HSBC job requisitions from Workday Recruiting, count openings by department and region, and publish a weekly summary to the HR Confluence space.
inputParameters:
- name: confluence_page_id
in: body
type: string
description: The Confluence page ID where the recruiting digest should be published.
steps:
- name: get-open-reqs
type: call
call: workday-recruit.list-job-requisitions
with:
status: Open
- name: publish-page
type: call
call: confluence-hr.update-page
with:
page_id: '{{confluence_page_id}}'
content: 'Open Requisitions: {{get-open-reqs.total_count}}. By Department: {{get-open-reqs.by_department}}'
consumes:
- type: http
namespace: workday-recruit
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /hsbc/jobRequisitions
inputParameters:
- name: status
in: query
operations:
- name: list-job-requisitions
method: GET
- type: http
namespace: confluence-hr
baseUri: https://hsbc.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
Queries Azure Cost Management for HSBC resource groups exceeding budget thresholds and posts a weekly FinOps cost digest to the cloud governance Teams channel.
naftiko: '0.5'
info:
label: Azure Cost Anomaly Reporting
description: Queries Azure Cost Management for HSBC resource groups exceeding budget thresholds and posts a weekly FinOps cost digest to the cloud governance Teams channel.
tags:
- cloud
- finops
- azure
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: finops-reporting
port: 8080
tools:
- name: publish-azure-cost-report
description: Query Azure Cost Management for HSBC resource groups exceeding budget thresholds and post a weekly FinOps cost digest to the cloud governance channel in Microsoft Teams.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID to query costs for.
- name: billing_period
in: body
type: string
description: The billing period in YYYYMM format, e.g. 202603.
steps:
- name: get-cost-data
type: call
call: azure-cost.get-usage-details
with:
subscription_id: '{{subscription_id}}'
billing_period: '{{billing_period}}'
- name: post-report
type: call
call: msteams-finops.post-channel-message
with:
channel_id: $secrets.finops_channel_id
message: 'HSBC Azure cost report for {{billing_period}}: Total {{get-cost-data.total_cost}} {{get-cost-data.currency}}. Top group: {{get-cost-data.top_group}}.'
consumes:
- type: http
namespace: azure-cost
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: usage-details
path: /subscriptions/{{subscription_id}}/providers/Microsoft.Consumption/usageDetails
inputParameters:
- name: subscription_id
in: path
- name: billing_period
in: query
operations:
- name: get-usage-details
method: GET
- type: http
namespace: msteams-finops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Validates cross-border payments by screening beneficiaries, checking country restrictions, and logging compliance results in ServiceNow.
naftiko: '0.5'
info:
label: Cross-Border Payment Compliance Check
description: Validates cross-border payments by screening beneficiaries, checking country restrictions, and logging compliance results in ServiceNow.
tags:
- payments
- compliance
- cross-border
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: payment-compliance
port: 8080
tools:
- name: check-cross-border-payment
description: Given payment details, screen the beneficiary, validate against country restrictions, and log compliance results.
inputParameters:
- name: beneficiary_name
in: body
type: string
description: The payment beneficiary name.
- name: beneficiary_country
in: body
type: string
description: The beneficiary country code.
- name: payment_amount
in: body
type: number
description: The payment amount.
- name: currency
in: body
type: string
description: The payment currency code.
steps:
- name: screen-beneficiary
type: call
call: sanctions-api.screen
with:
name: '{{beneficiary_name}}'
country: '{{beneficiary_country}}'
- name: check-country
type: call
call: snowflake.execute-statement
with:
statement: SELECT restriction_type, max_amount FROM compliance.country_restrictions WHERE country_code = '{{beneficiary_country}}' AND currency = '{{currency}}'
- name: log-result
type: call
call: servicenow.create-case
with:
short_description: 'Cross-border payment check: {{beneficiary_name}} ({{beneficiary_country}})'
description: 'Amount: {{payment_amount}} {{currency}}. Screening: {{screen-beneficiary.status}}. Country restrictions: {{check-country.restriction_type}}'
category: payment_compliance
consumes:
- type: http
namespace: sanctions-api
baseUri: https://sanctions-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.sanctions_token
resources:
- name: screening
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cases
path: /table/sn_customerservice_case
operations:
- name: create-case
method: POST
When a P1 incident is raised in ServiceNow for HSBC banking systems, pages the on-call engineer via PagerDuty and posts a war-room message to Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow P1 Incident Response Chain
description: When a P1 incident is raised in ServiceNow for HSBC banking systems, pages the on-call engineer via PagerDuty and posts a war-room message to Microsoft Teams.
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: Given a ServiceNow P1 incident number for an HSBC banking system outage, page the on-call engineer via PagerDuty and post a war-room message to the IT ops Teams channel.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number, e.g. INC0012345.
steps:
- name: get-incident
type: call
call: servicenow-read.get-incident
with:
number: '{{incident_number}}'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: 'P1: {{get-incident.short_description}}'
service_id: $secrets.pagerduty_service_id
details: 'SNOW: {{incident_number}}'
- name: post-warroom
type: call
call: msteams-war.post-channel-message
with:
channel_id: $secrets.warroom_channel_id
message: 'P1 INCIDENT: {{get-incident.short_description}} | PagerDuty: {{page-oncall.incident_id}}'
consumes:
- type: http
namespace: servicenow-read
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-war
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Handles database performance alerts from Datadog by creating a PagerDuty incident, logging a Jira ticket, and posting diagnostics to Confluence.
naftiko: '0.5'
info:
label: Database Performance Degradation Handler
description: Handles database performance alerts from Datadog by creating a PagerDuty incident, logging a Jira ticket, and posting diagnostics to Confluence.
tags:
- database
- monitoring
- datadog
- pagerduty
- jira
capability:
exposes:
- type: mcp
namespace: db-ops
port: 8080
tools:
- name: handle-db-degradation
description: Given a Datadog alert for database performance, create a PagerDuty incident and Jira ticket for the DBA team.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog alert ID.
- name: database_name
in: body
type: string
description: The affected database name.
steps:
- name: get-alert
type: call
call: datadog.get-monitor
with:
monitor_id: '{{alert_id}}'
- name: create-incident
type: call
call: pagerduty.create-incident
with:
title: 'DB performance degradation: {{database_name}}'
service_id: $secrets.dba_service_id
urgency: high
- name: create-ticket
type: call
call: jira.create-issue
with:
project: DBA
summary: 'Performance degradation: {{database_name}}'
description: 'Datadog alert: {{alert_id}}. {{get-alert.message}}. PagerDuty: {{create-incident.id}}'
issuetype: Bug
priority: High
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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: https://hsbc.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
Runs due diligence on correspondent banking relationships by pulling entity data from Salesforce, running screening checks, and logging in ServiceNow.
naftiko: '0.5'
info:
label: Correspondent Banking Due Diligence
description: Runs due diligence on correspondent banking relationships by pulling entity data from Salesforce, running screening checks, and logging in ServiceNow.
tags:
- compliance
- correspondent-banking
- salesforce
- servicenow
- due-diligence
capability:
exposes:
- type: mcp
namespace: cb-diligence
port: 8080
tools:
- name: run-due-diligence
description: Given a correspondent bank account ID, pull entity data, run screening, and log results.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the correspondent bank.
steps:
- name: get-entity
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: screen-entity
type: call
call: sanctions-api.screen
with:
name: '{{get-entity.Name}}'
country: '{{get-entity.BillingCountry}}'
- name: log-diligence
type: call
call: servicenow.create-case
with:
short_description: 'CB due diligence: {{get-entity.Name}}'
description: 'Screening result: {{screen-entity.status}}. Risk score: {{screen-entity.risk_score}}. Country: {{get-entity.BillingCountry}}'
category: correspondent_banking
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.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: sanctions-api
baseUri: https://sanctions-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.sanctions_token
resources:
- name: screening
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: servicenow
baseUri: https://hsbc.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
Orchestrates know-your-customer verification by pulling customer data from Salesforce, running identity checks, and logging results to ServiceNow for HSBC compliance.
naftiko: '0.5'
info:
label: KYC Customer Verification Workflow
description: Orchestrates know-your-customer verification by pulling customer data from Salesforce, running identity checks, and logging results to ServiceNow for HSBC compliance.
tags:
- compliance
- kyc
- salesforce
- servicenow
- banking
capability:
exposes:
- type: mcp
namespace: kyc-ops
port: 8080
tools:
- name: run-kyc-verification
description: Given a Salesforce customer account ID, pull customer details, run KYC checks, and create a compliance case in ServiceNow.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the customer.
steps:
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: run-check
type: call
call: kyc-service.verify-identity
with:
customer_name: '{{get-customer.Name}}'
country: '{{get-customer.BillingCountry}}'
registration_number: '{{get-customer.CompanyRegistration__c}}'
- name: log-result
type: call
call: servicenow.create-case
with:
short_description: 'KYC verification: {{get-customer.Name}}'
category: compliance_kyc
description: 'KYC result: {{run-check.status}} - Risk score: {{run-check.risk_score}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.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: kyc-service
baseUri: https://kyc-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.kyc_token
resources:
- name: verifications
path: /verify
operations:
- name: verify-identity
method: POST
- type: http
namespace: servicenow
baseUri: https://hsbc.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
Detects suspicious corporate card transactions from Snowflake, creates a Salesforce case, and alerts the fraud team via PagerDuty.
naftiko: '0.5'
info:
label: Corporate Card Fraud Detection Workflow
description: Detects suspicious corporate card transactions from Snowflake, creates a Salesforce case, and alerts the fraud team via PagerDuty.
tags:
- fraud
- compliance
- snowflake
- salesforce
- pagerduty
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: detect-card-fraud
description: Given a transaction batch ID, query Snowflake for anomalous transactions, create a Salesforce fraud case, and alert the fraud team.
inputParameters:
- name: batch_id
in: body
type: string
description: The transaction batch ID to screen.
steps:
- name: query-anomalies
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM fraud.card_anomalies WHERE batch_id = '{{batch_id}}' AND risk_score > 80
- name: create-case
type: call
call: salesforce.create-case
with:
Subject: Suspected card fraud - batch {{batch_id}}
Description: '{{query-anomalies.row_count}} suspicious transactions detected.'
Priority: Critical
- name: alert-fraud-team
type: call
call: pagerduty.create-incident
with:
title: 'Card fraud alert: {{query-anomalies.row_count}} anomalies in batch {{batch_id}}'
service_id: $secrets.fraud_service_id
urgency: high
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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://hsbc.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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Checks portfolio drift from Snowflake analytics, generates a rebalance recommendation, and notifies the wealth management advisor via Salesforce and Teams.
naftiko: '0.5'
info:
label: Wealth Management Portfolio Rebalance Alert
description: Checks portfolio drift from Snowflake analytics, generates a rebalance recommendation, and notifies the wealth management advisor via Salesforce and Teams.
tags:
- wealth-management
- portfolio
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth-ops
port: 8080
tools:
- name: check-portfolio-rebalance
description: Given a portfolio ID, check drift from target allocation in Snowflake and notify the advisor if rebalancing is needed.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The wealth management portfolio ID.
steps:
- name: check-drift
type: call
call: snowflake.execute-statement
with:
statement: SELECT asset_class, current_pct, target_pct, ABS(current_pct - target_pct) as drift FROM wealth.portfolio_allocation WHERE portfolio_id = '{{portfolio_id}}' AND ABS(current_pct - target_pct) > 5
- name: update-salesforce
type: call
call: salesforce.create-task
with:
Subject: 'Portfolio rebalance review: {{portfolio_id}}'
Description: 'Drift detected: {{check-drift.results}}'
Priority: High
- name: notify-advisor
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.wealth_channel_id
message: 'Portfolio {{portfolio_id}} has drifted beyond threshold. Salesforce task created: {{update-salesforce.id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Submits HSBC regulatory filings and compliance documents to the Anthropic API for AI-powered summarization and stores the result in SharePoint for compliance team review.
naftiko: '0.5'
info:
label: Anthropic Regulatory Document Summarization
description: Submits HSBC regulatory filings and compliance documents to the Anthropic API for AI-powered summarization and stores the result in SharePoint for compliance team review.
tags:
- ai
- compliance
- document-management
- anthropic
- sharepoint
- banking
capability:
exposes:
- type: mcp
namespace: ai-compliance
port: 8080
tools:
- name: summarize-regulatory-document
description: Given a SharePoint URL of an HSBC regulatory filing or compliance document, retrieve the content, send to Anthropic API for concise summarization, and save the summary to SharePoint for compliance team review.
inputParameters:
- name: document_url
in: body
type: string
description: The SharePoint URL of the regulatory document to summarize.
- name: site_id
in: body
type: string
description: The SharePoint site ID where the summary should be stored.
steps:
- name: get-document
type: call
call: sharepoint-doc.get-file-content
with:
document_url: '{{document_url}}'
- name: generate-summary
type: call
call: anthropic.create-message
with:
model: claude-opus-4-5
prompt: 'Summarize the following HSBC regulatory document, highlighting key obligations, deadlines, and required actions: {{get-document.content}}'
- name: save-summary
type: call
call: sharepoint-save.create-page
with:
site_id: '{{site_id}}'
title: 'AI Compliance Summary: {{get-document.filename}}'
content: '{{generate-summary.completion}}'
consumes:
- type: http
namespace: sharepoint-doc
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{site_id}}/drive/root:/{{document_url}}:/content
inputParameters:
- name: site_id
in: path
- name: document_url
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: sharepoint-save
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: pages
path: /sites/{{site_id}}/pages
inputParameters:
- name: site_id
in: path
operations:
- name: create-page
method: POST
Retrieves submitted SAP Concur expense reports for HSBC employees, validates against T&E policy, and flags non-compliant reports in ServiceNow.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Audit
description: Retrieves submitted SAP Concur expense reports for HSBC employees, validates against T&E policy, and flags non-compliant reports in ServiceNow.
tags:
- finance
- expense-management
- sap-concur
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: finance-compliance
port: 8080
tools:
- name: audit-expense-report
description: Given a SAP Concur expense report ID, retrieve the line items, validate against HSBC travel and expense policy, and open a ServiceNow compliance task if violations are detected.
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: flag-violation
type: call
call: servicenow-fin.create-incident
with:
short_description: 'Expense policy violation: Report {{report_id}}'
description: Concur report {{report_id}} by {{get-report.employee_name}} contains items requiring review per HSBC T&E policy.
category: finance_compliance
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: servicenow-fin
baseUri: https://hsbc.service-now.com/api/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 and tracks internal audit findings by logging to ServiceNow, creating Jira remediation tasks, and publishing a summary to Confluence.
naftiko: '0.5'
info:
label: Internal Audit Finding Tracker
description: Creates and tracks internal audit findings by logging to ServiceNow, creating Jira remediation tasks, and publishing a summary to Confluence.
tags:
- audit
- compliance
- servicenow
- jira
- confluence
capability:
exposes:
- type: mcp
namespace: audit-ops
port: 8080
tools:
- name: log-audit-finding
description: Given audit finding details, create a ServiceNow audit record, a Jira remediation task, and publish to Confluence.
inputParameters:
- name: finding_title
in: body
type: string
description: Title of the audit finding.
- name: finding_detail
in: body
type: string
description: Detailed description of the finding.
- name: severity
in: body
type: string
description: Severity level (critical, high, medium, low).
steps:
- name: create-audit-record
type: call
call: servicenow.create-audit-finding
with:
short_description: '{{finding_title}}'
description: '{{finding_detail}}'
severity: '{{severity}}'
- name: create-remediation
type: call
call: jira.create-issue
with:
project: AUDIT
summary: 'Remediation: {{finding_title}}'
description: 'ServiceNow: {{create-audit-record.number}}. {{finding_detail}}'
issuetype: Task
priority: '{{severity}}'
- name: publish-summary
type: call
call: confluence.create-page
with:
space_key: AUDIT
title: 'Audit Finding: {{finding_title}}'
body: 'Severity: {{severity}}. ServiceNow: {{create-audit-record.number}}. Jira: {{create-remediation.key}}. Details: {{finding_detail}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: audit-findings
path: /table/sn_audit_finding
operations:
- name: create-audit-finding
method: POST
- type: http
namespace: jira
baseUri: https://hsbc.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: confluence
baseUri: https://hsbc.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
Enriches new Salesforce corporate banking leads with firmographic data from ZoomInfo and updates the lead record with company financials and industry classification.
naftiko: '0.5'
info:
label: Salesforce Corporate Banking Lead Enrichment
description: Enriches new Salesforce corporate banking leads with firmographic data from ZoomInfo and updates the lead record with company financials and industry classification.
tags:
- sales
- crm
- salesforce
- zoominfo
- lead-enrichment
- banking
capability:
exposes:
- type: mcp
namespace: sales-intelligence
port: 8080
tools:
- name: enrich-corporate-lead
description: Given a Salesforce lead ID for a corporate banking prospect, look up firmographic data in ZoomInfo and update the lead record with company size, revenue, and industry for relationship manager prioritization.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead record ID (18-char SFDC ID).
steps:
- name: get-lead
type: call
call: salesforce-lead.get-lead
with:
lead_id: '{{lead_id}}'
- name: enrich-company
type: call
call: zoominfo.search-company
with:
company_name: '{{get-lead.company}}'
website: '{{get-lead.website}}'
- name: update-lead
type: call
call: salesforce-lead-update.update-lead
with:
lead_id: '{{lead_id}}'
employee_count: '{{enrich-company.employee_count}}'
annual_revenue: '{{enrich-company.annual_revenue}}'
industry: '{{enrich-company.industry}}'
consumes:
- type: http
namespace: salesforce-lead
baseUri: https://hsbc.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-lead-update
baseUri: https://hsbc.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
Monitors SSL certificate expiry dates from ServiceNow CMDB, creates Jira renewal tasks, and alerts the infrastructure team via Teams.
naftiko: '0.5'
info:
label: SSL Certificate Expiry Monitor
description: Monitors SSL certificate expiry dates from ServiceNow CMDB, creates Jira renewal tasks, and alerts the infrastructure team via Teams.
tags:
- security
- certificates
- servicenow
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cert-ops
port: 8080
tools:
- name: check-certificate-expiry
description: Query ServiceNow for certificates expiring within a given number of days, create Jira tasks, and notify the team.
inputParameters:
- name: days_threshold
in: body
type: number
description: Number of days until expiry to trigger alerts.
steps:
- name: find-expiring
type: call
call: servicenow.get-expiring-certs
with:
days: '{{days_threshold}}'
- name: create-task
type: call
call: jira.create-issue
with:
project: INFRA
summary: 'SSL cert renewal: {{find-expiring.cert_name}}'
description: 'Certificate: {{find-expiring.cert_name}}. Domain: {{find-expiring.domain}}. Expires: {{find-expiring.expiry_date}}'
issuetype: Task
priority: High
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.infra_channel_id
message: 'SSL cert expiring: {{find-expiring.cert_name}} ({{find-expiring.domain}}) on {{find-expiring.expiry_date}}. Jira: {{create-task.key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: certificates
path: /table/cmdb_ci_certificate
operations:
- name: get-expiring-certs
method: GET
- type: http
namespace: jira
baseUri: https://hsbc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Logs operational risk events by creating a ServiceNow incident, recording in Snowflake risk database, and notifying the risk team via Teams.
naftiko: '0.5'
info:
label: Operational Risk Event Logger
description: Logs operational risk events by creating a ServiceNow incident, recording in Snowflake risk database, and notifying the risk team via Teams.
tags:
- risk
- operational-risk
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: oprisk-ops
port: 8080
tools:
- name: log-oprisk-event
description: Given operational risk event details, create a ServiceNow incident, log to Snowflake, and notify the risk team.
inputParameters:
- name: event_title
in: body
type: string
description: Title of the operational risk event.
- name: event_category
in: body
type: string
description: Risk category (execution, fraud, systems, legal).
- name: estimated_loss
in: body
type: number
description: Estimated financial loss.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'OpRisk: {{event_title}}'
description: 'Category: {{event_category}}. Estimated loss: {{estimated_loss}}'
category: operational_risk
priority: High
- name: log-to-snowflake
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO risk.op_risk_events (title, category, estimated_loss, logged_date) VALUES ('{{event_title}}', '{{event_category}}', {{estimated_loss}}, CURRENT_DATE)
- name: notify-risk
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.risk_channel_id
message: 'OpRisk event logged: {{event_title}}. Category: {{event_category}}. Loss: {{estimated_loss}}. Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Generates a weekly deal pipeline digest by querying Salesforce opportunities, aggregating in Snowflake, and distributing via Teams to senior bankers.
naftiko: '0.5'
info:
label: Investment Banking Deal Pipeline Digest
description: Generates a weekly deal pipeline digest by querying Salesforce opportunities, aggregating in Snowflake, and distributing via Teams to senior bankers.
tags:
- investment-banking
- deals
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ib-pipeline
port: 8080
tools:
- name: generate-deal-digest
description: Pull active deal pipeline from Salesforce, aggregate metrics in Snowflake, and send digest to IB leadership.
inputParameters:
- name: division
in: body
type: string
description: Investment banking division (M&A, DCM, ECM).
steps:
- name: get-deals
type: call
call: salesforce.query-opportunities
with:
query: SELECT Id, Name, Amount, StageName FROM Opportunity WHERE Division__c = '{{division}}' AND IsClosed = false
- name: aggregate-metrics
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as deal_count, SUM(amount) as total_pipeline FROM ib.deal_pipeline WHERE division = '{{division}}' AND status = 'active'
- name: send-digest
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.ib_channel_id
message: '{{division}} Deal Pipeline: {{aggregate-metrics.deal_count}} active deals, total pipeline: {{aggregate-metrics.total_pipeline}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Detects budget variances by comparing SAP actuals against planned budgets, creating Jira action items, and alerting finance managers via Teams.
naftiko: '0.5'
info:
label: Cost Center Budget Variance Alert
description: Detects budget variances by comparing SAP actuals against planned budgets, creating Jira action items, and alerting finance managers via Teams.
tags:
- finance
- budgeting
- sap
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: budget-ops
port: 8080
tools:
- name: check-budget-variance
description: Given a cost center and fiscal period, compare SAP actuals to budget and alert if variance exceeds threshold.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center code.
- name: fiscal_period
in: body
type: string
description: The fiscal period, e.g. '2026-03'.
steps:
- name: get-actuals
type: call
call: sap-erp.get-cost-center-actuals
with:
cost_center: '{{cost_center}}'
period: '{{fiscal_period}}'
- name: create-action
type: call
call: jira.create-issue
with:
project: FIN
summary: 'Budget variance: {{cost_center}} ({{fiscal_period}})'
description: 'Actual: {{get-actuals.actual_amount}}. Budget: {{get-actuals.budget_amount}}. Variance: {{get-actuals.variance_pct}}%'
issuetype: Task
priority: High
- name: notify-finance
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.finance_channel_id
message: 'Budget variance alert: {{cost_center}} ({{fiscal_period}}). Variance: {{get-actuals.variance_pct}}%. Jira: {{create-action.key}}'
consumes:
- type: http
namespace: sap-erp
baseUri: https://hsbc-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_BUDGET
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-centers
path: /A_CostCenterBudget
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: jira
baseUri: https://hsbc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
On a GitHub Actions workflow failure on a protected branch, creates a Jira bug and alerts the engineering Teams channel.
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 and alerts the engineering Teams channel.
tags:
- devops
- cicd
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions pipeline failure with repo, workflow, branch, and run URL, open a Jira engineering bug and post an alert to the HSBC engineering Teams channel.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository full name, e.g. hsbc/payments-api.
- name: workflow_name
in: body
type: string
description: The name of the failed GitHub Actions workflow.
- name: branch
in: body
type: string
description: The branch on which the pipeline failed.
- name: run_url
in: body
type: string
description: The URL to the failed GitHub Actions run.
- name: commit_sha
in: body
type: string
description: The commit SHA that triggered the pipeline.
steps:
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repo_name}} / {{branch}} — {{workflow_name}}'
description: 'Repo: {{repo_name}}
Branch: {{branch}}
Commit: {{commit_sha}}
Run: {{run_url}}'
- name: notify-engineering
type: call
call: msteams-eng.post-channel-message
with:
channel_id: $secrets.engineering_channel_id
message: 'Pipeline failure in {{repo_name}} on {{branch}} | Jira: {{create-jira-bug.key}} | {{run_url}}'
consumes:
- type: http
namespace: jira
baseUri: https://hsbc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-eng
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates quarterly earnings data collection from SAP, loads to Snowflake, refreshes Power BI dashboards, and notifies the finance team.
naftiko: '0.5'
info:
label: Quarterly Earnings Data Pipeline
description: Orchestrates quarterly earnings data collection from SAP, loads to Snowflake, refreshes Power BI dashboards, and notifies the finance team.
tags:
- finance
- reporting
- sap
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: earnings-pipeline
port: 8080
tools:
- name: run-earnings-pipeline
description: Given a fiscal quarter and year, extract SAP financial data, load to Snowflake, refresh Power BI, and notify finance.
inputParameters:
- name: fiscal_quarter
in: body
type: string
description: The fiscal quarter, e.g. 'Q1'.
- name: fiscal_year
in: body
type: string
description: The fiscal year, e.g. '2026'.
steps:
- name: extract-sap-data
type: call
call: sap-erp.get-financial-data
with:
quarter: '{{fiscal_quarter}}'
year: '{{fiscal_year}}'
- name: load-snowflake
type: call
call: snowflake.execute-statement
with:
statement: CALL finance.load_quarterly_earnings('{{fiscal_quarter}}', '{{fiscal_year}}')
- name: refresh-powerbi
type: call
call: powerbi.trigger-refresh
with:
group_id: $secrets.finance_workspace_id
dataset_id: $secrets.earnings_dataset_id
- name: notify-finance
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.finance_channel_id
message: '{{fiscal_quarter}} {{fiscal_year}} earnings data pipeline complete. Power BI dashboard refreshed.'
consumes:
- type: http
namespace: sap-erp
baseUri: https://hsbc-s4.sap.com/sap/opu/odata/sap/API_FINANCIAL_STATEMENT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: financial-data
path: /A_FinancialStatement
operations:
- name: get-financial-data
method: GET
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Triggers a Power BI dataset refresh for the HSBC financial reporting dashboard and notifies the finance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Power BI Finance Dashboard Refresh
description: Triggers a Power BI dataset refresh for the HSBC financial reporting dashboard and notifies the finance team via Microsoft Teams.
tags:
- finance
- reporting
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: refresh-finance-dashboard
description: Trigger a Power BI dataset refresh for the HSBC financial reporting dashboard and notify the finance Teams channel that data is current.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID for the HSBC finance dashboard.
- name: period
in: body
type: string
description: The fiscal period being refreshed, e.g. 2026-Q1.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: '{{dataset_id}}'
- name: notify-finance
type: call
call: msteams-finance.post-channel-message
with:
channel_id: $secrets.finance_channel_id
message: HSBC finance dashboard refreshed for {{period}}. Dataset {{dataset_id}} is now current.
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refreshes
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams-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: post-channel-message
method: POST
Validates SWIFT payment messages by checking message format, screening counterparties, and logging results in ServiceNow for HSBC payments.
naftiko: '0.5'
info:
label: SWIFT Message Validation Workflow
description: Validates SWIFT payment messages by checking message format, screening counterparties, and logging results in ServiceNow for HSBC payments.
tags:
- payments
- swift
- compliance
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: swift-ops
port: 8080
tools:
- name: validate-swift-message
description: Given a SWIFT message reference, validate the message format, screen the counterparty, and log validation results.
inputParameters:
- name: message_ref
in: body
type: string
description: The SWIFT message reference.
steps:
- name: get-message
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM payments.swift_messages WHERE reference = '{{message_ref}}'
- name: screen-counterparty
type: call
call: sanctions-api.screen
with:
name: '{{get-message.counterparty_name}}'
bic: '{{get-message.counterparty_bic}}'
- name: log-validation
type: call
call: servicenow.create-case
with:
short_description: 'SWIFT validation: {{message_ref}}'
description: 'Message type: {{get-message.message_type}}. Counterparty: {{get-message.counterparty_name}}. Screening: {{screen-counterparty.status}}'
category: payment_validation
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: sanctions-api
baseUri: https://sanctions-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.sanctions_token
resources:
- name: screening
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: servicenow
baseUri: https://hsbc.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
Creates a ServiceNow change request for a planned HSBC banking system update and notifies IT stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow IT Change Request for Banking Systems
description: Creates a ServiceNow change request for a planned HSBC banking system update and notifies IT stakeholders via Microsoft Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: submit-change-request
description: Given a system name, change description, and implementation window, create a ServiceNow normal change request for the HSBC banking system, assign to the CAB group, and notify stakeholders in Teams.
inputParameters:
- name: system_name
in: body
type: string
description: The name of the HSBC banking system or service being changed.
- name: change_description
in: body
type: string
description: A detailed description of the planned change.
- name: planned_start
in: body
type: string
description: Planned start datetime in ISO 8601 format.
- name: planned_end
in: body
type: string
description: Planned end datetime in ISO 8601 format.
steps:
- name: create-change
type: call
call: servicenow-chg.create-change-request
with:
short_description: 'Change: {{system_name}}'
description: '{{change_description}}'
start_date: '{{planned_start}}'
end_date: '{{planned_end}}'
type: normal
assignment_group: CAB
- name: notify-stakeholders
type: call
call: msteams-chg.post-channel-message
with:
channel_id: $secrets.itops_channel_id
message: 'Change request submitted for {{system_name}}. SNOW: {{create-change.number}}. Planned: {{planned_start}} to {{planned_end}}.'
consumes:
- type: http
namespace: servicenow-chg
baseUri: https://hsbc.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-chg
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a Salesforce opportunity for a corporate banking client is updated, logs the activity against the client account and notifies the relationship manager via Teams.
naftiko: '0.5'
info:
label: Salesforce Client Relationship Opportunity Sync
description: When a Salesforce opportunity for a corporate banking client is updated, logs the activity against the client account and notifies the relationship manager via Teams.
tags:
- sales
- crm
- salesforce
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: crm-banking
port: 8080
tools:
- name: sync-opportunity-update
description: Given a Salesforce opportunity ID, retrieve the latest update, log a completed activity against the client account, and notify the assigned relationship manager via Microsoft Teams.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID (18-char SFDC ID) that was updated.
steps:
- name: get-opportunity
type: call
call: salesforce-opp.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: log-activity
type: call
call: salesforce-activity.create-task
with:
what_id: '{{opportunity_id}}'
subject: 'Opportunity update: {{get-opportunity.name}}'
status: Completed
owner_id: '{{get-opportunity.owner_id}}'
- name: notify-rm
type: call
call: msteams-rm.send-message
with:
recipient: '{{get-opportunity.owner_email}}'
message: Opportunity {{get-opportunity.name}} updated to stage {{get-opportunity.stage_name}}. Activity logged.
consumes:
- type: http
namespace: salesforce-opp
baseUri: https://hsbc.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: salesforce-activity
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams-rm
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient}}/sendMail
inputParameters:
- name: recipient
in: path
operations:
- name: send-message
method: POST
Creates a Zoom meeting for an HSBC corporate client executive briefing and sends calendar invites via Microsoft Graph to all attendees.
naftiko: '0.5'
info:
label: Zoom Executive Briefing Scheduler
description: Creates a Zoom meeting for an HSBC corporate client executive briefing and sends calendar invites via Microsoft Graph to all attendees.
tags:
- sales
- communication
- zoom
- salesforce
- microsoft-365
- banking
capability:
exposes:
- type: mcp
namespace: client-engagement
port: 8080
tools:
- name: schedule-client-briefing
description: Given a Salesforce account ID and meeting time, create a Zoom meeting for an HSBC client executive briefing and send calendar invites to all account contacts via Microsoft Graph.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the HSBC corporate client.
- name: meeting_time
in: body
type: string
description: The meeting start time in ISO 8601 format.
- name: duration_minutes
in: body
type: integer
description: Meeting duration in minutes.
steps:
- name: get-account
type: call
call: salesforce-acct.get-account
with:
account_id: '{{account_id}}'
- name: create-meeting
type: call
call: zoom.create-meeting
with:
topic: HSBC Executive Briefing — {{get-account.name}}
start_time: '{{meeting_time}}'
duration: '{{duration_minutes}}'
- name: send-invite
type: call
call: msgraph-cal.create-event
with:
subject: HSBC Executive Briefing — {{get-account.name}}
start: '{{meeting_time}}'
join_url: '{{create-meeting.join_url}}'
consumes:
- type: http
namespace: salesforce-acct
baseUri: https://hsbc.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: 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: msgraph-cal
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
Syncs application dependency data between ServiceNow CMDB and Datadog service map, creating Jira tickets for unmapped dependencies.
naftiko: '0.5'
info:
label: Application Dependency Mapping Sync
description: Syncs application dependency data between ServiceNow CMDB and Datadog service map, creating Jira tickets for unmapped dependencies.
tags:
- itsm
- operations
- servicenow
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: cmdb-ops
port: 8080
tools:
- name: sync-dependency-map
description: Given a ServiceNow application CI, compare dependencies with Datadog service map and create tickets for discrepancies.
inputParameters:
- name: app_ci_id
in: body
type: string
description: The ServiceNow application CI sys_id.
steps:
- name: get-cmdb-deps
type: call
call: servicenow.get-dependencies
with:
ci_id: '{{app_ci_id}}'
- name: get-datadog-deps
type: call
call: datadog.get-service-dependencies
with:
service: '{{get-cmdb-deps.service_name}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: CMDB
summary: 'Dependency map discrepancy: {{get-cmdb-deps.service_name}}'
description: 'CMDB deps: {{get-cmdb-deps.count}}. Datadog deps: {{get-datadog-deps.count}}. Review and reconcile.'
issuetype: Task
priority: Medium
consumes:
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: dependencies
path: /table/cmdb_rel_ci
operations:
- name: get-dependencies
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: service-map
path: /services/{{service}}/dependencies
inputParameters:
- name: service
in: path
operations:
- name: get-service-dependencies
method: GET
- type: http
namespace: jira
baseUri: https://hsbc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Retrieves a pending HSBC employee time-off request from Workday, checks team coverage, and approves or escalates to manager.
naftiko: '0.5'
info:
label: Workday Time-Off Request Processing
description: Retrieves a pending HSBC employee time-off request from Workday, checks team coverage, and approves or escalates to manager.
tags:
- hr
- absence-management
- workday
- approval
capability:
exposes:
- type: mcp
namespace: absence-management
port: 8080
tools:
- name: process-time-off-request
description: Given a Workday time-off request ID, retrieve request details, check team coverage schedule, and auto-approve if coverage is adequate or flag for manager review.
inputParameters:
- name: request_id
in: body
type: string
description: The Workday absence request ID.
steps:
- name: get-request
type: call
call: workday-absence.get-absence-request
with:
request_id: '{{request_id}}'
- name: check-coverage
type: call
call: workday-team.get-team-schedule
with:
cost_center: '{{get-request.cost_center}}'
start_date: '{{get-request.start_date}}'
end_date: '{{get-request.end_date}}'
- name: approve-request
type: call
call: workday-absence-approve.approve-absence
with:
request_id: '{{request_id}}'
decision: approved
consumes:
- type: http
namespace: workday-absence
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: absence-requests
path: /hsbc/absenceRequests/{{request_id}}
inputParameters:
- name: request_id
in: path
operations:
- name: get-absence-request
method: GET
- type: http
namespace: workday-team
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: team-schedule
path: /hsbc/teamSchedule
inputParameters:
- name: cost_center
in: query
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-team-schedule
method: GET
- type: http
namespace: workday-absence-approve
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: absence-approvals
path: /hsbc/absenceRequests/{{request_id}}/approve
inputParameters:
- name: request_id
in: path
operations:
- name: approve-absence
method: POST
Orchestrates vendor payment approval by validating the invoice in SAP, matching against the purchase order, and creating a ServiceNow approval request.
naftiko: '0.5'
info:
label: Vendor Payment Approval Orchestrator
description: Orchestrates vendor payment approval by validating the invoice in SAP, matching against the purchase order, and creating a ServiceNow approval request.
tags:
- finance
- procurement
- sap
- servicenow
- accounts-payable
capability:
exposes:
- type: mcp
namespace: ap-ops
port: 8080
tools:
- name: process-vendor-payment
description: Given an SAP invoice number and PO number, validate the invoice, match to PO, and create a ServiceNow approval request.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP invoice document number.
- name: po_number
in: body
type: string
description: The matching SAP purchase order number.
steps:
- name: get-invoice
type: call
call: sap-erp.get-invoice
with:
invoice_number: '{{invoice_number}}'
- name: get-po
type: call
call: sap-erp.get-po
with:
po_number: '{{po_number}}'
- name: create-approval
type: call
call: servicenow.create-request
with:
short_description: 'Payment approval: Invoice {{invoice_number}} ({{get-invoice.vendor_name}})'
description: 'Invoice amount: {{get-invoice.amount}} {{get-invoice.currency}}. PO amount: {{get-po.total_amount}}. Variance: {{get-invoice.variance_pct}}%'
category: finance_approval
assigned_to: AP_Approvers
consumes:
- type: http
namespace: sap-erp
baseUri: https://hsbc-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: servicenow
baseUri: https://hsbc.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
Runs a credit risk assessment by pulling exposure data from Snowflake, scoring with the risk model API, and updating the Salesforce account with the risk rating.
naftiko: '0.5'
info:
label: Credit Risk Assessment Pipeline
description: Runs a credit risk assessment by pulling exposure data from Snowflake, scoring with the risk model API, and updating the Salesforce account with the risk rating.
tags:
- risk
- credit
- snowflake
- salesforce
- banking
capability:
exposes:
- type: mcp
namespace: risk-ops
port: 8080
tools:
- name: assess-credit-risk
description: Given a customer account ID, pull credit exposure from Snowflake, run risk scoring, and update the Salesforce account.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
steps:
- name: get-exposure
type: call
call: snowflake.execute-statement
with:
statement: SELECT total_exposure, collateral_value, default_probability FROM risk.credit_exposure WHERE account_id = '{{account_id}}'
- name: score-risk
type: call
call: risk-model.score
with:
exposure: '{{get-exposure.total_exposure}}'
collateral: '{{get-exposure.collateral_value}}'
pd: '{{get-exposure.default_probability}}'
- name: update-account
type: call
call: salesforce.update-account
with:
account_id: '{{account_id}}'
Risk_Rating__c: '{{score-risk.rating}}'
Risk_Score__c: '{{score-risk.score}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: risk-model
baseUri: https://risk-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.risk_model_token
resources:
- name: scoring
path: /score
operations:
- name: score
method: POST
- type: http
namespace: salesforce
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
Monitors Azure resource utilization via Datadog, triggers Terraform scaling, and notifies the SRE team via PagerDuty.
naftiko: '0.5'
info:
label: Cloud Infrastructure Scaling Orchestrator
description: Monitors Azure resource utilization via Datadog, triggers Terraform scaling, and notifies the SRE team via PagerDuty.
tags:
- cloud
- infrastructure
- datadog
- terraform
- pagerduty
capability:
exposes:
- type: mcp
namespace: infra-scaling
port: 8080
tools:
- name: scale-infrastructure
description: Given a Datadog alert for high utilization, trigger Terraform workspace run for scaling and notify SRE via PagerDuty.
inputParameters:
- name: datadog_alert_id
in: body
type: string
description: The Datadog alert ID indicating high utilization.
- name: workspace_name
in: body
type: string
description: The Terraform Cloud workspace for scaling.
steps:
- name: get-alert
type: call
call: datadog.get-alert
with:
alert_id: '{{datadog_alert_id}}'
- name: trigger-scaling
type: call
call: terraform.create-run
with:
workspace_name: '{{workspace_name}}'
message: Auto-scaling triggered by Datadog alert {{datadog_alert_id}}
- name: notify-sre
type: call
call: pagerduty.create-incident
with:
title: 'Auto-scaling triggered: {{get-alert.title}}'
service_id: $secrets.sre_service_id
urgency: low
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- 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: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Detects SLA breaches in ServiceNow, escalates via PagerDuty, and posts a summary to the operations Teams channel.
naftiko: '0.5'
info:
label: SLA Breach Escalation Workflow
description: Detects SLA breaches in ServiceNow, escalates via PagerDuty, and posts a summary to the operations Teams channel.
tags:
- itsm
- sla
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sla-ops
port: 8080
tools:
- name: escalate-sla-breach
description: Given a ServiceNow incident number that has breached SLA, escalate via PagerDuty and notify the ops team.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: escalate
type: call
call: pagerduty.create-incident
with:
title: 'SLA breach: {{incident_number}} - {{get-incident.short_description}}'
service_id: $secrets.ops_service_id
urgency: high
- name: notify-ops
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.ops_channel_id
message: 'SLA breach escalation: {{incident_number}}. Priority: {{get-incident.priority}}. PagerDuty: {{escalate.id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Fetches LinkedIn Campaign Manager metrics for HSBC employer brand campaigns and publishes a weekly digest to SharePoint.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Campaign Performance Digest
description: Fetches LinkedIn Campaign Manager metrics for HSBC employer brand campaigns and publishes a weekly digest to SharePoint.
tags:
- marketing
- social
- linkedin
- sharepoint
- reporting
capability:
exposes:
- type: mcp
namespace: talent-brand
port: 8080
tools:
- name: digest-linkedin-campaign
description: Given a LinkedIn campaign ID and date range, retrieve impressions, clicks, and applications for HSBC employer brand campaigns, then publish a digest to the HSBC Careers SharePoint page.
inputParameters:
- name: campaign_id
in: body
type: string
description: The LinkedIn Campaign Manager 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-campaign-stats
type: call
call: linkedin.get-campaign-analytics
with:
campaign_id: '{{campaign_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: publish-digest
type: call
call: sharepoint.create-page
with:
site_id: $secrets.talent_brand_site_id
title: LinkedIn Campaign Report {{campaign_id}} {{start_date}} to {{end_date}}
content: 'Impressions: {{get-campaign-stats.impressions}} | Clicks: {{get-campaign-stats.clicks}} | Applications: {{get-campaign-stats.applications}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaign-analytics
path: /adAnalyticsV2
inputParameters:
- name: campaign_id
in: query
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: pages
path: /sites/{{site_id}}/pages
inputParameters:
- name: site_id
in: path
operations:
- name: create-page
method: POST
Detects Value-at-Risk limit breaches from Snowflake risk data, alerts the risk committee via PagerDuty, and logs a Jira risk event.
naftiko: '0.5'
info:
label: Market Risk VaR Breach Escalation
description: Detects Value-at-Risk limit breaches from Snowflake risk data, alerts the risk committee via PagerDuty, and logs a Jira risk event.
tags:
- risk
- market-risk
- snowflake
- pagerduty
- jira
capability:
exposes:
- type: mcp
namespace: market-risk
port: 8080
tools:
- name: escalate-var-breach
description: Given a trading desk, check VaR limits in Snowflake and escalate if breached.
inputParameters:
- name: desk_code
in: body
type: string
description: The trading desk code.
steps:
- name: check-var
type: call
call: snowflake.execute-statement
with:
statement: SELECT desk_code, current_var, var_limit, (current_var / var_limit * 100) as utilization_pct FROM risk.var_limits WHERE desk_code = '{{desk_code}}'
- name: alert-risk
type: call
call: pagerduty.create-incident
with:
title: 'VaR breach: desk {{desk_code}} at {{check-var.utilization_pct}}% utilization'
service_id: $secrets.risk_service_id
urgency: high
- name: log-event
type: call
call: jira.create-issue
with:
project: RISK
summary: 'VaR limit breach: {{desk_code}}'
description: 'Current VaR: {{check-var.current_var}}. Limit: {{check-var.var_limit}}. Utilization: {{check-var.utilization_pct}}%'
issuetype: Bug
priority: Critical
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: https://hsbc.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
When an employee termination is processed in Workday, deactivates the Okta account, revokes Salesforce license, and closes open ServiceNow tickets.
naftiko: '0.5'
info:
label: Okta User Deprovisioning on Termination
description: When an employee termination is processed in Workday, deactivates the Okta account, revokes Salesforce license, and closes open ServiceNow tickets.
tags:
- hr
- security
- offboarding
- workday
- okta
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: deprovision-terminated-employee
description: Given a Workday employee ID for a terminated HSBC employee, deactivate their Okta account, revoke Salesforce license, and close open ServiceNow tickets assigned to them.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the terminated employee.
steps:
- name: get-employee
type: call
call: workday-term.get-worker
with:
worker_id: '{{employee_id}}'
- name: deactivate-okta
type: call
call: okta.deactivate-user
with:
user_id: '{{get-employee.okta_user_id}}'
- name: revoke-salesforce
type: call
call: salesforce-depro.update-user
with:
user_id: '{{get-employee.salesforce_user_id}}'
is_active: 'false'
- name: close-tickets
type: call
call: servicenow-term.close-user-tickets
with:
assigned_to: '{{get-employee.servicenow_user_id}}'
consumes:
- type: http
namespace: workday-term
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /hsbc/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://hsbc.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: users
path: /users/{{user_id}}/lifecycle/deactivate
inputParameters:
- name: user_id
in: path
operations:
- name: deactivate-user
method: POST
- type: http
namespace: salesforce-depro
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: users
path: /sobjects/User/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: update-user
method: PATCH
- type: http
namespace: servicenow-term
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: assigned_to
in: query
operations:
- name: close-user-tickets
method: PATCH
Reconciles interbank payments by comparing SAP payment records with Snowflake settlement data and creating ServiceNow exceptions for mismatches.
naftiko: '0.5'
info:
label: Interbank Payment Reconciliation Workflow
description: Reconciles interbank payments by comparing SAP payment records with Snowflake settlement data and creating ServiceNow exceptions for mismatches.
tags:
- payments
- reconciliation
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: payment-recon
port: 8080
tools:
- name: reconcile-payments
description: Given a settlement date, compare SAP payments with Snowflake settlement records and log exceptions.
inputParameters:
- name: settlement_date
in: body
type: string
description: The settlement date in YYYY-MM-DD format.
steps:
- name: get-sap-payments
type: call
call: sap-erp.get-payments
with:
date: '{{settlement_date}}'
- name: get-settlement-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM payments.settlements WHERE settlement_date = '{{settlement_date}}'
- name: log-exceptions
type: call
call: servicenow.create-incident
with:
short_description: 'Payment reconciliation exceptions: {{settlement_date}}'
description: 'SAP records: {{get-sap-payments.count}}. Settlement records: {{get-settlement-data.row_count}}. Review required.'
category: payment_reconciliation
assigned_to: Payment_Operations
consumes:
- type: http
namespace: sap-erp
baseUri: https://hsbc-s4.sap.com/sap/opu/odata/sap/API_PAYMENT_RUN
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /A_PaymentRun
operations:
- name: get-payments
method: GET
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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://hsbc.service-now.com/api/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 foreign exchange rates from Bloomberg, checks against configured thresholds in Snowflake, and sends alerts to the treasury team via Teams.
naftiko: '0.5'
info:
label: FX Rate Alert and Notification
description: Monitors foreign exchange rates from Bloomberg, checks against configured thresholds in Snowflake, and sends alerts to the treasury team via Teams.
tags:
- trading
- treasury
- bloomberg
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fx-ops
port: 8080
tools:
- name: check-fx-rate-alert
description: Given a currency pair, fetch the current FX rate from Bloomberg, compare against Snowflake thresholds, and alert treasury via Teams if breached.
inputParameters:
- name: currency_pair
in: body
type: string
description: The currency pair, e.g. 'EUR/USD'.
steps:
- name: get-rate
type: call
call: bloomberg.get-fx-rate
with:
pair: '{{currency_pair}}'
- name: get-threshold
type: call
call: snowflake.execute-statement
with:
statement: SELECT upper_limit, lower_limit FROM treasury.fx_thresholds WHERE pair = '{{currency_pair}}'
- name: notify-treasury
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.treasury_channel_id
message: 'FX Alert: {{currency_pair}} at {{get-rate.mid_rate}}. Thresholds: {{get-threshold.lower_limit}} - {{get-threshold.upper_limit}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: fx-rates
path: /fx/{{pair}}
inputParameters:
- name: pair
in: path
operations:
- name: get-fx-rate
method: GET
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Runs data quality validation queries on HSBC's Snowflake risk analytics datasets and alerts the data engineering team via Microsoft Teams if quality thresholds are breached.
naftiko: '0.5'
info:
label: Snowflake Risk Data Quality Check
description: Runs data quality validation queries on HSBC's Snowflake risk analytics datasets and alerts the data engineering team via Microsoft Teams if quality thresholds are breached.
tags:
- data
- analytics
- snowflake
- microsoft-teams
- risk
- monitoring
capability:
exposes:
- type: mcp
namespace: data-risk-ops
port: 8080
tools:
- name: run-risk-data-quality-check
description: Execute a named Snowflake data quality stored procedure on HSBC risk datasets and send a Teams alert to the data engineering channel if the quality score falls below threshold.
inputParameters:
- name: check_name
in: body
type: string
description: The Snowflake stored procedure name for the risk data quality check.
- name: quality_threshold
in: body
type: number
description: Minimum acceptable quality score (0–100).
steps:
- name: run-check
type: call
call: snowflake.execute-statement
with:
statement: CALL risk_data_quality.{{check_name}}()
- name: send-alert
type: call
call: msteams-data.post-channel-message
with:
channel_id: $secrets.data_eng_channel_id
message: 'Risk data quality check {{check_name}} complete. Score: {{run-check.quality_score}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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-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: post-channel-message
method: POST
Generates a daily P&L report for HSBC global markets by querying Snowflake trading data, creating a Power BI snapshot, and distributing via Teams.
naftiko: '0.5'
info:
label: Global Markets Daily P&L Report
description: Generates a daily P&L report for HSBC global markets by querying Snowflake trading data, creating a Power BI snapshot, and distributing via Teams.
tags:
- trading
- finance
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: markets-reporting
port: 8080
tools:
- name: generate-daily-pnl
description: Given a trading date, aggregate P&L from Snowflake, refresh Power BI, and send the report to the trading desk heads.
inputParameters:
- name: trading_date
in: body
type: string
description: The trading date in YYYY-MM-DD format.
steps:
- name: aggregate-pnl
type: call
call: snowflake.execute-statement
with:
statement: SELECT desk, SUM(realized_pnl) as total_pnl, SUM(unrealized_pnl) as mark_to_market FROM trading.daily_pnl WHERE trade_date = '{{trading_date}}' GROUP BY desk
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
group_id: $secrets.trading_workspace_id
dataset_id: $secrets.pnl_dataset_id
- name: send-report
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.trading_channel_id
message: 'Daily P&L report for {{trading_date}} is ready. Desks reported: {{aggregate-pnl.row_count}}. Dashboard refreshed.'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates security incident response by querying Splunk logs, creating a PagerDuty incident, and logging a Jira security issue for HSBC cybersecurity.
naftiko: '0.5'
info:
label: Security Incident Response Orchestrator
description: Orchestrates security incident response by querying Splunk logs, creating a PagerDuty incident, and logging a Jira security issue for HSBC cybersecurity.
tags:
- security
- incident-response
- splunk
- pagerduty
- jira
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: respond-to-security-incident
description: Given a Splunk alert ID, pull event details, create a PagerDuty incident, and log a Jira security ticket.
inputParameters:
- name: alert_id
in: body
type: string
description: The Splunk alert ID.
steps:
- name: get-alert-details
type: call
call: splunk.get-alert
with:
alert_id: '{{alert_id}}'
- name: create-pd-incident
type: call
call: pagerduty.create-incident
with:
title: 'Security alert: {{get-alert-details.title}}'
service_id: $secrets.security_service_id
urgency: high
- name: create-jira-ticket
type: call
call: jira.create-issue
with:
project: SEC
summary: 'Security incident: {{get-alert-details.title}}'
description: 'Splunk alert: {{alert_id}}. Details: {{get-alert-details.description}}. PagerDuty: {{create-pd-incident.id}}'
issuetype: Bug
priority: Critical
consumes:
- type: http
namespace: splunk
baseUri: https://hsbc-splunk.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: alerts
path: /alerts/fired_alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: https://hsbc.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
Generates an account health scorecard for HSBC corporate banking clients by aggregating open opportunities, service requests, and relationship activity from Salesforce, then refreshes a Power BI dashboard.
naftiko: '0.5'
info:
label: Salesforce Client Account Health Scorecard
description: Generates an account health scorecard for HSBC corporate banking clients by aggregating open opportunities, service requests, and relationship activity from Salesforce, then refreshes a Power BI dashboard.
tags:
- sales
- customer-success
- salesforce
- power-bi
- reporting
- banking
capability:
exposes:
- type: mcp
namespace: account-health
port: 8080
tools:
- name: publish-client-scorecard
description: Given a Salesforce account ID for an HSBC corporate banking client, retrieve open pipeline, service requests, and last relationship activity, then trigger a Power BI dataset refresh for the client health dashboard.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID (18-char) for the HSBC corporate banking client.
steps:
- name: get-account-data
type: call
call: salesforce-health.get-account
with:
account_id: '{{account_id}}'
- name: get-open-cases
type: call
call: salesforce-cases.query-cases
with:
account_id: '{{account_id}}'
status: Open
- name: refresh-dashboard
type: call
call: powerbi-health.refresh-dataset
with:
dataset_id: $secrets.client_health_dataset_id
consumes:
- type: http
namespace: salesforce-health
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-cases
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /query
inputParameters:
- name: account_id
in: query
- name: status
in: query
operations:
- name: query-cases
method: GET
- type: http
namespace: powerbi-health
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refreshes
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Retrieves real-time foreign exchange rates from Refinitiv Eikon for a given currency pair, returning bid, ask, mid-rate, and timestamp.
naftiko: '0.5'
info:
label: Refinitiv Eikon FX Rate Lookup
description: Retrieves real-time foreign exchange rates from Refinitiv Eikon for a given currency pair, returning bid, ask, mid-rate, and timestamp.
tags:
- fx
- trading
- refinitiv
- market-data
capability:
exposes:
- type: mcp
namespace: fx-rates
port: 8080
tools:
- name: get-fx-rate
description: Look up the current FX rate for a currency pair from Refinitiv Eikon.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair in ISO format, e.g. GBPUSD.
call: refinitiv.get-pricing
with:
ric: '{{currency_pair}}=X'
outputParameters:
- name: bid
type: number
mapping: $.data[0].fields.BID
- name: ask
type: number
mapping: $.data[0].fields.ASK
- name: mid_rate
type: number
mapping: $.data[0].fields.MID_PRICE
- name: timestamp
type: string
mapping: $.data[0].fields.TIMESTAMP
consumes:
- type: http
namespace: refinitiv
baseUri: https://api.refinitiv.com/data/pricing/v1
authentication:
type: bearer
token: $secrets.refinitiv_token
resources:
- name: pricing
path: /views/summaries/{{ric}}
inputParameters:
- name: ric
in: path
operations:
- name: get-pricing
method: GET
Audits Palo Alto Networks firewall security policies for HSBC network segments and flags unrestricted outbound rules in ServiceNow.
naftiko: '0.5'
info:
label: Palo Alto Firewall Security Policy Audit
description: Audits Palo Alto Networks firewall security policies for HSBC network segments and flags unrestricted outbound rules in ServiceNow.
tags:
- security
- network
- palo-alto
- servicenow
- compliance
- banking
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: audit-firewall-policies
description: Query Palo Alto Networks Panorama for all security policies on the specified HSBC device group, identify policies with destination 'any' and action 'allow', and open a ServiceNow security task for each non-compliant rule.
inputParameters:
- name: device_group
in: body
type: string
description: The Palo Alto Panorama device group name for the HSBC network segment to audit.
steps:
- name: get-policies
type: call
call: paloalto.list-security-policies
with:
device_group: '{{device_group}}'
- name: create-audit-task
type: call
call: servicenow-net.create-incident
with:
short_description: 'Firewall audit: {{get-policies.unrestricted_count}} unrestricted rules in {{device_group}}'
description: 'Device group: {{device_group}}
Policies with unrestricted outbound: {{get-policies.unrestricted_count}}'
category: network_security
priority: '1'
consumes:
- type: http
namespace: paloalto
baseUri: https://hsbc-panorama.hsbc.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: security-policies
path: /Objects/SecurityRules
inputParameters:
- name: device_group
in: query
operations:
- name: list-security-policies
method: GET
- type: http
namespace: servicenow-net
baseUri: https://hsbc.service-now.com/api/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 talent acquisition pipeline data from Workday Recruiting to Salesforce and generates a weekly hiring digest for HR leaders via Teams.
naftiko: '0.5'
info:
label: Talent Acquisition Pipeline Sync
description: Syncs talent acquisition pipeline data from Workday Recruiting to Salesforce and generates a weekly hiring digest for HR leaders via Teams.
tags:
- hr
- recruiting
- workday
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recruiting-ops
port: 8080
tools:
- name: sync-recruiting-pipeline
description: Pull open requisitions from Workday Recruiting, sync candidate counts to Salesforce, and send a digest to HR leadership.
inputParameters:
- name: department
in: body
type: string
description: Department to filter recruiting pipeline.
steps:
- name: get-requisitions
type: call
call: workday.get-requisitions
with:
department: '{{department}}'
- name: update-salesforce
type: call
call: salesforce.update-recruiting-dashboard
with:
department: '{{department}}'
open_reqs: '{{get-requisitions.count}}'
total_candidates: '{{get-requisitions.total_candidates}}'
- name: send-digest
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.hr_leadership_channel_id
message: 'Recruiting pipeline for {{department}}: {{get-requisitions.count}} open reqs, {{get-requisitions.total_candidates}} candidates in pipeline.'
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: /hsbc/recruiting/requisitions
operations:
- name: get-requisitions
method: GET
- type: http
namespace: salesforce
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: recruiting
path: /sobjects/Recruiting_Dashboard__c
operations:
- name: update-recruiting-dashboard
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Processes GDPR subject access requests by searching Snowflake for customer data, generating a report, and creating a ServiceNow tracking case.
naftiko: '0.5'
info:
label: Data Privacy Subject Access Request
description: Processes GDPR subject access requests by searching Snowflake for customer data, generating a report, and creating a ServiceNow tracking case.
tags:
- compliance
- privacy
- gdpr
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: privacy-ops
port: 8080
tools:
- name: process-sar
description: Given a customer email, search all data stores for personal data, generate a report, and track in ServiceNow.
inputParameters:
- name: customer_email
in: body
type: string
description: The customer email address for the SAR.
steps:
- name: search-data
type: call
call: snowflake.execute-statement
with:
statement: CALL privacy.subject_access_search('{{customer_email}}')
- name: create-case
type: call
call: servicenow.create-case
with:
short_description: 'SAR: {{customer_email}}'
description: 'Records found: {{search-data.record_count}}. Data categories: {{search-data.categories}}'
category: data_privacy
- name: notify-dpo
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.privacy_channel_id
message: 'SAR processed for {{customer_email}}. {{search-data.record_count}} records found. Case: {{create-case.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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://hsbc.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-message
method: POST
When an employee's role changes in Workday, updates their Salesforce profile, adjusts Okta group memberships, and notifies the manager via Teams.
naftiko: '0.5'
info:
label: Workday Role Change Propagation
description: When an employee's role changes in Workday, updates their Salesforce profile, adjusts Okta group memberships, and notifies the manager via Teams.
tags:
- hr
- identity
- workday
- okta
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: propagate-role-change
description: Given a Workday employee ID and new role, update the employee's Salesforce profile, adjust Okta group memberships for the new access level, and notify their manager via Microsoft Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the HSBC employee whose role changed.
- name: new_role
in: body
type: string
description: The new job role or title as defined in Workday.
steps:
- name: get-employee
type: call
call: workday-role.get-worker
with:
worker_id: '{{employee_id}}'
- name: update-salesforce-profile
type: call
call: salesforce-role.update-user
with:
user_id: '{{get-employee.salesforce_user_id}}'
title: '{{new_role}}'
- name: update-okta-groups
type: call
call: okta-role.update-user-groups
with:
user_id: '{{get-employee.okta_user_id}}'
role: '{{new_role}}'
- name: notify-manager
type: call
call: msteams-role.send-message
with:
recipient: '{{get-employee.manager_email}}'
message: '{{get-employee.full_name}} has been updated to {{new_role}} in Salesforce and Okta.'
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: /hsbc/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: salesforce-role
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: users
path: /sobjects/User/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: update-user
method: PATCH
- type: http
namespace: okta-role
baseUri: https://hsbc.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: user-groups
path: /users/{{user_id}}/groups
inputParameters:
- name: user_id
in: path
operations:
- name: update-user-groups
method: PUT
- type: http
namespace: msteams-role
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient}}/sendMail
inputParameters:
- name: recipient
in: path
operations:
- name: send-message
method: POST
Generates pre-meeting client briefs by pulling Salesforce account data, Bloomberg market context, and summarizing via AI for HSBC relationship managers.
naftiko: '0.5'
info:
label: Relationship Manager Client Brief Generator
description: Generates pre-meeting client briefs by pulling Salesforce account data, Bloomberg market context, and summarizing via AI for HSBC relationship managers.
tags:
- banking
- crm
- salesforce
- bloomberg
- anthropic
capability:
exposes:
- type: mcp
namespace: rm-ops
port: 8080
tools:
- name: generate-client-brief
description: Given a Salesforce account ID, pull client data, market context, and generate an AI-powered meeting brief.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
steps:
- name: get-client
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: get-market-data
type: call
call: bloomberg.get-company-data
with:
company: '{{get-client.Name}}'
- name: generate-brief
type: call
call: anthropic.create-message
with:
model: claude-sonnet-4-20250514
message: 'Generate a concise client meeting brief for {{get-client.Name}}. Revenue: {{get-client.AnnualRevenue}}. Industry: {{get-client.Industry}}. Market data: {{get-market-data.summary}}. Recent interactions: {{get-client.Last_Activity__c}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.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: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: companies
path: /company/{{company}}
inputParameters:
- name: company
in: path
operations:
- name: get-company-data
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
Orchestrates mortgage document verification by extracting document data via AI, validating against Salesforce application records, and updating the case status.
naftiko: '0.5'
info:
label: Mortgage Document Verification Workflow
description: Orchestrates mortgage document verification by extracting document data via AI, validating against Salesforce application records, and updating the case status.
tags:
- banking
- mortgage
- anthropic
- salesforce
- document-processing
capability:
exposes:
- type: mcp
namespace: mortgage-ops
port: 8080
tools:
- name: verify-mortgage-documents
description: Given a Salesforce case ID with uploaded mortgage documents, extract key fields via AI, validate against application data, and update the case.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce case ID for the mortgage application.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: extract-documents
type: call
call: anthropic.create-message
with:
model: claude-sonnet-4-20250514
message: 'Extract key mortgage fields (income, property value, loan amount) from the following document: {{get-case.Document_Text__c}}'
- name: update-case
type: call
call: salesforce.update-case
with:
case_id: '{{case_id}}'
Status: Documents Verified
Verification_Notes__c: 'AI extraction complete: {{extract-documents.content}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case/{{case_id}}
inputParameters:
- name: case_id
in: path
operations:
- name: get-case
method: GET
- name: update-case
method: PATCH
- 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
Generates a regulatory report by querying Snowflake for compliance data, summarizing with Anthropic AI, and posting to Confluence for HSBC regulatory teams.
naftiko: '0.5'
info:
label: Regulatory Report Generation Workflow
description: Generates a regulatory report by querying Snowflake for compliance data, summarizing with Anthropic AI, and posting to Confluence for HSBC regulatory teams.
tags:
- compliance
- regulatory
- snowflake
- anthropic
- confluence
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: generate-regulatory-report
description: Given a report type and date range, query compliance data from Snowflake, generate an AI summary, and publish to Confluence.
inputParameters:
- name: report_type
in: body
type: string
description: The regulatory report type (e.g., 'Basel III', 'MiFID II').
- name: period_end
in: body
type: string
description: Report period end date in YYYY-MM-DD format.
steps:
- name: query-data
type: call
call: snowflake.execute-statement
with:
statement: CALL compliance.generate_{{report_type}}_data('{{period_end}}')
- name: summarize
type: call
call: anthropic.create-message
with:
model: claude-sonnet-4-20250514
message: 'Summarize the following regulatory data for a {{report_type}} compliance report: {{query-data.results}}'
- name: publish-report
type: call
call: confluence.create-page
with:
space_key: COMPLIANCE
title: '{{report_type}} Report - {{period_end}}'
body: '{{summarize.content}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.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: 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://hsbc.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
Handles API gateway rate limit breaches by pulling Datadog metrics, creating a Jira investigation ticket, and notifying the platform team via Teams.
naftiko: '0.5'
info:
label: API Gateway Rate Limit Breach Handler
description: Handles API gateway rate limit breaches by pulling Datadog metrics, creating a Jira investigation ticket, and notifying the platform team via Teams.
tags:
- api-management
- monitoring
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: api-ops
port: 8080
tools:
- name: handle-rate-limit-breach
description: Given a Datadog monitor ID for rate limit breaches, pull metrics, create a Jira ticket, and notify the platform team.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: PLATFORM
summary: 'API rate limit breach: {{get-monitor.name}}'
description: 'Monitor: {{monitor_id}}. Status: {{get-monitor.overall_state}}. Message: {{get-monitor.message}}'
issuetype: Task
priority: High
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.platform_channel_id
message: 'API rate limit breach detected: {{get-monitor.name}}. Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: jira
baseUri: https://hsbc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates DR failover testing by triggering Terraform DR workspace, verifying health via Datadog, and reporting results in Confluence.
naftiko: '0.5'
info:
label: Disaster Recovery Failover Test
description: Orchestrates DR failover testing by triggering Terraform DR workspace, verifying health via Datadog, and reporting results in Confluence.
tags:
- disaster-recovery
- infrastructure
- terraform
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: dr-ops
port: 8080
tools:
- name: run-dr-failover-test
description: Trigger a DR failover test via Terraform, verify health checks in Datadog, and publish results to Confluence.
inputParameters:
- name: dr_workspace
in: body
type: string
description: The Terraform workspace for DR failover.
- name: service_name
in: body
type: string
description: The service to test failover for.
steps:
- name: trigger-failover
type: call
call: terraform.create-run
with:
workspace_name: '{{dr_workspace}}'
message: DR failover test for {{service_name}}
- name: check-health
type: call
call: datadog.get-service-summary
with:
service: '{{service_name}}'
- name: publish-results
type: call
call: confluence.create-page
with:
space_key: DR
title: 'DR Test: {{service_name}} - {{dr_workspace}}'
body: 'Failover status: {{trigger-failover.status}}. Health check: {{check-health.status}}. Error rate: {{check-health.error_rate}}'
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /runs
operations:
- name: create-run
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: services
path: /services/{{service}}
inputParameters:
- name: service
in: path
operations:
- name: get-service-summary
method: GET
- type: http
namespace: confluence
baseUri: https://hsbc.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 employee offboarding by deactivating Okta access, closing ServiceNow tickets, and notifying HR via Teams when an HSBC employee departs.
naftiko: '0.5'
info:
label: Employee Offboarding Access Revocation
description: Orchestrates employee offboarding by deactivating Okta access, closing ServiceNow tickets, and notifying HR via Teams when an HSBC employee departs.
tags:
- hr
- offboarding
- okta
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: process-offboarding
description: Given a Workday worker ID, deactivate the employee in Okta, create an offboarding ServiceNow ticket, and notify HR via Teams.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID of the departing employee.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
- name: deactivate-okta
type: call
call: okta.deactivate-user
with:
user_login: '{{get-employee.work_email}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Offboarding: {{get-employee.full_name}}'
category: hr_offboarding
assigned_to: IT_Offboarding
- name: notify-hr
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.hr_channel_id
message: 'Offboarding initiated for {{get-employee.full_name}}. Okta deactivated. ServiceNow ticket: {{create-ticket.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /hsbc/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://hsbc.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
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://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Screens high-value transactions for anti-money laundering compliance by querying Snowflake transaction data, running AML checks, and alerting the compliance team via Teams.
naftiko: '0.5'
info:
label: AML Transaction Screening Orchestrator
description: Screens high-value transactions for anti-money laundering compliance by querying Snowflake transaction data, running AML checks, and alerting the compliance team via Teams.
tags:
- compliance
- aml
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: aml-screening
port: 8080
tools:
- name: screen-transaction
description: Given a transaction reference, pull transaction details from Snowflake, run AML screening, and alert compliance via Teams if flagged.
inputParameters:
- name: transaction_ref
in: body
type: string
description: The transaction reference number.
steps:
- name: get-transaction
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM banking.transactions WHERE ref = '{{transaction_ref}}'
- name: screen-aml
type: call
call: aml-service.screen
with:
amount: '{{get-transaction.amount}}'
counterparty: '{{get-transaction.counterparty}}'
country: '{{get-transaction.country}}'
- name: notify-compliance
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.compliance_channel_id
message: 'AML screening for {{transaction_ref}}: {{screen-aml.result}} (score: {{screen-aml.risk_score}})'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: aml-service
baseUri: https://aml-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.aml_token
resources:
- name: screening
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 mandatory training completion in Workday Learning, creates ServiceNow follow-up tasks for non-compliant employees, and reports to HR via Teams.
naftiko: '0.5'
info:
label: Employee Training Compliance Tracker
description: Checks mandatory training completion in Workday Learning, creates ServiceNow follow-up tasks for non-compliant employees, and reports to HR via Teams.
tags:
- hr
- training
- compliance
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: training-ops
port: 8080
tools:
- name: check-training-compliance
description: Given a training program ID, check completion status in Workday, create tasks for overdue employees, and report to HR.
inputParameters:
- name: program_id
in: body
type: string
description: The Workday training program ID.
steps:
- name: get-completion
type: call
call: workday.get-training-status
with:
program_id: '{{program_id}}'
- name: create-followup
type: call
call: servicenow.create-request
with:
short_description: 'Training compliance follow-up: {{program_id}}'
description: 'Overdue: {{get-completion.overdue_count}} employees. Program: {{get-completion.program_name}}'
category: hr_training
assigned_to: HR_Learning
- name: notify-hr
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.hr_channel_id
message: 'Training compliance: {{get-completion.program_name}}. Completed: {{get-completion.completed_count}}. Overdue: {{get-completion.overdue_count}}. Task: {{create-followup.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: training
path: /hsbc/learning/programs/{{program_id}}/status
inputParameters:
- name: program_id
in: path
operations:
- name: get-training-status
method: GET
- type: http
namespace: servicenow
baseUri: https://hsbc.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Processes firewall rule change requests by creating a ServiceNow change ticket, validating against Palo Alto policy, and notifying the network security team.
naftiko: '0.5'
info:
label: Network Firewall Rule Change Workflow
description: Processes firewall rule change requests by creating a ServiceNow change ticket, validating against Palo Alto policy, and notifying the network security team.
tags:
- security
- network
- servicenow
- palo-alto
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: request-firewall-change
description: Given firewall rule details, create a ServiceNow change request and validate against existing Palo Alto policy.
inputParameters:
- name: source_ip
in: body
type: string
description: Source IP or subnet.
- name: destination_ip
in: body
type: string
description: Destination IP or subnet.
- name: port
in: body
type: string
description: Port number.
- name: action
in: body
type: string
description: Allow or deny.
steps:
- name: check-existing
type: call
call: paloalto.get-rules
with:
source: '{{source_ip}}'
destination: '{{destination_ip}}'
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: 'Firewall rule change: {{source_ip}} -> {{destination_ip}}:{{port}} ({{action}})'
description: 'Existing rules: {{check-existing.count}}. Requested: {{action}} from {{source_ip}} to {{destination_ip}} on port {{port}}'
category: network_security
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.network_security_channel_id
message: 'Firewall change request: {{source_ip}} -> {{destination_ip}}:{{port}}. Change: {{create-change.number}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.hsbc.com/restapi/v10.2
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: rules
path: /Policies/SecurityRules
operations:
- name: get-rules
method: GET
- type: http
namespace: servicenow
baseUri: https://hsbc.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/{{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 Informatica IICS pipeline run status for HSBC financial data pipelines and alerts the data engineering team via Teams if any pipelines have failed.
naftiko: '0.5'
info:
label: Informatica Data Pipeline Monitoring
description: Checks Informatica IICS pipeline run status for HSBC financial data pipelines and alerts the data engineering team via Teams if any pipelines have failed.
tags:
- data
- monitoring
- informatica
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: data-pipeline-ops
port: 8080
tools:
- name: monitor-informatica-pipelines
description: List recent Informatica IICS pipeline runs for HSBC financial data workflows, identify failures in the last hour, and send an alert to the data engineering Teams channel.
inputParameters:
- name: org_id
in: body
type: string
description: The Informatica IICS organization ID for the HSBC environment.
steps:
- name: get-failed-runs
type: call
call: informatica.list-activity-log
with:
org_id: '{{org_id}}'
status: FAILED
- name: send-alert
type: call
call: msteams-informatica.post-channel-message
with:
channel_id: $secrets.data_eng_channel_id
message: 'HSBC Informatica alert: {{get-failed-runs.count}} pipelines failed. First failure: {{get-failed-runs.first_pipeline_name}}'
consumes:
- type: http
namespace: informatica
baseUri: https://usw3.dm-us.informaticacloud.com/saas/public/core/v3
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: activity-log
path: /activityLog
inputParameters:
- name: status
in: query
operations:
- name: list-activity-log
method: GET
- type: http
namespace: msteams-informatica
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Creates a new Terraform Cloud workspace for an HSBC technology team, applies the standard compliance variable set, and notifies via Teams.
naftiko: '0.5'
info:
label: Terraform Cloud Infrastructure Workspace Provisioner
description: Creates a new Terraform Cloud workspace for an HSBC technology team, applies the standard compliance variable set, and notifies via Teams.
tags:
- cloud
- infrastructure
- terraform
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: provision-terraform-workspace
description: Given a team name and environment, create a Terraform Cloud workspace for an HSBC technology team, apply the standard compliance variable set, and notify the team channel in Microsoft Teams.
inputParameters:
- name: team_name
in: body
type: string
description: The technology team name, used as the workspace prefix.
- name: environment
in: body
type: string
description: 'The target environment: dev, staging, or prod.'
- name: teams_channel_id
in: body
type: string
description: The Microsoft Teams channel ID to notify upon completion.
steps:
- name: create-workspace
type: call
call: terraform.create-workspace
with:
name: '{{team_name}}-{{environment}}'
organization: hsbc
- name: assign-varset
type: call
call: terraform-varset.assign-variable-set
with:
workspace_id: '{{create-workspace.workspace_id}}'
varset_id: $secrets.terraform_compliance_varset_id
- name: notify-team
type: call
call: msteams-infra.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
message: 'Workspace {{team_name}}-{{environment}} created in Terraform Cloud. ID: {{create-workspace.workspace_id}}'
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: workspaces
path: /organizations/hsbc/workspaces
operations:
- name: create-workspace
method: POST
- type: http
namespace: terraform-varset
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: variable-set-workspaces
path: /varsets/{{varset_id}}/relationships/workspaces
inputParameters:
- name: varset_id
in: path
operations:
- name: assign-variable-set
method: POST
- type: http
namespace: msteams-infra
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Aggregates daily cash positions from Snowflake across HSBC entities, generates a Power BI refresh, and sends the treasury summary to the CFO via Teams.
naftiko: '0.5'
info:
label: Treasury Cash Position Reporting
description: Aggregates daily cash positions from Snowflake across HSBC entities, generates a Power BI refresh, and sends the treasury summary to the CFO via Teams.
tags:
- treasury
- finance
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: treasury-reporting
port: 8080
tools:
- name: generate-cash-position-report
description: Given a reporting date, aggregate cash positions from Snowflake, trigger Power BI refresh, and notify the treasury team.
inputParameters:
- name: report_date
in: body
type: string
description: The reporting date in YYYY-MM-DD format.
steps:
- name: get-positions
type: call
call: snowflake.execute-statement
with:
statement: SELECT entity, currency, SUM(balance) as total_balance FROM treasury.cash_positions WHERE position_date = '{{report_date}}' GROUP BY entity, currency
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
group_id: $secrets.treasury_workspace_id
dataset_id: $secrets.cash_position_dataset_id
- name: notify-treasury
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.treasury_channel_id
message: 'Daily cash position report for {{report_date}} is ready. Power BI dashboard refreshed. Total entities reported: {{get-positions.row_count}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates corporate client onboarding document collection by creating a Salesforce opportunity, sending DocuSign envelopes, and tracking in ServiceNow.
naftiko: '0.5'
info:
label: Client Onboarding Document Collection
description: Orchestrates corporate client onboarding document collection by creating a Salesforce opportunity, sending DocuSign envelopes, and tracking in ServiceNow.
tags:
- banking
- onboarding
- salesforce
- docusign
- servicenow
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: initiate-document-collection
description: Given a Salesforce opportunity ID, send DocuSign envelopes for required documents and create a ServiceNow tracking ticket.
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: send-envelope
type: call
call: docusign.create-envelope
with:
recipient_email: '{{get-opportunity.Contact_Email__c}}'
recipient_name: '{{get-opportunity.Contact_Name__c}}'
template_id: $secrets.onboarding_template_id
- name: create-tracker
type: call
call: servicenow.create-request
with:
short_description: 'Client onboarding docs: {{get-opportunity.Name}}'
description: 'DocuSign envelope: {{send-envelope.envelopeId}}. Opportunity: {{opportunity_id}}'
category: client_onboarding
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.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: docusign
baseUri: https://na4.docusign.net/restapi/v2.1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /accounts/$secrets.docusign_account_id/envelopes
operations:
- name: create-envelope
method: POST
- type: http
namespace: servicenow
baseUri: https://hsbc.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
Performs quarterly privileged access reviews by pulling Okta admin users, cross-referencing with Workday active employees, and creating ServiceNow review tasks.
naftiko: '0.5'
info:
label: Privileged Access Review Orchestrator
description: Performs quarterly privileged access reviews by pulling Okta admin users, cross-referencing with Workday active employees, and creating ServiceNow review tasks.
tags:
- security
- access-review
- okta
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-privileged-access-review
description: Pull all Okta admin users, verify against Workday active employees, and create ServiceNow tasks for any discrepancies.
inputParameters:
- name: review_period
in: body
type: string
description: The review period label, e.g. 'Q1-2026'.
steps:
- name: get-admin-users
type: call
call: okta.list-admin-users
with:
filter: status eq "ACTIVE"
- name: verify-employment
type: call
call: workday.get-active-workers
with:
as_of_date: '2026-03-27'
- name: create-review-task
type: call
call: servicenow.create-request
with:
short_description: 'Privileged access review: {{review_period}}'
description: 'Admin users: {{get-admin-users.count}}. Active employees: {{verify-employment.count}}. Review discrepancies.'
category: security_review
assigned_to: Security_Governance
consumes:
- type: http
namespace: okta
baseUri: https://hsbc.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: users
path: /users
operations:
- name: list-admin-users
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: /hsbc/workers
operations:
- name: get-active-workers
method: GET
- type: http
namespace: servicenow
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
Processes letter of credit applications by creating a Salesforce case, validating documents via AI, and notifying trade finance operations via Teams.
naftiko: '0.5'
info:
label: Trade Finance Letter of Credit Processor
description: Processes letter of credit applications by creating a Salesforce case, validating documents via AI, and notifying trade finance operations via Teams.
tags:
- trade-finance
- banking
- salesforce
- anthropic
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-finance
port: 8080
tools:
- name: process-letter-of-credit
description: Given a trade finance application, validate LC documents, create a Salesforce case, and notify operations.
inputParameters:
- name: applicant_name
in: body
type: string
description: The applicant company name.
- name: lc_amount
in: body
type: string
description: The letter of credit amount and currency.
- name: document_text
in: body
type: string
description: The extracted text from LC documents.
steps:
- name: validate-docs
type: call
call: anthropic.create-message
with:
model: claude-sonnet-4-20250514
message: 'Validate the following letter of credit document for completeness and compliance: {{document_text}}'
- name: create-case
type: call
call: salesforce.create-case
with:
Subject: 'LC Application: {{applicant_name}} - {{lc_amount}}'
Description: 'Validation: {{validate-docs.content}}'
Priority: High
- name: notify-ops
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.trade_finance_channel_id
message: 'LC application: {{applicant_name}} for {{lc_amount}}. Case: {{create-case.CaseNumber}}. Validation: {{validate-docs.content}}'
consumes:
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: create-message
method: POST
- type: http
namespace: salesforce
baseUri: https://hsbc.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_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates feature flag rollouts for HSBC digital banking by updating the feature management API, monitoring via Datadog, and notifying the product team.
naftiko: '0.5'
info:
label: Digital Banking Feature Flag Rollout
description: Orchestrates feature flag rollouts for HSBC digital banking by updating the feature management API, monitoring via Datadog, and notifying the product team.
tags:
- digital-banking
- devops
- feature-flags
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: feature-ops
port: 8080
tools:
- name: rollout-feature-flag
description: Given a feature flag name and rollout percentage, update the flag, monitor error rates, and notify the product team.
inputParameters:
- name: flag_name
in: body
type: string
description: The feature flag name.
- name: rollout_pct
in: body
type: number
description: Rollout percentage (0-100).
steps:
- name: update-flag
type: call
call: feature-api.update-flag
with:
flag: '{{flag_name}}'
percentage: '{{rollout_pct}}'
- name: check-errors
type: call
call: datadog.get-service-summary
with:
service: digital-banking-app
- name: notify-product
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.product_channel_id
message: 'Feature flag {{flag_name}} rolled out to {{rollout_pct}}%. Error rate: {{check-errors.error_rate}}%'
consumes:
- type: http
namespace: feature-api
baseUri: https://feature-flags.hsbc.com/api/v1
authentication:
type: bearer
token: $secrets.feature_flag_token
resources:
- name: flags
path: /flags/{{flag}}
inputParameters:
- name: flag
in: path
operations:
- name: update-flag
method: PATCH
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: services
path: /services/{{service}}
inputParameters:
- name: service
in: path
operations:
- name: get-service-summary
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Orchestrates loan application intake by creating a Salesforce opportunity, running credit scoring, and notifying the lending team via Teams.
naftiko: '0.5'
info:
label: Loan Application Processing Orchestrator
description: Orchestrates loan application intake by creating a Salesforce opportunity, running credit scoring, and notifying the lending team via Teams.
tags:
- banking
- lending
- salesforce
- microsoft-teams
- credit
capability:
exposes:
- type: mcp
namespace: lending-ops
port: 8080
tools:
- name: process-loan-application
description: Given applicant details and loan amount, create a Salesforce opportunity, run credit scoring, and notify the lending team.
inputParameters:
- name: applicant_name
in: body
type: string
description: The applicant full name.
- name: loan_amount
in: body
type: number
description: Requested loan amount.
- name: loan_type
in: body
type: string
description: Type of loan (mortgage, personal, business).
steps:
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
Name: Loan Application - {{applicant_name}}
Amount: '{{loan_amount}}'
StageName: Application Received
Type: '{{loan_type}}'
- name: run-credit-check
type: call
call: credit-service.score
with:
applicant_name: '{{applicant_name}}'
loan_amount: '{{loan_amount}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.lending_channel_id
message: 'New loan application: {{applicant_name}} for {{loan_amount}}. Credit score: {{run-credit-check.score}}. Opportunity: {{create-opportunity.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.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: credit-service
baseUri: https://credit-api.hsbc.com/v1
authentication:
type: bearer
token: $secrets.credit_token
resources:
- name: scoring
path: /score
operations:
- name: score
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 current trade positions from the Murex trading platform for a given portfolio, returning notional amounts, mark-to-market values, and counterparty exposure.
naftiko: '0.5'
info:
label: Murex Trade Position Lookup
description: Retrieves current trade positions from the Murex trading platform for a given portfolio, returning notional amounts, mark-to-market values, and counterparty exposure.
tags:
- trading
- murex
- risk
- positions
capability:
exposes:
- type: mcp
namespace: murex-positions
port: 8080
tools:
- name: get-trade-positions
description: Look up current trade positions for a portfolio in Murex.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Murex portfolio identifier.
- name: as_of_date
in: body
type: string
description: Position date in YYYY-MM-DD format.
call: murex.get-positions
with:
portfolio_id: '{{portfolio_id}}'
as_of_date: '{{as_of_date}}'
outputParameters:
- name: positions
type: array
mapping: $.data.positions
- name: total_notional
type: number
mapping: $.data.totalNotional
- name: total_mtm
type: number
mapping: $.data.totalMtM
consumes:
- type: http
namespace: murex
baseUri: https://murex.hsbc.com/api/v1
authentication:
type: bearer
token: $secrets.murex_api_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions?asOfDate={{as_of_date}}
inputParameters:
- name: portfolio_id
in: path
- name: as_of_date
in: query
operations:
- name: get-positions
method: GET
Processes customer account closures by updating Salesforce, initiating SAP final settlement, and sending confirmation email via Microsoft Graph.
naftiko: '0.5'
info:
label: Customer Account Closure Workflow
description: Processes customer account closures by updating Salesforce, initiating SAP final settlement, and sending confirmation email via Microsoft Graph.
tags:
- banking
- account-management
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: account-ops
port: 8080
tools:
- name: close-customer-account
description: Given a Salesforce account ID and closure reason, update CRM, trigger SAP final settlement, and send confirmation.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
- name: closure_reason
in: body
type: string
description: Reason for account closure.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: update-salesforce
type: call
call: salesforce.update-account
with:
account_id: '{{account_id}}'
Status__c: Closed
Closure_Reason__c: '{{closure_reason}}'
- name: send-confirmation
type: call
call: msgraph.send-mail
with:
recipient: '{{get-account.Contact_Email__c}}'
subject: 'HSBC: Account Closure Confirmation'
body: 'Dear {{get-account.Name}}, your account has been closed per your request. Reason: {{closure_reason}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://hsbc.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: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/$secrets.service_email/sendMail
operations:
- name: send-mail
method: POST
Runs liquidity stress test scenarios from Snowflake, generates a report via Confluence, and alerts treasury leadership via Teams.
naftiko: '0.5'
info:
label: Liquidity Stress Test Runner
description: Runs liquidity stress test scenarios from Snowflake, generates a report via Confluence, and alerts treasury leadership via Teams.
tags:
- treasury
- risk
- liquidity
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: liquidity-ops
port: 8080
tools:
- name: run-liquidity-stress-test
description: Given a stress scenario name, execute the scenario in Snowflake, publish results to Confluence, and notify treasury.
inputParameters:
- name: scenario_name
in: body
type: string
description: The stress test scenario name.
steps:
- name: run-scenario
type: call
call: snowflake.execute-statement
with:
statement: CALL risk.run_liquidity_stress('{{scenario_name}}')
- name: publish-results
type: call
call: confluence.create-page
with:
space_key: TREASURY
title: 'Liquidity Stress Test: {{scenario_name}}'
body: 'Scenario: {{scenario_name}}. LCR: {{run-scenario.lcr}}%. NSFR: {{run-scenario.nsfr}}%. Survival days: {{run-scenario.survival_days}}'
- name: notify-treasury
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.treasury_channel_id
message: 'Liquidity stress test complete: {{scenario_name}}. LCR: {{run-scenario.lcr}}%. Results published to Confluence.'
consumes:
- type: http
namespace: snowflake
baseUri: https://hsbc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: confluence
baseUri: https://hsbc.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
Fetches sprint velocity metrics from Jira for an HSBC technology team and publishes a digest to Confluence and a Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Velocity Report to Confluence
description: Fetches sprint velocity metrics from Jira for an HSBC technology team and publishes a digest to Confluence and a Teams channel.
tags:
- devops
- reporting
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: publish-sprint-velocity-report
description: Given a Jira board ID and sprint ID, retrieve completed story points, update the HSBC team Confluence velocity page, and post a summary to the Microsoft Teams engineering channel.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira board ID for the HSBC technology team.
- name: sprint_id
in: body
type: string
description: The Jira sprint ID to report on.
steps:
- name: get-sprint-report
type: call
call: jira-agile.get-sprint-report
with:
board_id: '{{board_id}}'
sprint_id: '{{sprint_id}}'
- name: update-confluence
type: call
call: confluence.update-page
with:
page_id: $secrets.velocity_confluence_page_id
content: 'Sprint {{sprint_id}} Velocity: {{get-sprint-report.completed_points}} points.'
- name: notify-team
type: call
call: msteams-agile.post-channel-message
with:
channel_id: $secrets.engineering_channel_id
message: 'Sprint {{sprint_id}} complete. Velocity: {{get-sprint-report.completed_points}} pts.'
consumes:
- type: http
namespace: jira-agile
baseUri: https://hsbc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: sprint-reports
path: /board/{{board_id}}/sprint/{{sprint_id}}/report
inputParameters:
- name: board_id
in: path
- name: sprint_id
in: path
operations:
- name: get-sprint-report
method: GET
- type: http
namespace: confluence
baseUri: https://hsbc.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
- type: http
namespace: msteams-agile
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When Datadog detects a latency spike or error rate anomaly on an HSBC banking API, creates a ServiceNow incident and notifies the platform engineering team.
naftiko: '0.5'
info:
label: Datadog Banking API Observability Alert
description: When Datadog detects a latency spike or error rate anomaly on an HSBC banking API, creates a ServiceNow incident and notifies the platform engineering team.
tags:
- observability
- monitoring
- datadog
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: api-ops
port: 8080
tools:
- name: handle-api-anomaly
description: Given a Datadog monitor ID that fired on an HSBC banking API, retrieve alert details, open a ServiceNow incident, and notify the platform engineering channel in Microsoft Teams.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that triggered the anomaly alert.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'API anomaly detected: {{get-monitor.name}}'
description: 'Monitor: {{get-monitor.name}}
Status: {{get-monitor.overall_state}}
API: {{get-monitor.tags}}'
category: banking_api
- name: notify-platform
type: call
call: msteams-platform.post-channel-message
with:
channel_id: $secrets.platform_channel_id
message: 'API anomaly: {{get-monitor.name}} | SNOW: {{create-incident.number}} | State: {{get-monitor.overall_state}}'
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-api
baseUri: https://hsbc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-platform
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{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 credit ratings from Moody's for counterparty risk assessment.
naftiko: '0.5'
info:
label: Moody's Credit Rating Lookup
description: Retrieves credit ratings from Moody's for counterparty risk assessment.
tags:
- risk
- compliance
- moodys
capability:
exposes:
- type: mcp
namespace: credit-ratings
port: 8080
tools:
- name: get-credit-rating
description: Look up a counterparty credit rating from Moody's.
inputParameters:
- name: entity_id
in: body
type: string
description: Moody's entity ID.
call: moodys.get-rating
with:
entity_id: '{{entity_id}}'
outputParameters:
- name: rating
type: string
mapping: $.rating
- name: outlook
type: string
mapping: $.outlook
consumes:
- type: http
namespace: moodys
baseUri: https://api.moodys.com/v1
authentication:
type: bearer
token: $secrets.moodys_token
resources:
- name: ratings
path: /entities/{{entity_id}}/ratings
inputParameters:
- name: entity_id
in: path
operations:
- name: get-rating
method: GET
Processes a SEPA batch payment file by validating the file format, screening all payments against sanctions, executing the batch in Temenos, and sending settlement confirmation via the corporate portal.
naftiko: '0.5'
info:
label: SEPA Batch Payment Processing Pipeline
description: Processes a SEPA batch payment file by validating the file format, screening all payments against sanctions, executing the batch in Temenos, and sending settlement confirmation via the corporate portal.
tags:
- payments
- sepa
- temenos-transact
- compliance
capability:
exposes:
- type: mcp
namespace: sepa-batch
port: 8080
tools:
- name: process-batch
description: Process a SEPA batch payment file.
inputParameters:
- name: batch_id
in: body
type: string
description: The batch file identifier.
- name: corporate_id
in: body
type: string
description: The corporate client ID.
steps:
- name: validate-file
type: call
call: payment-hub.validate-batch
with:
batch_id: '{{batch_id}}'
- name: screen-sanctions
type: call
call: compliance.screen-batch
with:
batch_id: '{{batch_id}}'
payment_count: '{{validate-file.payment_count}}'
- name: execute-batch
type: call
call: temenos.execute-batch-payment
with:
batch_id: '{{batch_id}}'
corporate_id: '{{corporate_id}}'
- name: confirm-settlement
type: call
call: corporate-portal.send-confirmation
with:
corporate_id: '{{corporate_id}}'
batch_id: '{{batch_id}}'
total_amount: '{{execute-batch.total_amount}}'
payment_count: '{{validate-file.payment_count}}'
consumes:
- type: http
namespace: payment-hub
baseUri: https://payment-hub.ing.com/api/v1
authentication:
type: bearer
token: $secrets.payment_hub_token
resources:
- name: batches
path: /batches/validate
operations:
- name: validate-batch
method: POST
- type: http
namespace: compliance
baseUri: https://compliance-screening.ing.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: batch-screening
path: /sanctions/screen-batch
operations:
- name: screen-batch
method: POST
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: batch-payments
path: /payments/batch/execute
operations:
- name: execute-batch-payment
method: POST
- type: http
namespace: corporate-portal
baseUri: https://corporate.ing.com/api/v1
authentication:
type: bearer
token: $secrets.corporate_portal_token
resources:
- name: confirmations
path: /confirmations/send
operations:
- name: send-confirmation
method: POST
Creates a job posting on LinkedIn from Workday requisition data and notifies recruiters.
naftiko: '0.5'
info:
label: LinkedIn Job Posting Publisher
description: Creates a job posting on LinkedIn from Workday requisition data and notifies recruiters.
tags:
- hr
- recruiting
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: job-posting
port: 8080
tools:
- name: publish-job
description: Publish a Workday requisition to LinkedIn.
inputParameters:
- name: requisition_id
in: body
type: string
description: Workday requisition ID.
steps:
- name: get-req
type: call
call: workday.get-requisition
with:
requisition_id: '{{requisition_id}}'
- name: post-job
type: call
call: linkedin.create-job
with:
title: '{{get-req.job_title}}'
description: '{{get-req.job_description}}'
location: '{{get-req.location}}'
- name: notify
type: call
call: msteams.send-message
with:
channel_id: recruiting
text: 'Job posted: {{get-req.job_title}} in {{get-req.location}}. LinkedIn: {{post-job.job_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: requisitions
path: /recruiting/v1/jobRequisitions/{{requisition_id}}
inputParameters:
- name: requisition_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: jobs
path: /simpleJobPostings
operations:
- name: create-job
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 billing account details from SAP BRIM for ING fee management, returning account status, outstanding charges, billing cycle, and payment method.
naftiko: '0.5'
info:
label: SAP BRIM Billing Account Lookup
description: Retrieves billing account details from SAP BRIM for ING fee management, returning account status, outstanding charges, billing cycle, and payment method.
tags:
- billing
- sap-brim
- banking
capability:
exposes:
- type: mcp
namespace: billing-management
port: 8080
tools:
- name: get-billing-account
description: Look up a billing account in SAP BRIM.
inputParameters:
- name: billing_account_id
in: body
type: string
description: The SAP BRIM billing account ID.
call: sapbrim.get-account
with:
billing_account_id: '{{billing_account_id}}'
outputParameters:
- name: status
type: string
mapping: $.billingAccount.status
- name: outstanding_charges
type: string
mapping: $.billingAccount.outstandingAmount
- name: billing_cycle
type: string
mapping: $.billingAccount.billingCycle
consumes:
- type: http
namespace: sapbrim
baseUri: https://ing-brim.sap.com/api/v1
authentication:
type: basic
username: $secrets.sap_brim_user
password: $secrets.sap_brim_password
resources:
- name: accounts
path: /billing-accounts/{{billing_account_id}}
inputParameters:
- name: billing_account_id
in: path
operations:
- name: get-account
method: GET
Retrieves GitHub Copilot usage analytics for ING engineering teams, returning active users, suggestion acceptance rate, and lines of code generated.
naftiko: '0.5'
info:
label: GitHub Copilot Usage Analytics
description: Retrieves GitHub Copilot usage analytics for ING engineering teams, returning active users, suggestion acceptance rate, and lines of code generated.
tags:
- development
- github-copilot
- analytics
capability:
exposes:
- type: mcp
namespace: copilot-analytics
port: 8080
tools:
- name: get-copilot-usage
description: Retrieve GitHub Copilot usage analytics.
inputParameters:
- name: org_name
in: body
type: string
description: The GitHub organization name.
call: github.get-copilot-usage
with:
org_name: '{{org_name}}'
outputParameters:
- name: active_users
type: number
mapping: $.totalActiveUsers
- name: acceptance_rate
type: string
mapping: $.acceptanceRate
- name: lines_generated
type: number
mapping: $.totalLinesGenerated
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: copilot
path: /orgs/{{org_name}}/copilot/usage
inputParameters:
- name: org_name
in: path
operations:
- name: get-copilot-usage
method: GET
Creates a meeting on an ING employee's Outlook calendar.
naftiko: '0.5'
info:
label: Microsoft Outlook Meeting Scheduler
description: Creates a meeting on an ING employee's Outlook calendar.
tags:
- communications
- scheduling
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: meeting-scheduler
port: 8080
tools:
- name: schedule-meeting
description: Create a meeting on Outlook calendar.
inputParameters:
- name: organizer_upn
in: body
type: string
description: Organizer UPN.
- name: subject
in: body
type: string
description: Subject.
- name: start_time
in: body
type: string
description: Start time ISO 8601.
- name: end_time
in: body
type: string
description: End time 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
Retrieves a compliance or policy document from SharePoint.
naftiko: '0.5'
info:
label: SharePoint Policy Document Retriever
description: Retrieves a compliance or policy document from SharePoint.
tags:
- compliance
- documents
- sharepoint
capability:
exposes:
- type: mcp
namespace: policy-docs
port: 8080
tools:
- name: get-policy-doc
description: Retrieve a policy document from SharePoint.
inputParameters:
- name: site_id
in: body
type: string
description: SharePoint 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: file_name
type: string
mapping: $.name
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 transaction data from Mastercard's network for ING-issued cards.
naftiko: '0.5'
info:
label: Mastercard Transaction Data Retriever
description: Retrieves transaction data from Mastercard's network for ING-issued cards.
tags:
- payments
- banking
- mastercard
capability:
exposes:
- type: mcp
namespace: card-transactions
port: 8080
tools:
- name: get-card-transactions
description: Retrieve recent transactions for an ING Mastercard.
inputParameters:
- name: card_id
in: body
type: string
description: Card identifier.
- name: date_range
in: body
type: string
description: Date range.
call: mastercard.get-transactions
with:
card_id: '{{card_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: transactions
type: string
mapping: $.transactions
- name: total_count
type: string
mapping: $.totalCount
consumes:
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/atms/v1
authentication:
type: bearer
token: $secrets.mastercard_token
resources:
- name: transactions
path: /cards/{{card_id}}/transactions
inputParameters:
- name: card_id
in: path
- name: date_range
in: query
operations:
- name: get-transactions
method: GET
Retrieves a payment intent status from Stripe for ING's digital retail products.
naftiko: '0.5'
info:
label: Stripe Payment Gateway Status
description: Retrieves a payment intent status from Stripe for ING's digital retail products.
tags:
- payments
- e-commerce
- stripe
capability:
exposes:
- type: mcp
namespace: payment-gateway
port: 8080
tools:
- name: get-payment-status
description: Look up a Stripe payment intent status.
inputParameters:
- name: payment_intent_id
in: body
type: string
description: Stripe payment intent ID.
call: stripe.get-payment-intent
with:
payment_intent_id: '{{payment_intent_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: string
mapping: $.amount
- name: currency
type: string
mapping: $.currency
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payment-intents
path: /payment_intents/{{payment_intent_id}}
inputParameters:
- name: payment_intent_id
in: path
operations:
- name: get-payment-intent
method: GET
Retrieves regulatory compliance dashboard data from Power BI, returning capital adequacy ratio, liquidity coverage ratio, and leverage ratio for ING Group reporting.
naftiko: '0.5'
info:
label: Power BI Regulatory Dashboard
description: Retrieves regulatory compliance dashboard data from Power BI, returning capital adequacy ratio, liquidity coverage ratio, and leverage ratio for ING Group reporting.
tags:
- compliance
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: regulatory-dashboard
port: 8080
tools:
- name: get-regulatory-metrics
description: Retrieve regulatory compliance metrics from Power BI.
inputParameters:
- name: report_date
in: body
type: string
description: The reporting date.
call: powerbi.query-regulatory
with:
report_date: '{{report_date}}'
outputParameters:
- name: car
type: string
mapping: $.value[0].CapitalAdequacyRatio
- name: lcr
type: string
mapping: $.value[0].LiquidityCoverageRatio
- name: leverage_ratio
type: string
mapping: $.value[0].LeverageRatio
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}}/executeQueries
inputParameters:
- name: dataset_id
in: path
operations:
- name: query-regulatory
method: POST
Triggers a GitHub Actions deployment workflow for ING banking applications.
naftiko: '0.5'
info:
label: GitHub Actions Deployment Trigger
description: Triggers a GitHub Actions deployment workflow for ING banking applications.
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 bond pricing data from Bloomberg Enterprise Data for ING fixed income trading, returning clean price, dirty price, yield to maturity, and spread.
naftiko: '0.5'
info:
label: Bloomberg Terminal Bond Pricing
description: Retrieves bond pricing data from Bloomberg Enterprise Data for ING fixed income trading, returning clean price, dirty price, yield to maturity, and spread.
tags:
- trading
- fixed-income
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: bond-pricing
port: 8080
tools:
- name: get-bond-price
description: Retrieve bond pricing from Bloomberg.
inputParameters:
- name: isin
in: body
type: string
description: The bond ISIN.
call: bloomberg.get-pricing
with:
isin: '{{isin}}'
outputParameters:
- name: clean_price
type: string
mapping: $.data[0].cleanPrice
- name: dirty_price
type: string
mapping: $.data[0].dirtyPrice
- name: ytm
type: string
mapping: $.data[0].yieldToMaturity
- name: spread
type: string
mapping: $.data[0].zSpread
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: pricing
path: /securities/{{isin}}/pricing
inputParameters:
- name: isin
in: path
operations:
- name: get-pricing
method: GET
Orchestrates new customer account opening by running KYC verification, creating the account in Temenos, provisioning digital banking access, and sending welcome notification via WhatsApp.
naftiko: '0.5'
info:
label: Customer Account Opening Orchestrator
description: Orchestrates new customer account opening by running KYC verification, creating the account in Temenos, provisioning digital banking access, and sending welcome notification via WhatsApp.
tags:
- banking
- onboarding
- temenos-transact
- whatsapp
- compliance
capability:
exposes:
- type: mcp
namespace: account-opening
port: 8080
tools:
- name: open-account
description: Orchestrate new customer account opening.
inputParameters:
- name: customer_name
in: body
type: string
description: The customer full name.
- name: id_number
in: body
type: string
description: The national ID number.
- name: phone
in: body
type: string
description: Customer phone number.
steps:
- name: verify-kyc
type: call
call: compliance.kyc-check
with:
name: '{{customer_name}}'
id_number: '{{id_number}}'
- name: create-account
type: call
call: temenos.create-account
with:
customer_name: '{{customer_name}}'
kyc_reference: '{{verify-kyc.kyc_reference}}'
- name: provision-digital
type: call
call: digital-banking.provision-access
with:
account_id: '{{create-account.account_id}}'
phone: '{{phone}}'
- name: send-welcome
type: call
call: whatsapp.send-message
with:
phone: '{{phone}}'
template: welcome_new_customer
parameters: '{{customer_name}},{{create-account.account_id}},{{create-account.iban}}'
consumes:
- type: http
namespace: compliance
baseUri: https://compliance-screening.ing.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: kyc
path: /kyc/verify
operations:
- name: kyc-check
method: POST
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
- type: http
namespace: digital-banking
baseUri: https://digital-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.digital_banking_token
resources:
- name: provisioning
path: /access/provision
operations:
- name: provision-access
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
Retrieves mobile banking application performance from Dynatrace, returning crash rate, session duration, API response time, and user satisfaction score.
naftiko: '0.5'
info:
label: Dynatrace Banking App Performance
description: Retrieves mobile banking application performance from Dynatrace, returning crash rate, session duration, API response time, and user satisfaction score.
tags:
- monitoring
- dynatrace
- mobile-banking
capability:
exposes:
- type: mcp
namespace: mobile-app-performance
port: 8080
tools:
- name: get-app-performance
description: Retrieve mobile banking app performance from Dynatrace.
inputParameters:
- name: app_id
in: body
type: string
description: The Dynatrace mobile app ID.
call: dynatrace.get-app-metrics
with:
app_id: '{{app_id}}'
outputParameters:
- name: crash_rate
type: string
mapping: $.result[0].data[0].values.crashRate
- name: avg_session_duration
type: string
mapping: $.result[0].data[0].values.sessionDuration
- name: api_response_time
type: string
mapping: $.result[0].data[0].values.apiResponseTime
consumes:
- type: http
namespace: dynatrace
baseUri: https://ing.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query?entitySelector=type(MOBILE_APPLICATION),entityId({{app_id}})
inputParameters:
- name: app_id
in: query
operations:
- name: get-app-metrics
method: GET
Retrieves a customer's 360 view from Salesforce, including account summary, recent interactions, and open cases.
naftiko: '0.5'
info:
label: Salesforce Customer 360 Lookup
description: Retrieves a customer's 360 view from Salesforce, including account summary, recent interactions, and open cases.
tags:
- banking
- customer-service
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-360
port: 8080
tools:
- name: get-customer-view
description: Retrieve customer 360 view from Salesforce.
inputParameters:
- name: customer_id
in: body
type: string
description: Customer ID.
call: salesforce.get-contact
with:
customer_id: '{{customer_id}}'
outputParameters:
- name: name
type: string
mapping: $.Name
- name: segment
type: string
mapping: $.Customer_Segment__c
- name: relationship_manager
type: string
mapping: $.Relationship_Manager__c
- name: open_cases
type: string
mapping: $.Cases.totalSize
consumes:
- type: http
namespace: salesforce
baseUri: https://ing.my.salesforce.com/services/data/v58.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
Triggers a credit risk model run in Azure Databricks for ING lending, returning model output, probability of default, and risk category.
naftiko: '0.5'
info:
label: Azure Databricks Credit Model Runner
description: Triggers a credit risk model run in Azure Databricks for ING lending, returning model output, probability of default, and risk category.
tags:
- machine-learning
- azure-databricks
- risk
capability:
exposes:
- type: mcp
namespace: credit-models
port: 8080
tools:
- name: run-credit-model
description: Trigger a credit risk model run in Azure Databricks.
inputParameters:
- name: model_name
in: body
type: string
description: The ML model name.
- name: customer_segment
in: body
type: string
description: The customer segment.
call: databricks.run-job
with:
model_name: '{{model_name}}'
customer_segment: '{{customer_segment}}'
outputParameters:
- name: run_id
type: string
mapping: $.run_id
- name: pd_output
type: string
mapping: $.output.pd
- name: risk_category
type: string
mapping: $.output.risk_category
consumes:
- type: http
namespace: databricks
baseUri: https://adb-ing.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
Checks Google Pay token status for an ING card.
naftiko: '0.5'
info:
label: Google Pay Integration Status
description: Checks Google Pay token status for an ING card.
tags:
- payments
- mobile-banking
- google-pay
capability:
exposes:
- type: mcp
namespace: gpay-status
port: 8080
tools:
- name: get-gpay-status
description: Check Google Pay status for a card.
inputParameters:
- name: card_id
in: body
type: string
description: Card identifier.
call: google-pay.get-token-status
with:
card_id: '{{card_id}}'
outputParameters:
- name: status
type: string
mapping: $.tokenStatus
- name: active_tokens
type: string
mapping: $.activeTokenCount
consumes:
- type: http
namespace: google-pay
baseUri: https://mobile-payments.ing.com/api/v1
authentication:
type: bearer
token: $secrets.google_pay_token
resources:
- name: tokens
path: /cards/{{card_id}}/google-pay
inputParameters:
- name: card_id
in: path
operations:
- name: get-token-status
method: GET
Orchestrates biometric enrollment for ING mobile banking customers, coordinating fingerprint and facial recognition setup with device binding and security validation.
naftiko: '0.5'
info:
label: Mobile Banking Biometric Enrollment Orchestrator
description: Orchestrates biometric enrollment for ING mobile banking customers, coordinating fingerprint and facial recognition setup with device binding and security validation.
tags:
- mobile-banking
- biometric-security
- authentication
capability:
exposes:
- type: mcp
namespace: biometric-enrollment
port: 8080
tools:
- name: enroll-biometric
description: Enroll a customer biometric authentication method for mobile banking.
inputParameters:
- name: customer_id
in: body
type: string
description: The ING customer identifier.
- name: device_id
in: body
type: string
description: The registered mobile device identifier.
- name: biometric_type
in: body
type: string
description: Biometric type such as fingerprint or face-recognition.
call: identity-api.enroll-biometric
with:
customer: '{{customer_id}}'
device: '{{device_id}}'
type: '{{biometric_type}}'
outputParameters:
- name: enrollment_id
type: string
mapping: $.enrollment.id
- name: status
type: string
mapping: $.enrollment.status
- name: device_bound
type: boolean
mapping: $.enrollment.deviceBound
consumes:
- type: http
namespace: identity-api
baseUri: https://api.ing.com/identity/v1
authentication:
type: bearer
token: $secrets.ing_identity_api_token
resources:
- name: biometrics
path: /customers/{{customer}}/biometrics
inputParameters:
- name: customer
in: path
operations:
- name: enroll-biometric
method: POST
Sends an announcement to an ING department's Teams channel.
naftiko: '0.5'
info:
label: Microsoft Teams Departmental Announcement
description: Sends an announcement to an ING department's Teams channel.
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dept-comms
port: 8080
tools:
- name: send-announcement
description: Post an announcement to a department Teams channel.
inputParameters:
- name: department
in: body
type: string
description: Department name.
- name: message
in: body
type: string
description: Message text.
call: msteams.post-message
with:
channel_id: announcements_{{department}}
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
Processes a credit card application by running credit scoring, verifying income via the payroll system, creating the card account in Temenos, and notifying the customer via WhatsApp.
naftiko: '0.5'
info:
label: Credit Card Application Orchestrator
description: Processes a credit card application by running credit scoring, verifying income via the payroll system, creating the card account in Temenos, and notifying the customer via WhatsApp.
tags:
- banking
- credit
- temenos-transact
- whatsapp
capability:
exposes:
- type: mcp
namespace: credit-card-applications
port: 8080
tools:
- name: process-application
description: Process a credit card application.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer ID.
- name: requested_limit
in: body
type: string
description: Requested credit limit.
steps:
- name: run-credit-score
type: call
call: credit-engine.score-customer
with:
customer_id: '{{customer_id}}'
- name: verify-income
type: call
call: income-verification.check
with:
customer_id: '{{customer_id}}'
- name: create-card-account
type: call
call: temenos.create-card-account
with:
customer_id: '{{customer_id}}'
credit_limit: '{{requested_limit}}'
credit_score: '{{run-credit-score.score}}'
- name: notify-customer
type: call
call: whatsapp.send-message
with:
phone: '{{run-credit-score.customer_phone}}'
template: card_approved
parameters: '{{create-card-account.card_number_masked}},{{create-card-account.credit_limit}}'
consumes:
- type: http
namespace: credit-engine
baseUri: https://credit-scoring.ing.com/api/v1
authentication:
type: bearer
token: $secrets.credit_engine_token
resources:
- name: scoring
path: /score
operations:
- name: score-customer
method: POST
- type: http
namespace: income-verification
baseUri: https://income-verify.ing.com/api/v1
authentication:
type: bearer
token: $secrets.income_verify_token
resources:
- name: verification
path: /verify
operations:
- name: check
method: POST
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: card-accounts
path: /cards/accounts
operations:
- name: create-card-account
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
Retrieves user identity details from Microsoft Entra ID for ING access management, returning user principal name, group memberships, and last sign-in date.
naftiko: '0.5'
info:
label: Microsoft Entra Identity Lookup
description: Retrieves user identity details from Microsoft Entra ID for ING access management, returning user principal name, group memberships, and last sign-in date.
tags:
- security
- identity
- microsoft-entra
capability:
exposes:
- type: mcp
namespace: identity-management
port: 8080
tools:
- name: get-user-identity
description: Look up a user identity in Microsoft Entra ID.
inputParameters:
- name: user_id
in: body
type: string
description: The Entra user principal name or ID.
call: entra.get-user
with:
user_id: '{{user_id}}'
outputParameters:
- name: display_name
type: string
mapping: $.displayName
- name: upn
type: string
mapping: $.userPrincipalName
- name: groups
type: string
mapping: $.memberOf
- name: last_sign_in
type: string
mapping: $.signInActivity.lastSignInDateTime
consumes:
- type: http
namespace: entra
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.entra_token
resources:
- name: users
path: /users/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: get-user
method: GET
Investigates a suspicious activity alert by retrieving transaction history from Temenos, running enhanced due diligence via the compliance platform, creating a case in Salesforce, and notifying the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: AML Suspicious Activity Investigation Pipeline
description: Investigates a suspicious activity alert by retrieving transaction history from Temenos, running enhanced due diligence via the compliance platform, creating a case in Salesforce, and notifying the compliance team via Microsoft Teams.
tags:
- compliance
- aml
- temenos-transact
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-investigation
port: 8080
tools:
- name: investigate-alert
description: Investigate an AML suspicious activity alert.
inputParameters:
- name: alert_id
in: body
type: string
description: The AML alert ID.
- name: customer_id
in: body
type: string
description: The customer ID.
steps:
- name: get-transactions
type: call
call: temenos.get-transaction-history
with:
customer_id: '{{customer_id}}'
days: '90'
- name: run-edd
type: call
call: compliance.enhanced-due-diligence
with:
customer_id: '{{customer_id}}'
alert_id: '{{alert_id}}'
- name: create-case
type: call
call: salesforce.create-case
with:
subject: 'AML Investigation: Alert {{alert_id}} - Customer {{customer_id}}'
description: 'Transaction count (90d): {{get-transactions.count}}. EDD risk score: {{run-edd.risk_score}}. EDD findings: {{run-edd.findings}}.'
type: AML_Investigation
priority: High
- name: notify-compliance
type: call
call: teams.send-message
with:
channel: AML_Investigations
message: 'New AML case created: {{create-case.case_number}}. Alert: {{alert_id}}. Customer: {{customer_id}}. EDD Risk: {{run-edd.risk_score}}.'
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: transactions
path: /customers/{{customer_id}}/transactions
inputParameters:
- name: customer_id
in: path
operations:
- name: get-transaction-history
method: GET
- type: http
namespace: compliance
baseUri: https://compliance-screening.ing.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: edd
path: /edd/assess
operations:
- name: enhanced-due-diligence
method: POST
- type: http
namespace: salesforce
baseUri: https://ing.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: 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
When a fraud alert is triggered, retrieves card transaction details, blocks the card via the banking platform, creates a case in ServiceNow, and notifies the customer via WhatsApp.
naftiko: '0.5'
info:
label: Fraud Detection Alert Processor
description: When a fraud alert is triggered, retrieves card transaction details, blocks the card via the banking platform, creates a case in ServiceNow, and notifies the customer via WhatsApp.
tags:
- risk
- banking
- compliance
- servicenow
- whatsapp
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: process-fraud-alert
description: Handle a fraud detection alert across card blocking, case creation, and notification.
inputParameters:
- name: alert_id
in: body
type: string
description: Fraud alert ID.
- name: card_number_masked
in: body
type: string
description: Masked card number.
steps:
- name: get-alert
type: call
call: fraud-system.get-alert
with:
alert_id: '{{alert_id}}'
- name: block-card
type: call
call: temenos.block-card
with:
card_id: '{{get-alert.card_id}}'
reason: fraud_suspected
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'Fraud alert: Card {{card_number_masked}} - {{get-alert.alert_type}}'
priority: '1'
category: fraud_investigation
- name: notify-customer
type: call
call: whatsapp.send-message
with:
phone: '{{get-alert.customer_phone}}'
template: fraud_alert
parameters: '{{card_number_masked}},{{get-alert.transaction_amount}}'
consumes:
- type: http
namespace: fraud-system
baseUri: https://fraud-detection.ing.com/api/v1
authentication:
type: bearer
token: $secrets.fraud_system_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: cards
path: /cards/{{card_id}}/block
inputParameters:
- name: card_id
in: path
operations:
- name: block-card
method: POST
- type: http
namespace: servicenow
baseUri: https://ing.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
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
Processes corporate loan renewal by pulling current facility data from Temenos, running updated credit analysis, generating renewal terms, and creating the approval workflow in ServiceNow.
naftiko: '0.5'
info:
label: Corporate Lending Renewal Pipeline
description: Processes corporate loan renewal by pulling current facility data from Temenos, running updated credit analysis, generating renewal terms, and creating the approval workflow in ServiceNow.
tags:
- lending
- corporate-banking
- temenos-transact
- servicenow
capability:
exposes:
- type: mcp
namespace: corporate-lending
port: 8080
tools:
- name: process-renewal
description: Process a corporate lending facility renewal.
inputParameters:
- name: facility_id
in: body
type: string
description: The lending facility ID.
- name: corporate_id
in: body
type: string
description: The corporate client ID.
steps:
- name: get-facility
type: call
call: temenos.get-facility
with:
facility_id: '{{facility_id}}'
- name: run-credit-analysis
type: call
call: credit-engine.analyze-corporate
with:
corporate_id: '{{corporate_id}}'
current_exposure: '{{get-facility.outstanding_amount}}'
- name: generate-terms
type: call
call: pricing-engine.calculate-corporate-rate
with:
facility_id: '{{facility_id}}'
credit_grade: '{{run-credit-analysis.credit_grade}}'
- name: create-approval
type: call
call: servicenow.create-request
with:
short_description: 'Lending renewal: Facility {{facility_id}} - {{get-facility.client_name}}'
description: 'Current amount: {{get-facility.outstanding_amount}}. Credit grade: {{run-credit-analysis.credit_grade}}. Proposed rate: {{generate-terms.offered_rate}}.'
assignment_group: Credit_Committee
priority: '2'
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: facilities
path: /facilities/{{facility_id}}
inputParameters:
- name: facility_id
in: path
operations:
- name: get-facility
method: GET
- type: http
namespace: credit-engine
baseUri: https://credit-scoring.ing.com/api/v1
authentication:
type: bearer
token: $secrets.credit_engine_token
resources:
- name: corporate-analysis
path: /analyze/corporate
operations:
- name: analyze-corporate
method: POST
- type: http
namespace: pricing-engine
baseUri: https://pricing.ing.com/api/v1
authentication:
type: bearer
token: $secrets.pricing_engine_token
resources:
- name: corporate-rates
path: /corporate/calculate
operations:
- name: calculate-corporate-rate
method: POST
- type: http
namespace: servicenow
baseUri: https://ing.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 interbank reference rates (EURIBOR, EONIA, SOFR) from the market data service, returning rate value, tenor, fixing date, and source.
naftiko: '0.5'
info:
label: Interbank Reference Rate Lookup
description: Retrieves interbank reference rates (EURIBOR, EONIA, SOFR) from the market data service, returning rate value, tenor, fixing date, and source.
tags:
- treasury
- market-data
- rates
capability:
exposes:
- type: mcp
namespace: reference-rates
port: 8080
tools:
- name: get-reference-rate
description: Look up an interbank reference rate.
inputParameters:
- name: rate_type
in: body
type: string
description: The rate type (EURIBOR, SOFR, EONIA).
- name: tenor
in: body
type: string
description: The tenor (1M, 3M, 6M, 12M).
call: market-data.get-rate
with:
rate_type: '{{rate_type}}'
tenor: '{{tenor}}'
outputParameters:
- name: rate_value
type: string
mapping: $.data.rate
- name: fixing_date
type: string
mapping: $.data.fixingDate
- name: source
type: string
mapping: $.data.source
consumes:
- type: http
namespace: market-data
baseUri: https://market-data.ing.com/api/v1
authentication:
type: bearer
token: $secrets.market_data_token
resources:
- name: rates
path: /reference-rates?type={{rate_type}}&tenor={{tenor}}
inputParameters:
- name: rate_type
in: query
- name: tenor
in: query
operations:
- name: get-rate
method: GET
Retrieves a prospect lead from HubSpot for ING corporate banking outreach.
naftiko: '0.5'
info:
label: HubSpot Lead Enrichment
description: Retrieves a prospect lead from HubSpot for ING corporate banking outreach.
tags:
- sales
- marketing
- hubspot
capability:
exposes:
- type: mcp
namespace: lead-management
port: 8080
tools:
- name: get-lead
description: Retrieve a HubSpot lead.
inputParameters:
- name: contact_id
in: body
type: string
description: HubSpot contact ID.
call: hubspot.get-contact
with:
contact_id: '{{contact_id}}'
outputParameters:
- name: company
type: string
mapping: $.properties.company
- name: email
type: string
mapping: $.properties.email
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
Reviews and recalculates credit limits for ING wholesale banking clients based on updated financial statements, market conditions, and counterparty risk assessments.
naftiko: '0.5'
info:
label: Wholesale Client Credit Limit Reviewer
description: Reviews and recalculates credit limits for ING wholesale banking clients based on updated financial statements, market conditions, and counterparty risk assessments.
tags:
- wholesale-banking
- credit-risk
- client-management
capability:
exposes:
- type: mcp
namespace: credit-limit-review
port: 8080
tools:
- name: review-credit-limit
description: Review and recalculate credit limit for a wholesale client.
inputParameters:
- name: client_id
in: body
type: string
description: The wholesale banking client identifier.
- name: review_type
in: body
type: string
description: Review type such as annual, triggered, or ad-hoc.
call: credit-api.review-limit
with:
client: '{{client_id}}'
type: '{{review_type}}'
outputParameters:
- name: current_limit
type: number
mapping: $.review.currentLimit
- name: proposed_limit
type: number
mapping: $.review.proposedLimit
- name: risk_rating
type: string
mapping: $.review.riskRating
consumes:
- type: http
namespace: credit-api
baseUri: https://api.ing.com/wholesale/v1
authentication:
type: bearer
token: $secrets.ing_wholesale_credit_token
resources:
- name: credit-limits
path: /clients/{{client}}/credit-limits/review
inputParameters:
- name: client
in: path
operations:
- name: review-limit
method: POST
Retrieves SEPA direct debit mandate details for a customer account, returning mandate reference, creditor, status, and maximum amount.
naftiko: '0.5'
info:
label: SEPA Direct Debit Mandate Lookup
description: Retrieves SEPA direct debit mandate details for a customer account, returning mandate reference, creditor, status, and maximum amount.
tags:
- payments
- banking
- temenos-transact
capability:
exposes:
- type: mcp
namespace: direct-debits
port: 8080
tools:
- name: get-mandate
description: Look up SEPA direct debit mandate details.
inputParameters:
- name: mandate_ref
in: body
type: string
description: The SEPA mandate reference.
call: temenos.get-mandate
with:
mandate_ref: '{{mandate_ref}}'
outputParameters:
- name: creditor_name
type: string
mapping: $.body.creditorName
- name: status
type: string
mapping: $.body.mandateStatus
- name: max_amount
type: string
mapping: $.body.maximumAmount
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: mandates
path: /payments/directDebits/mandates/{{mandate_ref}}
inputParameters:
- name: mandate_ref
in: path
operations:
- name: get-mandate
method: GET
Screens investment portfolios for ESG compliance by querying positions from Murex, running ESG scoring via the sustainability platform, generating the report in Google Sheets, and notifying stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: ESG Screening and Reporting Pipeline
description: Screens investment portfolios for ESG compliance by querying positions from Murex, running ESG scoring via the sustainability platform, generating the report in Google Sheets, and notifying stakeholders via Microsoft Teams.
tags:
- sustainability
- esg
- murex
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: esg-screening
port: 8080
tools:
- name: screen-portfolio-esg
description: Screen a portfolio for ESG compliance and generate report.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio ID.
- name: reporting_date
in: body
type: string
description: The reporting date.
steps:
- name: get-positions
type: call
call: murex.get-portfolio-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: run-esg-scoring
type: call
call: sustainability-platform.score-portfolio
with:
portfolio_id: '{{portfolio_id}}'
position_count: '{{get-positions.position_count}}'
- name: generate-report
type: call
call: gsheets.append-data
with:
spreadsheet_id: ESG_Reports
data: '{{portfolio_id}},{{reporting_date}},{{run-esg-scoring.overall_score}},{{run-esg-scoring.exclusion_count}}'
- name: notify-stakeholders
type: call
call: teams.send-message
with:
channel: ESG_Compliance
message: 'ESG screening complete for portfolio {{portfolio_id}}. Score: {{run-esg-scoring.overall_score}}. Exclusions: {{run-esg-scoring.exclusion_count}}.'
consumes:
- type: http
namespace: murex
baseUri: https://murex.ing.com/api/v2
authentication:
type: bearer
token: $secrets.murex_token
resources:
- name: portfolios
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-portfolio-positions
method: GET
- type: http
namespace: sustainability-platform
baseUri: https://sustainability.ing.com/api/v1
authentication:
type: bearer
token: $secrets.sustainability_token
resources:
- name: scoring
path: /esg/score
operations:
- name: score-portfolio
method: POST
- 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/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-data
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
Checks the provisioning status of an ING card on Apple Pay.
naftiko: '0.5'
info:
label: Apple Pay Provisioning Status
description: Checks the provisioning status of an ING card on Apple Pay.
tags:
- payments
- mobile-banking
- apple-pay
capability:
exposes:
- type: mcp
namespace: mobile-payments
port: 8080
tools:
- name: get-apple-pay-status
description: Check Apple Pay provisioning status for a card.
inputParameters:
- name: card_id
in: body
type: string
description: Card identifier.
call: apple-pay.get-provisioning
with:
card_id: '{{card_id}}'
outputParameters:
- name: status
type: string
mapping: $.provisioningStatus
- name: device_count
type: string
mapping: $.activeDevices
consumes:
- type: http
namespace: apple-pay
baseUri: https://mobile-payments.ing.com/api/v1
authentication:
type: bearer
token: $secrets.apple_pay_token
resources:
- name: provisioning
path: /cards/{{card_id}}/apple-pay
inputParameters:
- name: card_id
in: path
operations:
- name: get-provisioning
method: GET
Retrieves employee compensation review data from Workday, returning current salary, proposed adjustment, merit rating, and review status.
naftiko: '0.5'
info:
label: Workday Compensation Review Lookup
description: Retrieves employee compensation review data from Workday, returning current salary, proposed adjustment, merit rating, and review status.
tags:
- hr
- workday
- compensation
capability:
exposes:
- type: mcp
namespace: compensation-reviews
port: 8080
tools:
- name: get-comp-review
description: Look up a compensation review in Workday.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
call: workday.get-compensation
with:
employee_id: '{{employee_id}}'
outputParameters:
- name: current_salary
type: string
mapping: $.Worker.Compensation_Data.CurrentSalary
- name: proposed_adjustment
type: string
mapping: $.Worker.Compensation_Data.ProposedAdjustment
- name: merit_rating
type: string
mapping: $.Worker.Compensation_Data.MeritRating
- name: review_status
type: string
mapping: $.Worker.Compensation_Data.ReviewStatus
consumes:
- type: http
namespace: workday
baseUri: https://wd3-impl-services1.workday.com/ccx/api/v1/ing
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation
path: /workers/{{employee_id}}/compensation
inputParameters:
- name: employee_id
in: path
operations:
- name: get-compensation
method: GET
Retrieves an ING employee's schedule from Workday.
naftiko: '0.5'
info:
label: Workday Employee Schedule Retriever
description: Retrieves an ING employee's schedule from Workday.
tags:
- hr
- scheduling
- workday
capability:
exposes:
- type: mcp
namespace: employee-scheduling
port: 8080
tools:
- name: get-schedule
description: Retrieve employee schedule from Workday.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID.
call: workday.get-schedule
with:
worker_id: '{{worker_id}}'
outputParameters:
- name: shifts
type: string
mapping: $.scheduleEntries
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
Tracks a SWIFT GPI payment by UETR, returning payment status, last update timestamp, and beneficiary confirmation from the SWIFT network.
naftiko: '0.5'
info:
label: SWIFT GPI Payment Tracker
description: Tracks a SWIFT GPI payment by UETR, returning payment status, last update timestamp, and beneficiary confirmation from the SWIFT network.
tags:
- payments
- swift
- banking
capability:
exposes:
- type: mcp
namespace: swift-gpi
port: 8080
tools:
- name: track-payment
description: Track a SWIFT GPI payment by UETR.
inputParameters:
- name: uetr
in: body
type: string
description: The Unique End-to-End Transaction Reference.
call: swift.get-payment-status
with:
uetr: '{{uetr}}'
outputParameters:
- name: status
type: string
mapping: $.transaction_status
- name: last_update
type: string
mapping: $.last_update_time
- name: beneficiary_confirmed
type: string
mapping: $.confirmed_amount
consumes:
- type: http
namespace: swift
baseUri: https://api.swift.com/swift-gpi/v4
authentication:
type: bearer
token: $secrets.swift_gpi_token
resources:
- name: payments
path: /payments/{{uetr}}
inputParameters:
- name: uetr
in: path
operations:
- name: get-payment-status
method: GET
Retrieves loan account balance details from Temenos Transact, returning outstanding principal, accrued interest, next payment date, and payment amount.
naftiko: '0.5'
info:
label: Temenos Loan Balance Lookup
description: Retrieves loan account balance details from Temenos Transact, returning outstanding principal, accrued interest, next payment date, and payment amount.
tags:
- banking
- lending
- temenos-transact
capability:
exposes:
- type: mcp
namespace: loan-accounts
port: 8080
tools:
- name: get-loan-balance
description: Look up a loan account balance in Temenos Transact.
inputParameters:
- name: loan_id
in: body
type: string
description: The Temenos loan account ID.
call: temenos.get-loan
with:
loan_id: '{{loan_id}}'
outputParameters:
- name: outstanding_principal
type: string
mapping: $.body.outstandingPrincipal
- name: accrued_interest
type: string
mapping: $.body.accruedInterest
- name: next_payment_date
type: string
mapping: $.body.nextPaymentDate
- name: payment_amount
type: string
mapping: $.body.paymentAmount
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: loans
path: /loans/{{loan_id}}
inputParameters:
- name: loan_id
in: path
operations:
- name: get-loan
method: GET
Orchestrates mortgage renewal by retrieving the existing mortgage from Temenos, calculating new rates via the pricing engine, generating the renewal offer, and sending it via WhatsApp.
naftiko: '0.5'
info:
label: Mortgage Renewal Orchestrator
description: Orchestrates mortgage renewal by retrieving the existing mortgage from Temenos, calculating new rates via the pricing engine, generating the renewal offer, and sending it via WhatsApp.
tags:
- lending
- mortgage
- temenos-transact
- whatsapp
capability:
exposes:
- type: mcp
namespace: mortgage-renewal
port: 8080
tools:
- name: process-renewal
description: Process a mortgage renewal for an ING customer.
inputParameters:
- name: mortgage_id
in: body
type: string
description: The mortgage account ID.
- name: customer_id
in: body
type: string
description: The customer ID.
steps:
- name: get-mortgage
type: call
call: temenos.get-mortgage
with:
mortgage_id: '{{mortgage_id}}'
- name: calculate-rate
type: call
call: pricing-engine.calculate-rate
with:
loan_amount: '{{get-mortgage.outstanding_balance}}'
ltv: '{{get-mortgage.current_ltv}}'
term_remaining: '{{get-mortgage.remaining_term}}'
- name: generate-offer
type: call
call: temenos.create-renewal-offer
with:
mortgage_id: '{{mortgage_id}}'
new_rate: '{{calculate-rate.offered_rate}}'
term: '{{calculate-rate.recommended_term}}'
- name: notify-customer
type: call
call: whatsapp.send-message
with:
phone: '{{get-mortgage.customer_phone}}'
template: mortgage_renewal_offer
parameters: '{{calculate-rate.offered_rate}},{{generate-offer.monthly_payment}},{{generate-offer.offer_expiry}}'
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: mortgages
path: /mortgages/{{mortgage_id}}
inputParameters:
- name: mortgage_id
in: path
operations:
- name: get-mortgage
method: GET
- name: renewal-offers
path: /mortgages/{{mortgage_id}}/renewal
inputParameters:
- name: mortgage_id
in: path
operations:
- name: create-renewal-offer
method: POST
- type: http
namespace: pricing-engine
baseUri: https://pricing.ing.com/api/v1
authentication:
type: bearer
token: $secrets.pricing_engine_token
resources:
- name: rates
path: /mortgage/calculate
operations:
- name: calculate-rate
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
Creates a knowledge base article in Confluence for ING procedures.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Article Creator
description: Creates a knowledge base article in Confluence for ING procedures.
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: create-article
description: Create a Confluence knowledge base article.
inputParameters:
- name: space_key
in: body
type: string
description: Confluence space key.
- name: title
in: body
type: string
description: Title.
- name: body
in: body
type: string
description: 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://ing.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 status of a loan application from the lending platform, returning approval status, requested amount, interest rate, and decision date.
naftiko: '0.5'
info:
label: Loan Application Status Lookup
description: Retrieves the status of a loan application from the lending platform, returning approval status, requested amount, interest rate, and decision date.
tags:
- lending
- banking
- temenos-transact
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: get-loan-status
description: Look up a loan application status by application ID.
inputParameters:
- name: application_id
in: body
type: string
description: The loan application ID.
call: temenos.get-loan-application
with:
application_id: '{{application_id}}'
outputParameters:
- name: status
type: string
mapping: $.body.applicationStatus
- name: requested_amount
type: string
mapping: $.body.requestedAmount
- name: interest_rate
type: string
mapping: $.body.interestRate
- name: decision_date
type: string
mapping: $.body.decisionDate
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: loan-applications
path: /lending/applications/{{application_id}}
inputParameters:
- name: application_id
in: path
operations:
- name: get-loan-application
method: GET
When a Concur expense is submitted, retrieves details and notifies approver via Teams.
naftiko: '0.5'
info:
label: Concur Expense Report Notifier
description: When a Concur expense is submitted, retrieves details and notifies 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.
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: 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 current sprint status from Jira for ING engineering teams, returning sprint name, story points completed, remaining work, and burndown velocity.
naftiko: '0.5'
info:
label: Jira Project Sprint Status
description: Retrieves current sprint status from Jira for ING engineering teams, returning sprint name, story points completed, remaining work, and burndown velocity.
tags:
- development
- jira
capability:
exposes:
- type: mcp
namespace: sprint-tracking
port: 8080
tools:
- name: get-sprint-status
description: Look up current sprint status in Jira.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira board ID.
call: jira.get-sprint
with:
board_id: '{{board_id}}'
outputParameters:
- name: sprint_name
type: string
mapping: $.values[0].name
- name: completed_points
type: number
mapping: $.values[0].completedPoints
- name: remaining_points
type: number
mapping: $.values[0].remainingPoints
consumes:
- type: http
namespace: jira
baseUri: https://ing.atlassian.net/rest/agile/1.0
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: sprints
path: /board/{{board_id}}/sprint?state=active
inputParameters:
- name: board_id
in: path
operations:
- name: get-sprint
method: GET
Queries Snowflake for customer risk analytics, returning risk score, exposure amount, probability of default, and loss given default for a customer segment.
naftiko: '0.5'
info:
label: Snowflake Customer Risk Analytics
description: Queries Snowflake for customer risk analytics, returning risk score, exposure amount, probability of default, and loss given default for a customer segment.
tags:
- risk
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-risk
port: 8080
tools:
- name: get-risk-analytics
description: Query customer risk analytics from Snowflake.
inputParameters:
- name: customer_segment
in: body
type: string
description: The customer risk segment.
call: snowflake.query-risk
with:
customer_segment: '{{customer_segment}}'
outputParameters:
- name: avg_risk_score
type: string
mapping: $.data[0].avg_risk_score
- name: total_exposure
type: string
mapping: $.data[0].total_exposure
- name: avg_pd
type: string
mapping: $.data[0].avg_probability_of_default
consumes:
- type: http
namespace: snowflake
baseUri: https://ing.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: query-risk
method: POST
Retrieves latest build status from Azure DevOps for ING applications.
naftiko: '0.5'
info:
label: Azure DevOps Build Status Checker
description: Retrieves latest build status from Azure DevOps for ING applications.
tags:
- it-operations
- cicd
- azure-devops
capability:
exposes:
- type: mcp
namespace: build-status
port: 8080
tools:
- name: get-build-status
description: Check latest Azure DevOps build status.
inputParameters:
- name: project
in: body
type: string
description: Azure DevOps project.
- name: pipeline_id
in: body
type: string
description: Pipeline ID.
call: azdevops.get-build
with:
project: '{{project}}'
pipeline_id: '{{pipeline_id}}'
outputParameters:
- name: result
type: string
mapping: $.value[0].result
consumes:
- type: http
namespace: azdevops
baseUri: https://dev.azure.com/ing
authentication:
type: basic
username: ''
password: $secrets.azdevops_pat
resources:
- name: builds
path: /{{project}}/_apis/build/builds
inputParameters:
- name: project
in: path
- name: definitions
in: query
value: '{{pipeline_id}}'
- name: $top
in: query
value: '1'
- name: api-version
in: query
value: '7.0'
operations:
- name: get-build
method: GET
Queries Elasticsearch for audit log entries across ING systems, returning event count, top actions, user activity summary, and time range coverage.
naftiko: '0.5'
info:
label: Elasticsearch Audit Log Query
description: Queries Elasticsearch for audit log entries across ING systems, returning event count, top actions, user activity summary, and time range coverage.
tags:
- security
- audit
- elasticsearch
capability:
exposes:
- type: mcp
namespace: audit-logs
port: 8080
tools:
- name: query-audit-logs
description: Query audit log entries from Elasticsearch.
inputParameters:
- name: index
in: body
type: string
description: The Elasticsearch audit log index.
- name: time_range
in: body
type: string
description: The time range (e.g. 24h, 7d).
call: elasticsearch.search
with:
index: '{{index}}'
time_range: '{{time_range}}'
outputParameters:
- name: total_events
type: number
mapping: $.hits.total.value
- name: top_actions
type: string
mapping: $.aggregations.actions.buckets
- name: unique_users
type: number
mapping: $.aggregations.users.value
consumes:
- type: http
namespace: elasticsearch
baseUri: https://elasticsearch.ing.com
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: search
path: /{{index}}/_search
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
Calculates instant loan pre-approval amounts for ING retail customers based on income verification, credit scoring, and existing debt obligations.
naftiko: '0.5'
info:
label: Instant Loan Pre-Approval Calculator
description: Calculates instant loan pre-approval amounts for ING retail customers based on income verification, credit scoring, and existing debt obligations.
tags:
- lending
- credit-scoring
- retail-banking
capability:
exposes:
- type: mcp
namespace: loan-preapproval
port: 8080
tools:
- name: calculate-preapproval
description: Calculate instant loan pre-approval for a customer.
inputParameters:
- name: customer_id
in: body
type: string
description: The ING customer identifier.
- name: loan_type
in: body
type: string
description: Loan type such as personal, auto, or home-improvement.
- name: requested_amount
in: body
type: number
description: Requested loan amount in EUR.
call: lending-api.calculate-preapproval
with:
customer: '{{customer_id}}'
type: '{{loan_type}}'
amount: '{{requested_amount}}'
outputParameters:
- name: approved_amount
type: number
mapping: $.preapproval.approvedAmount
- name: interest_rate
type: number
mapping: $.preapproval.interestRate
- name: monthly_payment
type: number
mapping: $.preapproval.monthlyPayment
consumes:
- type: http
namespace: lending-api
baseUri: https://api.ing.com/lending/v1
authentication:
type: bearer
token: $secrets.ing_lending_api_token
resources:
- name: preapprovals
path: /preapprovals
operations:
- name: calculate-preapproval
method: POST
Checks the status of iDEAL payment transactions processed through ING, providing real-time settlement confirmation and reconciliation data for merchants.
naftiko: '0.5'
info:
label: iDEAL Payment Gateway Status Checker
description: Checks the status of iDEAL payment transactions processed through ING, providing real-time settlement confirmation and reconciliation data for merchants.
tags:
- payments
- ideal
- merchant-services
capability:
exposes:
- type: mcp
namespace: ideal-payments
port: 8080
tools:
- name: check-ideal-payment-status
description: Check the status of an iDEAL payment transaction.
inputParameters:
- name: transaction_id
in: body
type: string
description: The iDEAL transaction identifier.
- name: merchant_id
in: body
type: string
description: The ING merchant account identifier.
call: payments-api.get-ideal-status
with:
transaction: '{{transaction_id}}'
merchant: '{{merchant_id}}'
outputParameters:
- name: payment_status
type: string
mapping: $.payment.status
- name: amount
type: number
mapping: $.payment.amount
- name: settlement_date
type: string
mapping: $.payment.settlementDate
consumes:
- type: http
namespace: payments-api
baseUri: https://api.ing.com/payments/v1
authentication:
type: bearer
token: $secrets.ing_payments_api_token
resources:
- name: ideal-transactions
path: /ideal/transactions/{{transaction}}
inputParameters:
- name: transaction
in: path
operations:
- name: get-ideal-status
method: GET
Retrieves market data from FactSet for ING investment analysis, returning current price, daily change, volume, and 52-week range for a given security.
naftiko: '0.5'
info:
label: FactSet Market Data Retriever
description: Retrieves market data from FactSet for ING investment analysis, returning current price, daily change, volume, and 52-week range for a given security.
tags:
- market-data
- factset
- trading
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-market-data
description: Retrieve market data from FactSet for a security.
inputParameters:
- name: ticker
in: body
type: string
description: The security ticker symbol.
call: factset.get-quote
with:
ticker: '{{ticker}}'
outputParameters:
- name: price
type: string
mapping: $.data[0].price
- name: daily_change
type: string
mapping: $.data[0].change
- name: volume
type: number
mapping: $.data[0].volume
- name: range_52w
type: string
mapping: $.data[0].range52Week
consumes:
- type: http
namespace: factset
baseUri: https://api.factset.com/content/factset-prices/v1
authentication:
type: basic
username: $secrets.factset_user
password: $secrets.factset_password
resources:
- name: quotes
path: /prices?ids={{ticker}}
inputParameters:
- name: ticker
in: query
operations:
- name: get-quote
method: GET
Processes an instant payment by validating the sender account in Temenos, running fraud detection, executing the payment, and sending a push notification to the customer via the mobile banking API.
naftiko: '0.5'
info:
label: Instant Payment with Fraud Screening Orchestrator
description: Processes an instant payment by validating the sender account in Temenos, running fraud detection, executing the payment, and sending a push notification to the customer via the mobile banking API.
tags:
- payments
- fraud-detection
- temenos-transact
- banking
capability:
exposes:
- type: mcp
namespace: instant-payments
port: 8080
tools:
- name: process-instant-payment
description: Process an instant payment with fraud screening.
inputParameters:
- name: sender_account
in: body
type: string
description: Sender account number.
- name: recipient_iban
in: body
type: string
description: Recipient IBAN.
- name: amount
in: body
type: string
description: Payment amount.
steps:
- name: validate-account
type: call
call: temenos.get-account
with:
account_id: '{{sender_account}}'
- name: screen-fraud
type: call
call: fraud-engine.screen-payment
with:
sender: '{{sender_account}}'
recipient: '{{recipient_iban}}'
amount: '{{amount}}'
- name: execute-payment
type: call
call: temenos.create-instant-payment
with:
debit_account: '{{sender_account}}'
credit_iban: '{{recipient_iban}}'
amount: '{{amount}}'
- name: notify-customer
type: call
call: mobile-api.send-push
with:
account_id: '{{sender_account}}'
message: 'Payment of {{amount}} EUR to {{recipient_iban}} completed. Ref: {{execute-payment.reference}}.'
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- name: instant-payments
path: /payments/instant
operations:
- name: create-instant-payment
method: POST
- type: http
namespace: fraud-engine
baseUri: https://fraud-detection.ing.com/api/v2
authentication:
type: bearer
token: $secrets.fraud_engine_token
resources:
- name: screening
path: /screen
operations:
- name: screen-payment
method: POST
- type: http
namespace: mobile-api
baseUri: https://mobile-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.mobile_api_token
resources:
- name: notifications
path: /push/send
operations:
- name: send-push
method: POST
Queries Oracle Enterprise Manager for database performance metrics, returning active sessions, wait events, tablespace utilization, and SQL execution statistics.
naftiko: '0.5'
info:
label: Oracle Database Performance Monitor
description: Queries Oracle Enterprise Manager for database performance metrics, returning active sessions, wait events, tablespace utilization, and SQL execution statistics.
tags:
- infrastructure
- oracle-enterprise-manager
- monitoring
capability:
exposes:
- type: mcp
namespace: db-performance
port: 8080
tools:
- name: get-db-metrics
description: Retrieve Oracle database performance metrics.
inputParameters:
- name: database_id
in: body
type: string
description: The Oracle database identifier.
call: oem.get-metrics
with:
database_id: '{{database_id}}'
outputParameters:
- name: active_sessions
type: number
mapping: $.metrics.activeSessions
- name: top_wait_event
type: string
mapping: $.metrics.topWaitEvent
- name: tablespace_pct
type: string
mapping: $.metrics.tablespaceUtilization
consumes:
- type: http
namespace: oem
baseUri: https://oem.ing.com/em/websvcs/restful/emws/db/v1
authentication:
type: basic
username: $secrets.oem_user
password: $secrets.oem_password
resources:
- name: databases
path: /databases/{{database_id}}/metrics
inputParameters:
- name: database_id
in: path
operations:
- name: get-metrics
method: GET
Retrieves usage analytics from Adobe Analytics for ING's digital banking platform.
naftiko: '0.5'
info:
label: Adobe Analytics Digital Banking Reporter
description: Retrieves usage analytics from Adobe Analytics for ING's digital banking platform.
tags:
- analytics
- digital-banking
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: digital-analytics
port: 8080
tools:
- name: get-banking-analytics
description: Retrieve digital banking analytics 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: active_users
type: string
mapping: $.report.data.rows[0].value
- name: login_count
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
Creates a general ledger journal entry in SAP for financial accounting.
naftiko: '0.5'
info:
label: SAP General Ledger Entry Creator
description: Creates a general ledger journal entry in SAP for financial accounting.
tags:
- finance
- accounting
- sap
capability:
exposes:
- type: mcp
namespace: finance-gl
port: 8080
tools:
- name: create-journal-entry
description: Create a GL journal entry in SAP.
inputParameters:
- name: company_code
in: body
type: string
description: SAP company code.
- name: posting_date
in: body
type: string
description: Posting date YYYY-MM-DD.
- name: line_items
in: body
type: string
description: JSON array of line items.
call: sap.create-journal
with:
company_code: '{{company_code}}'
posting_date: '{{posting_date}}'
line_items: '{{line_items}}'
consumes:
- type: http
namespace: sap
baseUri: https://ing-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_JournalEntryHeader
operations:
- name: create-journal
method: POST
Tracks savings goal progress for ING retail customers, calculating projected completion dates and suggesting automatic transfer adjustments to meet targets.
naftiko: '0.5'
info:
label: Savings Goal Progress Tracker
description: Tracks savings goal progress for ING retail customers, calculating projected completion dates and suggesting automatic transfer adjustments to meet targets.
tags:
- retail-banking
- savings
- personal-finance
capability:
exposes:
- type: mcp
namespace: savings-goals
port: 8080
tools:
- name: get-savings-goal-progress
description: Retrieve savings goal progress and projected completion date.
inputParameters:
- name: customer_id
in: body
type: string
description: The ING customer identifier.
- name: goal_id
in: body
type: string
description: The savings goal identifier.
call: savings-api.get-goal-progress
with:
customer: '{{customer_id}}'
goal: '{{goal_id}}'
outputParameters:
- name: current_balance
type: number
mapping: $.goal.currentBalance
- name: target_amount
type: number
mapping: $.goal.targetAmount
- name: projected_completion_date
type: string
mapping: $.goal.projectedCompletionDate
consumes:
- type: http
namespace: savings-api
baseUri: https://api.ing.com/retail/v1
authentication:
type: bearer
token: $secrets.ing_retail_api_token
resources:
- name: goals
path: /customers/{{customer}}/savings-goals/{{goal}}
inputParameters:
- name: customer
in: path
- name: goal
in: path
operations:
- name: get-goal-progress
method: GET
Checks the status of a MuleSoft API integration for ING's middleware layer.
naftiko: '0.5'
info:
label: MuleSoft API Integration Status
description: Checks the status of a MuleSoft API integration for ING's middleware layer.
tags:
- it-operations
- integrations
- mulesoft
capability:
exposes:
- type: mcp
namespace: integration-status
port: 8080
tools:
- name: get-api-status
description: Check MuleSoft API integration status.
inputParameters:
- name: api_id
in: body
type: string
description: MuleSoft API ID.
call: mulesoft.get-api-status
with:
api_id: '{{api_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: uptime
type: string
mapping: $.uptime
consumes:
- type: http
namespace: mulesoft
baseUri: https://anypoint.mulesoft.com/apimanager/api/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: apis
path: /organizations/{{org_id}}/environments/{{env_id}}/apis/{{api_id}}
inputParameters:
- name: api_id
in: path
operations:
- name: get-api-status
method: GET
When a suspicious transaction alert fires, retrieves transaction details, creates a compliance case in ServiceNow, and notifies the AML team via Microsoft Teams.
naftiko: '0.5'
info:
label: Transaction Monitoring Alert Handler
description: When a suspicious transaction alert fires, retrieves transaction details, creates a compliance case in ServiceNow, and notifies the AML team via Microsoft Teams.
tags:
- compliance
- anti-money-laundering
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: transaction-monitoring
port: 8080
tools:
- name: handle-alert
description: Process a transaction monitoring alert across ServiceNow and Teams.
inputParameters:
- name: alert_id
in: body
type: string
description: The transaction monitoring alert ID.
steps:
- name: get-alert
type: call
call: txn-monitoring.get-alert
with:
alert_id: '{{alert_id}}'
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'AML Alert: {{get-alert.customer_name}} - {{get-alert.alert_type}}'
priority: '1'
category: aml_compliance
description: 'Transaction: {{get-alert.transaction_id}}. Amount: {{get-alert.amount}} {{get-alert.currency}}. Score: {{get-alert.risk_score}}'
- name: notify-aml
type: call
call: msteams.send-message
with:
channel_id: aml_investigations
text: 'AML Alert {{alert_id}}: {{get-alert.customer_name}} - {{get-alert.alert_type}}. Amount: {{get-alert.amount}} {{get-alert.currency}}. Case: {{create-case.number}}'
consumes:
- type: http
namespace: txn-monitoring
baseUri: https://txn-monitoring.ing.com/api/v1
authentication:
type: bearer
token: $secrets.txn_monitoring_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: servicenow
baseUri: https://ing.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Pulls financial data from SAP and generates a regulatory compliance report, storing it in SharePoint and notifying the compliance team.
naftiko: '0.5'
info:
label: Regulatory Report Generator
description: Pulls financial data from SAP and generates a regulatory compliance report, storing it in SharePoint and notifying the compliance team.
tags:
- compliance
- reporting
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-report
description: Generate a regulatory report from SAP data and store in SharePoint.
inputParameters:
- name: report_type
in: body
type: string
description: Report type (e.g., COREP, FINREP, LCR).
- name: reporting_period
in: body
type: string
description: Reporting period YYYY-QN.
steps:
- name: get-financial-data
type: call
call: sap.get-financial-report
with:
report_type: '{{report_type}}'
period: '{{reporting_period}}'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: regulatory_reports
folder_path: '{{report_type}}/{{reporting_period}}'
content: '{{get-financial-data.report_data}}'
- name: notify-compliance
type: call
call: msteams.send-message
with:
channel_id: regulatory_compliance
text: '{{report_type}} report for {{reporting_period}} generated and stored. URL: {{store-report.download_url}}'
consumes:
- type: http
namespace: sap
baseUri: https://ing-s4.sap.com/sap/opu/odata/sap/API_FINANCIAL_REPORTING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: reports
path: /A_FinancialReport
inputParameters:
- name: $filter
in: query
value: ReportType eq '{{report_type}}' and Period eq '{{period}}'
operations:
- name: get-financial-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}}:/content
inputParameters:
- name: site_id
in: path
- name: folder_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/{{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 derivatives trading position from Murex by trade ID, returning notional amount, mark-to-market value, counterparty, and maturity date.
naftiko: '0.5'
info:
label: Murex Derivatives Position Lookup
description: Retrieves a derivatives trading position from Murex by trade ID, returning notional amount, mark-to-market value, counterparty, and maturity date.
tags:
- trading
- derivatives
- murex
capability:
exposes:
- type: mcp
namespace: derivatives-positions
port: 8080
tools:
- name: get-position
description: Look up a derivatives position in Murex.
inputParameters:
- name: trade_id
in: body
type: string
description: The Murex trade ID.
call: murex.get-trade
with:
trade_id: '{{trade_id}}'
outputParameters:
- name: notional
type: string
mapping: $.trade.notionalAmount
- name: mtm_value
type: string
mapping: $.trade.markToMarket
- name: counterparty
type: string
mapping: $.trade.counterpartyName
- name: maturity
type: string
mapping: $.trade.maturityDate
consumes:
- type: http
namespace: murex
baseUri: https://murex.ing.com/api/v2
authentication:
type: bearer
token: $secrets.murex_token
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
Assigns a Pluralsight learning path to an ING employee and notifies via Teams.
naftiko: '0.5'
info:
label: Pluralsight Training Assigner
description: Assigns a Pluralsight learning path to an ING employee and notifies 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.
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: {{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
Retrieves a customer's account balance and details from the core banking system, returning current balance, available balance, account type, and currency.
naftiko: '0.5'
info:
label: Customer Account Balance Lookup
description: Retrieves a customer's account balance and details from the core banking system, returning current balance, available balance, account type, and currency.
tags:
- banking
- accounts
- temenos-transact
capability:
exposes:
- type: mcp
namespace: account-banking
port: 8080
tools:
- name: get-account-balance
description: Look up a customer account balance by account number.
inputParameters:
- name: account_id
in: body
type: string
description: The ING account number.
call: temenos.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: current_balance
type: string
mapping: $.body.currentBalance
- name: available_balance
type: string
mapping: $.body.availableBalance
- name: currency
type: string
mapping: $.body.currency
- name: account_type
type: string
mapping: $.body.accountType
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Retrieves current FX rates from the treasury system, returning bid, ask, and mid rates for a currency pair.
naftiko: '0.5'
info:
label: Foreign Exchange Rate Lookup
description: Retrieves current FX rates from the treasury system, returning bid, ask, and mid rates for a currency pair.
tags:
- banking
- treasury
- foreign-exchange
capability:
exposes:
- type: mcp
namespace: fx-rates
port: 8080
tools:
- name: get-fx-rate
description: Look up FX rate for a currency pair.
inputParameters:
- name: base_currency
in: body
type: string
description: Base currency code.
- name: quote_currency
in: body
type: string
description: Quote currency code.
call: treasury.get-rate
with:
base: '{{base_currency}}'
quote: '{{quote_currency}}'
outputParameters:
- name: bid
type: string
mapping: $.bid
- name: ask
type: string
mapping: $.ask
- name: mid
type: string
mapping: $.mid
consumes:
- type: http
namespace: treasury
baseUri: https://treasury.ing.com/api/v1
authentication:
type: bearer
token: $secrets.treasury_token
resources:
- name: fx-rates
path: /rates/{{base}}/{{quote}}
inputParameters:
- name: base
in: path
- name: quote
in: path
operations:
- name: get-rate
method: GET
Generates a regulatory Excel report with data from SAP financial systems.
naftiko: '0.5'
info:
label: Microsoft Excel Regulatory Report Builder
description: Generates a regulatory Excel report with data from SAP financial systems.
tags:
- compliance
- reporting
- microsoft-excel
- sap
capability:
exposes:
- type: mcp
namespace: reg-reporting
port: 8080
tools:
- name: build-report
description: Build a regulatory Excel report from SAP data.
inputParameters:
- name: report_type
in: body
type: string
description: Report type.
- name: period
in: body
type: string
description: Reporting period.
steps:
- name: get-data
type: call
call: sap.get-financial-data
with:
report_type: '{{report_type}}'
period: '{{period}}'
- name: update-workbook
type: call
call: excel.update-range
with:
workbook_id: reg_{{report_type}}
sheet_name: Data
range: A2:Z100
values: '{{get-data.results}}'
consumes:
- type: http
namespace: sap
baseUri: https://ing-s4.sap.com/sap/opu/odata/sap/API_FINANCIAL_REPORTING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: reports
path: /A_FinancialReport
operations:
- name: get-financial-data
method: GET
- 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
Screens cross-border payment transactions against international sanctions lists including EU, OFAC, and UN, flagging potential matches for compliance review.
naftiko: '0.5'
info:
label: Cross-Border Payment Sanctions Screener
description: Screens cross-border payment transactions against international sanctions lists including EU, OFAC, and UN, flagging potential matches for compliance review.
tags:
- compliance
- sanctions-screening
- cross-border-payments
capability:
exposes:
- type: mcp
namespace: sanctions-screening
port: 8080
tools:
- name: screen-payment-sanctions
description: Screen a cross-border payment against sanctions lists.
inputParameters:
- name: payment_id
in: body
type: string
description: The payment transaction identifier.
- name: beneficiary_name
in: body
type: string
description: Name of the payment beneficiary.
- name: destination_country
in: body
type: string
description: ISO country code of the destination.
call: compliance-api.screen-sanctions
with:
payment: '{{payment_id}}'
beneficiary: '{{beneficiary_name}}'
country: '{{destination_country}}'
outputParameters:
- name: screening_result
type: string
mapping: $.screening.result
- name: matches_found
type: integer
mapping: $.screening.matchesFound
- name: risk_level
type: string
mapping: $.screening.riskLevel
consumes:
- type: http
namespace: compliance-api
baseUri: https://api.ing.com/compliance/v1
authentication:
type: bearer
token: $secrets.ing_compliance_api_token
resources:
- name: sanctions-checks
path: /sanctions-screening
operations:
- name: screen-sanctions
method: POST
Uploads an audit or compliance document to Box and returns a shared link.
naftiko: '0.5'
info:
label: Box Audit Document Uploader
description: Uploads an audit or compliance document to Box and returns a shared link.
tags:
- compliance
- documents
- box
capability:
exposes:
- type: mcp
namespace: audit-docs
port: 8080
tools:
- name: upload-audit-doc
description: Upload an audit document to Box.
inputParameters:
- name: folder_id
in: body
type: string
description: Box folder ID.
- name: file_name
in: body
type: string
description: File name.
- name: file_content
in: body
type: string
description: Base64-encoded content.
call: box.upload-file
with:
folder_id: '{{folder_id}}'
file_name: '{{file_name}}'
content: '{{file_content}}'
outputParameters:
- 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
Retrieves fixed deposit account details from Temenos Transact, returning principal amount, interest rate, maturity date, and accrued interest.
naftiko: '0.5'
info:
label: Temenos Fixed Deposit Lookup
description: Retrieves fixed deposit account details from Temenos Transact, returning principal amount, interest rate, maturity date, and accrued interest.
tags:
- banking
- deposits
- temenos-transact
capability:
exposes:
- type: mcp
namespace: fixed-deposits
port: 8080
tools:
- name: get-deposit
description: Look up a fixed deposit in Temenos Transact.
inputParameters:
- name: deposit_id
in: body
type: string
description: The fixed deposit account ID.
call: temenos.get-deposit
with:
deposit_id: '{{deposit_id}}'
outputParameters:
- name: principal
type: string
mapping: $.body.principalAmount
- name: interest_rate
type: string
mapping: $.body.interestRate
- name: maturity_date
type: string
mapping: $.body.maturityDate
- name: accrued_interest
type: string
mapping: $.body.accruedInterest
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: deposits
path: /deposits/{{deposit_id}}
inputParameters:
- name: deposit_id
in: path
operations:
- name: get-deposit
method: GET
Queries Cloudflare for WAF events targeting ING web properties.
naftiko: '0.5'
info:
label: Cloudflare WAF Event Monitor
description: Queries Cloudflare for WAF events targeting ING 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: events
type: string
mapping: $.result
- 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
Retrieves trade details from the Murex trading platform, returning trade type, notional, counterparty, and maturity date.
naftiko: '0.5'
info:
label: Murex Trade Booking Lookup
description: Retrieves trade details from the Murex trading platform, returning trade type, notional, counterparty, and maturity date.
tags:
- banking
- trading
- murex
capability:
exposes:
- type: mcp
namespace: trade-management
port: 8080
tools:
- name: get-trade
description: Look up a trade in Murex by trade ID.
inputParameters:
- name: trade_id
in: body
type: string
description: Murex trade ID.
call: murex.get-trade
with:
trade_id: '{{trade_id}}'
outputParameters:
- name: trade_type
type: string
mapping: $.tradeType
- name: notional
type: string
mapping: $.notionalAmount
- name: counterparty
type: string
mapping: $.counterpartyName
- name: maturity_date
type: string
mapping: $.maturityDate
consumes:
- type: http
namespace: murex
baseUri: https://murex.ing.com/api/v1
authentication:
type: bearer
token: $secrets.murex_token
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
Runs a risk analytics query in Snowflake, returning portfolio-level risk metrics.
naftiko: '0.5'
info:
label: Snowflake Risk Analytics Query
description: Runs a risk analytics query in Snowflake, returning portfolio-level risk metrics.
tags:
- risk
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: risk-analytics
port: 8080
tools:
- name: query-risk-data
description: Run a risk analytics query in Snowflake.
inputParameters:
- name: portfolio_id
in: body
type: string
description: Portfolio identifier.
call: snowflake.execute-query
with:
statement: SELECT total_exposure, var_95, expected_loss, risk_weighted_assets FROM PORTFOLIO_RISK WHERE portfolio_id = '{{portfolio_id}}'
outputParameters:
- name: total_exposure
type: string
mapping: $.data[0][0]
- name: var_95
type: string
mapping: $.data[0][1]
- name: expected_loss
type: string
mapping: $.data[0][2]
consumes:
- type: http
namespace: snowflake
baseUri: https://ing.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Triggers a Power Automate flow for custom ING automations.
naftiko: '0.5'
info:
label: Microsoft Power Automate Flow Trigger
description: Triggers a Power Automate flow for custom ING automations.
tags:
- automation
- microsoft-power-automate
capability:
exposes:
- type: mcp
namespace: flow-trigger
port: 8080
tools:
- name: trigger-flow
description: Trigger a Power Automate flow.
inputParameters:
- name: flow_id
in: body
type: string
description: Flow ID.
- name: payload
in: body
type: string
description: JSON payload.
call: power-automate.invoke-flow
with:
flow_id: '{{flow_id}}'
payload: '{{payload}}'
consumes:
- type: http
namespace: power-automate
baseUri: https://prod-00.westus.logic.azure.com/workflows
authentication:
type: bearer
token: $secrets.power_automate_token
resources:
- name: flows
path: /{{flow_id}}/triggers/manual/paths/invoke
inputParameters:
- name: flow_id
in: path
operations:
- name: invoke-flow
method: POST
Searches for documents in ING's shared Google Drive.
naftiko: '0.5'
info:
label: Google Drive Document Finder
description: Searches for documents in ING's shared Google Drive.
tags:
- documents
- google-drive
capability:
exposes:
- type: mcp
namespace: gdrive-search
port: 8080
tools:
- name: search-docs
description: Search for documents 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
Retrieves a ServiceNow incident by number, returning state, assigned group, and priority.
naftiko: '0.5'
info:
label: ServiceNow IT Incident Status Lookup
description: Retrieves a ServiceNow incident by number, returning state, assigned group, and priority.
tags:
- it-operations
- servicenow
capability:
exposes:
- type: mcp
namespace: incident-status
port: 8080
tools:
- name: get-incident
description: Look up a ServiceNow incident by number.
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: assigned_to
type: string
mapping: $.result.assigned_to.display_value
- name: priority
type: string
mapping: $.result.priority
consumes:
- type: http
namespace: servicenow
baseUri: https://ing.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 application performance from New Relic for ING's online banking platform.
naftiko: '0.5'
info:
label: New Relic Banking Platform Monitor
description: Retrieves application performance from New Relic for ING's online banking platform.
tags:
- it-operations
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: app-performance
port: 8080
tools:
- name: get-app-metrics
description: Get app performance from New Relic.
inputParameters:
- name: app_id
in: body
type: string
description: New Relic app 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
When a new customer account is opened, runs KYC verification checks, updates the customer profile in the CRM, and logs the verification outcome in ServiceNow.
naftiko: '0.5'
info:
label: KYC Customer Verification Orchestrator
description: When a new customer account is opened, runs KYC verification checks, updates the customer profile in the CRM, and logs the verification outcome in ServiceNow.
tags:
- compliance
- banking
- know-your-customer
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: kyc-verification
port: 8080
tools:
- name: run-kyc-check
description: Orchestrate KYC verification for a new customer.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer ID.
- name: full_name
in: body
type: string
description: Customer full name.
- name: date_of_birth
in: body
type: string
description: Date of birth YYYY-MM-DD.
- name: nationality
in: body
type: string
description: Customer nationality.
steps:
- name: verify-identity
type: call
call: kyc.verify-customer
with:
name: '{{full_name}}'
dob: '{{date_of_birth}}'
nationality: '{{nationality}}'
- name: update-crm
type: call
call: salesforce.update-contact
with:
customer_id: '{{customer_id}}'
kyc_status: '{{verify-identity.result}}'
kyc_date: '{{verify-identity.verification_date}}'
- name: log-outcome
type: call
call: servicenow.create-incident
with:
short_description: 'KYC verification: {{full_name}} - {{verify-identity.result}}'
category: kyc_compliance
description: 'Customer: {{customer_id}}. Result: {{verify-identity.result}}. Risk score: {{verify-identity.risk_score}}'
consumes:
- type: http
namespace: kyc
baseUri: https://kyc-platform.ing.com/api/v1
authentication:
type: bearer
token: $secrets.kyc_token
resources:
- name: verifications
path: /verify
operations:
- name: verify-customer
method: POST
- type: http
namespace: salesforce
baseUri: https://ing.my.salesforce.com/services/data/v58.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: servicenow
baseUri: https://ing.service-now.com/api/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 infrastructure health metrics of ING's banking platform.
naftiko: '0.5'
info:
label: Datadog Platform Health Monitor
description: Queries Datadog for infrastructure health metrics of ING's banking 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.
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
Logs environmental, social, and governance metrics to a Google Sheet for ING's sustainability reporting.
naftiko: '0.5'
info:
label: Google Sheets ESG Metrics Logger
description: Logs environmental, social, and governance metrics to a Google Sheet for ING's sustainability reporting.
tags:
- sustainability
- compliance
- google-sheets
capability:
exposes:
- type: mcp
namespace: esg-tracking
port: 8080
tools:
- name: log-esg-metrics
description: Log ESG metrics to Google Sheets.
inputParameters:
- name: quarter
in: body
type: string
description: Quarter (YYYY-QN).
- name: co2_emissions
in: body
type: string
description: CO2 emissions in tonnes.
- name: green_financing
in: body
type: string
description: Green financing volume in EUR.
call: gsheets.append-row
with:
spreadsheet_id: esg_reporting
range: Metrics!A:C
values: '{{quarter}},{{co2_emissions}},{{green_financing}}'
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
Manages PSD2 open banking consent flows for third-party account access, handling consent creation, status tracking, and revocation across ING retail accounts.
naftiko: '0.5'
info:
label: PSD2 Account Access Consent Manager
description: Manages PSD2 open banking consent flows for third-party account access, handling consent creation, status tracking, and revocation across ING retail accounts.
tags:
- open-banking
- psd2
- consent-management
capability:
exposes:
- type: mcp
namespace: psd2-consent
port: 8080
tools:
- name: manage-account-consent
description: Create or revoke a PSD2 account access consent.
inputParameters:
- name: customer_id
in: body
type: string
description: The ING customer identifier.
- name: tpp_id
in: body
type: string
description: The third-party provider identifier.
- name: action
in: body
type: string
description: Action to perform such as create or revoke.
call: open-banking-api.manage-consent
with:
customer: '{{customer_id}}'
tpp: '{{tpp_id}}'
action: '{{action}}'
outputParameters:
- name: consent_id
type: string
mapping: $.consent.consentId
- name: status
type: string
mapping: $.consent.status
- name: valid_until
type: string
mapping: $.consent.validUntil
consumes:
- type: http
namespace: open-banking-api
baseUri: https://api.ing.com/open-banking/v1
authentication:
type: bearer
token: $secrets.ing_open_banking_token
resources:
- name: consents
path: /consents
operations:
- name: manage-consent
method: POST
Syncs Workday time entries to ADP for payroll processing and confirms via Teams.
naftiko: '0.5'
info:
label: ADP Payroll 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 payroll.
inputParameters:
- name: pay_period
in: body
type: string
description: Pay period.
steps:
- name: get-entries
type: call
call: workday.get-time-entries
with:
pay_period: '{{pay_period}}'
- 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 {{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
Processes a payment transfer by validating the sender account, running compliance screening via the sanctions system, executing the payment in the core banking platform, and sending confirmation via WhatsApp.
naftiko: '0.5'
info:
label: Payment Transfer Orchestrator
description: Processes a payment transfer by validating the sender account, running compliance screening via the sanctions system, executing the payment in the core banking platform, and sending confirmation via WhatsApp.
tags:
- payments
- banking
- compliance
- temenos-transact
- whatsapp
capability:
exposes:
- type: mcp
namespace: payment-transfers
port: 8080
tools:
- name: process-transfer
description: Orchestrate a payment transfer with compliance checks and notification.
inputParameters:
- name: sender_account
in: body
type: string
description: Sender account number.
- name: recipient_account
in: body
type: string
description: Recipient account number.
- name: amount
in: body
type: string
description: Transfer amount.
- name: currency
in: body
type: string
description: Currency code (EUR, USD).
steps:
- name: validate-sender
type: call
call: temenos.get-account
with:
account_id: '{{sender_account}}'
- name: screen-sanctions
type: call
call: compliance.screen-payment
with:
sender: '{{sender_account}}'
recipient: '{{recipient_account}}'
amount: '{{amount}}'
currency: '{{currency}}'
- name: execute-payment
type: call
call: temenos.create-payment
with:
debit_account: '{{sender_account}}'
credit_account: '{{recipient_account}}'
amount: '{{amount}}'
currency: '{{currency}}'
- name: send-confirmation
type: call
call: whatsapp.send-message
with:
phone: '{{validate-sender.phone_number}}'
template: payment_confirmed
parameters: '{{amount}} {{currency}},{{recipient_account}},{{execute-payment.reference}}'
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: accounts
path: /accounts/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- name: payments
path: /payments/transfer
operations:
- name: create-payment
method: POST
- type: http
namespace: compliance
baseUri: https://compliance-screening.ing.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: screening
path: /sanctions/screen
operations:
- name: screen-payment
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
Queries Google BigQuery for ING data analytics, returning query results, rows processed, and bytes billed for business intelligence reporting.
naftiko: '0.5'
info:
label: Google Cloud BigQuery Analytics
description: Queries Google BigQuery for ING data analytics, returning query results, rows processed, and bytes billed for business intelligence reporting.
tags:
- analytics
- google-cloud-platform
- data
capability:
exposes:
- type: mcp
namespace: bigquery-analytics
port: 8080
tools:
- name: run-query
description: Execute a BigQuery analytics query.
inputParameters:
- name: query
in: body
type: string
description: The SQL query to execute.
call: bigquery.execute-query
with:
query: '{{query}}'
outputParameters:
- name: total_rows
type: number
mapping: $.totalRows
- name: bytes_billed
type: string
mapping: $.totalBytesProcessed
- name: results
type: string
mapping: $.rows
consumes:
- type: http
namespace: bigquery
baseUri: https://bigquery.googleapis.com/bigquery/v2
authentication:
type: bearer
token: $secrets.gcp_token
resources:
- name: queries
path: /projects/{{project_id}}/queries
inputParameters:
- name: project_id
in: path
operations:
- name: execute-query
method: POST
Retrieves a secret value from Azure Key Vault for secure configuration management.
naftiko: '0.5'
info:
label: Azure Key Vault Secret Retriever
description: Retrieves a secret value from Azure Key Vault for secure configuration management.
tags:
- security
- it-operations
- azure-key-vault
capability:
exposes:
- type: mcp
namespace: secret-management
port: 8080
tools:
- name: get-secret
description: Retrieve a secret from Azure Key Vault.
inputParameters:
- name: vault_name
in: body
type: string
description: Key Vault name.
- name: secret_name
in: body
type: string
description: Secret name.
call: keyvault.get-secret
with:
vault_name: '{{vault_name}}'
secret_name: '{{secret_name}}'
outputParameters:
- name: value
type: string
mapping: $.value
- name: created
type: string
mapping: $.attributes.created
consumes:
- type: http
namespace: keyvault
baseUri: https://{{vault_name}}.vault.azure.net
authentication:
type: bearer
token: $secrets.azure_keyvault_token
resources:
- name: secrets
path: /secrets/{{secret_name}}
inputParameters:
- name: secret_name
in: path
- name: api-version
in: query
value: '7.4'
operations:
- name: get-secret
method: GET
Tracks ING's green and sustainability bond portfolio performance, monitoring ESG compliance metrics and carbon offset reporting for institutional investors.
naftiko: '0.5'
info:
label: Sustainability Bond Portfolio Tracker
description: Tracks ING's green and sustainability bond portfolio performance, monitoring ESG compliance metrics and carbon offset reporting for institutional investors.
tags:
- sustainable-finance
- bonds
- esg-reporting
capability:
exposes:
- type: mcp
namespace: sustainability-bonds
port: 8080
tools:
- name: get-bond-portfolio-metrics
description: Retrieve sustainability bond portfolio metrics and ESG scores.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The bond portfolio identifier.
- name: reporting_period
in: body
type: string
description: Reporting period in YYYY-QN format.
call: sustainable-finance-api.get-portfolio-metrics
with:
portfolio: '{{portfolio_id}}'
period: '{{reporting_period}}'
outputParameters:
- name: total_green_assets
type: number
mapping: $.portfolio.totalGreenAssets
- name: carbon_offset_tonnes
type: number
mapping: $.portfolio.carbonOffsetTonnes
- name: esg_compliance_score
type: number
mapping: $.portfolio.esgComplianceScore
consumes:
- type: http
namespace: sustainable-finance-api
baseUri: https://api.ing.com/sustainable-finance/v1
authentication:
type: bearer
token: $secrets.ing_sustainable_finance_token
resources:
- name: portfolios
path: /bond-portfolios/{{portfolio}}/metrics
inputParameters:
- name: portfolio
in: path
operations:
- name: get-portfolio-metrics
method: GET
Retrieves a payroll summary for an ING employee from Workday.
naftiko: '0.5'
info:
label: Workday Payroll Summary Retriever
description: Retrieves a payroll summary for an ING employee from Workday.
tags:
- hr
- payroll
- workday
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll
description: Retrieve the latest payroll summary.
inputParameters:
- name: worker_id
in: body
type: string
description: 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
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 OpenShift cluster health for ING microservices platform, returning node readiness count, pod status summary, and cluster version.
naftiko: '0.5'
info:
label: Red Hat OpenShift Cluster Status
description: Retrieves OpenShift cluster health for ING microservices platform, returning node readiness count, pod status summary, and cluster version.
tags:
- infrastructure
- openshift
- monitoring
capability:
exposes:
- type: mcp
namespace: openshift-health
port: 8080
tools:
- name: get-cluster-status
description: Retrieve OpenShift cluster health status.
inputParameters:
- name: cluster_name
in: body
type: string
description: The OpenShift cluster name.
call: openshift.get-cluster
with:
cluster_name: '{{cluster_name}}'
outputParameters:
- name: ready_nodes
type: number
mapping: $.status.readyNodes
- name: pod_summary
type: string
mapping: $.status.podSummary
- name: version
type: string
mapping: $.status.version
consumes:
- type: http
namespace: openshift
baseUri: https://api.openshift.ing.com:6443
authentication:
type: bearer
token: $secrets.openshift_token
resources:
- name: clusters
path: /apis/config.openshift.io/v1/clusterversions
operations:
- name: get-cluster
method: GET
Manages daily liquidity by retrieving cash positions from Kondor, checking regulatory limits, executing money market transactions, and reporting to treasury management via Microsoft Teams.
naftiko: '0.5'
info:
label: Treasury Liquidity Management Orchestrator
description: Manages daily liquidity by retrieving cash positions from Kondor, checking regulatory limits, executing money market transactions, and reporting to treasury management via Microsoft Teams.
tags:
- treasury
- liquidity
- kondor
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: liquidity-management
port: 8080
tools:
- name: manage-liquidity
description: Execute daily liquidity management operations.
inputParameters:
- name: currency
in: body
type: string
description: The currency code (EUR, USD, GBP).
- name: business_date
in: body
type: string
description: The business date.
steps:
- name: get-cash-position
type: call
call: kondor.get-position
with:
currency: '{{currency}}'
date: '{{business_date}}'
- name: check-limits
type: call
call: risk-system.check-liquidity-limits
with:
currency: '{{currency}}'
position: '{{get-cash-position.net_position}}'
- name: execute-placement
type: call
call: kondor.create-money-market-deal
with:
currency: '{{currency}}'
amount: '{{check-limits.recommended_action_amount}}'
direction: '{{check-limits.recommended_direction}}'
- name: notify-treasury
type: call
call: teams.send-message
with:
channel: Treasury_Operations
message: 'Liquidity update for {{currency}} on {{business_date}}: Position {{get-cash-position.net_position}}. Action: {{check-limits.recommended_direction}} {{check-limits.recommended_action_amount}}. Deal ref: {{execute-placement.deal_id}}.'
consumes:
- type: http
namespace: kondor
baseUri: https://kondor.ing.com/api/v1
authentication:
type: bearer
token: $secrets.kondor_token
resources:
- name: positions
path: /positions/cash
operations:
- name: get-position
method: GET
- name: deals
path: /deals/money-market
operations:
- name: create-money-market-deal
method: POST
- type: http
namespace: risk-system
baseUri: https://risk-management.ing.com/api/v1
authentication:
type: bearer
token: $secrets.risk_system_token
resources:
- name: limits
path: /liquidity/check
operations:
- name: check-liquidity-limits
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 standing order details from Temenos Transact, returning beneficiary name, amount, frequency, and next execution date for an ING customer account.
naftiko: '0.5'
info:
label: Temenos Standing Order Lookup
description: Retrieves standing order details from Temenos Transact, returning beneficiary name, amount, frequency, and next execution date for an ING customer account.
tags:
- banking
- payments
- temenos-transact
capability:
exposes:
- type: mcp
namespace: standing-orders
port: 8080
tools:
- name: get-standing-order
description: Look up a standing order in Temenos Transact.
inputParameters:
- name: order_id
in: body
type: string
description: The standing order ID.
call: temenos.get-standing-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: beneficiary
type: string
mapping: $.body.beneficiaryName
- name: amount
type: string
mapping: $.body.amount
- name: frequency
type: string
mapping: $.body.frequency
- name: next_execution
type: string
mapping: $.body.nextExecutionDate
consumes:
- type: http
namespace: temenos
baseUri: https://core-banking.ing.com/api/v1
authentication:
type: bearer
token: $secrets.temenos_token
resources:
- name: standing-orders
path: /standing-orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-standing-order
method: GET
Checks API gateway health in MuleSoft Anypoint Platform, returning API status, response time, error rate, and active policy count.
naftiko: '0.5'
info:
label: MuleSoft API Gateway Health Check
description: Checks API gateway health in MuleSoft Anypoint Platform, returning API status, response time, error rate, and active policy count.
tags:
- integration
- mulesoft
- monitoring
capability:
exposes:
- type: mcp
namespace: api-gateway
port: 8080
tools:
- name: check-api-health
description: Check MuleSoft API gateway health.
inputParameters:
- name: api_id
in: body
type: string
description: The MuleSoft API ID.
call: mulesoft.get-api-status
with:
api_id: '{{api_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: avg_response_time
type: string
mapping: $.metrics.avgResponseTime
- name: error_rate
type: string
mapping: $.metrics.errorRate
consumes:
- type: http
namespace: mulesoft
baseUri: https://anypoint.mulesoft.com/apimanager/api/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: apis
path: /organizations/{{org_id}}/environments/{{env_id}}/apis/{{api_id}}
inputParameters:
- name: api_id
in: path
operations:
- name: get-api-status
method: GET
Compares ING mortgage rate offerings against market rates for Dutch residential properties, factoring in NHG guarantees, fixed-rate periods, and customer loyalty discounts.
naftiko: '0.5'
info:
label: Dutch Mortgage Rate Comparison Tool
description: Compares ING mortgage rate offerings against market rates for Dutch residential properties, factoring in NHG guarantees, fixed-rate periods, and customer loyalty discounts.
tags:
- mortgages
- retail-banking
- rate-comparison
capability:
exposes:
- type: mcp
namespace: mortgage-rates
port: 8080
tools:
- name: compare-mortgage-rates
description: Compare current ING mortgage rates with market averages.
inputParameters:
- name: property_value
in: body
type: number
description: Property value in EUR.
- name: loan_amount
in: body
type: number
description: Requested mortgage amount in EUR.
- name: fixed_rate_period
in: body
type: integer
description: Fixed rate period in years such as 5, 10, 20, or 30.
- name: nhg_eligible
in: body
type: boolean
description: Whether the mortgage qualifies for NHG guarantee.
call: mortgage-api.compare-rates
with:
property_value: '{{property_value}}'
loan: '{{loan_amount}}'
period: '{{fixed_rate_period}}'
nhg: '{{nhg_eligible}}'
outputParameters:
- name: ing_rate
type: number
mapping: $.comparison.ingRate
- name: market_average
type: number
mapping: $.comparison.marketAverage
- name: monthly_payment
type: number
mapping: $.comparison.monthlyPayment
consumes:
- type: http
namespace: mortgage-api
baseUri: https://api.ing.com/mortgages/v1
authentication:
type: bearer
token: $secrets.ing_mortgage_api_token
resources:
- name: rate-comparisons
path: /rate-comparisons
operations:
- name: compare-rates
method: POST
Retrieves treasury position details from the Kondor system for fixed income and derivatives portfolios.
naftiko: '0.5'
info:
label: Kondor Treasury Position Lookup
description: Retrieves treasury position details from the Kondor system for fixed income and derivatives portfolios.
tags:
- banking
- treasury
- kondor
capability:
exposes:
- type: mcp
namespace: treasury-positions
port: 8080
tools:
- name: get-position
description: Look up a treasury position in Kondor.
inputParameters:
- name: position_id
in: body
type: string
description: Kondor position ID.
call: kondor.get-position
with:
position_id: '{{position_id}}'
outputParameters:
- name: instrument
type: string
mapping: $.instrumentName
- name: notional
type: string
mapping: $.notionalAmount
- name: market_value
type: string
mapping: $.marketValue
consumes:
- type: http
namespace: kondor
baseUri: https://kondor.ing.com/api/v1
authentication:
type: bearer
token: $secrets.kondor_token
resources:
- name: positions
path: /positions/{{position_id}}
inputParameters:
- name: position_id
in: path
operations:
- name: get-position
method: GET
Orchestrates portfolio rebalancing for ING wealth clients by analyzing current allocations in Murex, generating trade orders, executing via the trading platform, and reporting results to the relationship manager via Salesforce.
naftiko: '0.5'
info:
label: Investment Portfolio Rebalancing Orchestrator
description: Orchestrates portfolio rebalancing for ING wealth clients by analyzing current allocations in Murex, generating trade orders, executing via the trading platform, and reporting results to the relationship manager via Salesforce.
tags:
- wealth-management
- trading
- murex
- salesforce
capability:
exposes:
- type: mcp
namespace: portfolio-rebalancing
port: 8080
tools:
- name: rebalance-portfolio
description: Orchestrate portfolio rebalancing for a wealth client.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio ID.
- name: target_model
in: body
type: string
description: The target allocation model.
steps:
- name: analyze-allocation
type: call
call: murex.get-portfolio-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: generate-orders
type: call
call: rebalancing-engine.calculate-trades
with:
portfolio_id: '{{portfolio_id}}'
target_model: '{{target_model}}'
current_positions: '{{analyze-allocation.positions}}'
- name: execute-trades
type: call
call: trading-platform.execute-orders
with:
order_list: '{{generate-orders.trade_list}}'
- name: update-rm
type: call
call: salesforce.create-activity
with:
subject: Portfolio {{portfolio_id}} rebalanced to {{target_model}}
description: 'Trades executed: {{execute-trades.trade_count}}. Net turnover: {{execute-trades.net_turnover}}.'
consumes:
- type: http
namespace: murex
baseUri: https://murex.ing.com/api/v2
authentication:
type: bearer
token: $secrets.murex_token
resources:
- name: portfolios
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-portfolio-positions
method: GET
- type: http
namespace: rebalancing-engine
baseUri: https://rebalancing.ing.com/api/v1
authentication:
type: bearer
token: $secrets.rebalancing_token
resources:
- name: calculations
path: /calculate
operations:
- name: calculate-trades
method: POST
- type: http
namespace: trading-platform
baseUri: https://trading.ing.com/api/v1
authentication:
type: bearer
token: $secrets.trading_token
resources:
- name: orders
path: /orders/execute
operations:
- name: execute-orders
method: POST
- type: http
namespace: salesforce
baseUri: https://ing.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/Task
operations:
- name: create-activity
method: POST
Retrieves the credit risk score for a customer from the internal risk engine, returning risk rating, probability of default, and exposure at default.
naftiko: '0.5'
info:
label: Credit Risk Score Retriever
description: Retrieves the credit risk score for a customer from the internal risk engine, returning risk rating, probability of default, and exposure at default.
tags:
- risk
- lending
- banking
capability:
exposes:
- type: mcp
namespace: credit-risk
port: 8080
tools:
- name: get-credit-risk
description: Retrieve credit risk score for a customer.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer ID.
call: risk-engine.get-score
with:
customer_id: '{{customer_id}}'
outputParameters:
- name: risk_rating
type: string
mapping: $.riskRating
- name: probability_of_default
type: string
mapping: $.probabilityOfDefault
- name: exposure_at_default
type: string
mapping: $.exposureAtDefault
- name: last_assessed
type: string
mapping: $.lastAssessmentDate
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.ing.com/api/v1
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: scores
path: /credit/scores/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: get-score
method: GET
Retrieves bond trade execution details from Tradeweb, returning execution price, yield, settlement date, and counterparty for ING fixed income trading.
naftiko: '0.5'
info:
label: Tradeweb Bond Execution Lookup
description: Retrieves bond trade execution details from Tradeweb, returning execution price, yield, settlement date, and counterparty for ING fixed income trading.
tags:
- trading
- fixed-income
- tradeweb
capability:
exposes:
- type: mcp
namespace: bond-execution
port: 8080
tools:
- name: get-execution
description: Look up a bond trade execution on Tradeweb.
inputParameters:
- name: trade_id
in: body
type: string
description: The Tradeweb trade ID.
call: tradeweb.get-trade
with:
trade_id: '{{trade_id}}'
outputParameters:
- name: price
type: string
mapping: $.trade.executionPrice
- name: yield
type: string
mapping: $.trade.yield
- name: settlement_date
type: string
mapping: $.trade.settlementDate
- name: counterparty
type: string
mapping: $.trade.counterparty
consumes:
- type: http
namespace: tradeweb
baseUri: https://api.tradeweb.com/v1
authentication:
type: bearer
token: $secrets.tradeweb_token
resources:
- name: trades
path: /trades/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: get-trade
method: GET
Retrieves project plan status from Microsoft Planner for ING business initiatives, returning task count, completion percentage, and overdue task count.
naftiko: '0.5'
info:
label: Microsoft Planner Project Tracker
description: Retrieves project plan status from Microsoft Planner for ING business initiatives, returning task count, completion percentage, and overdue task count.
tags:
- project-management
- microsoft-planner
capability:
exposes:
- type: mcp
namespace: project-tracking
port: 8080
tools:
- name: get-plan-status
description: Retrieve project plan status from Microsoft Planner.
inputParameters:
- name: plan_id
in: body
type: string
description: The Microsoft Planner plan ID.
call: planner.get-plan
with:
plan_id: '{{plan_id}}'
outputParameters:
- name: task_count
type: number
mapping: $.tasks.length
- name: completion_pct
type: string
mapping: $.percentComplete
- name: overdue_count
type: number
mapping: $.overdueTasks
consumes:
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.microsoft_graph_token
resources:
- name: plans
path: /planner/plans/{{plan_id}}/tasks
inputParameters:
- name: plan_id
in: path
operations:
- name: get-plan
method: GET
Retrieves real-time cash position data from the treasury management system, returning available balance, projected balance, and currency exposure by entity.
naftiko: '0.5'
info:
label: Treasury Cash Position Lookup
description: Retrieves real-time cash position data from the treasury management system, returning available balance, projected balance, and currency exposure by entity.
tags:
- treasury
- cash-management
capability:
exposes:
- type: mcp
namespace: treasury-cash
port: 8080
tools:
- name: get-cash-position
description: Look up real-time cash position.
inputParameters:
- name: entity_id
in: body
type: string
description: The legal entity ID.
- name: currency
in: body
type: string
description: The currency code.
call: treasury.get-position
with:
entity_id: '{{entity_id}}'
currency: '{{currency}}'
outputParameters:
- name: available_balance
type: string
mapping: $.position.availableBalance
- name: projected_balance
type: string
mapping: $.position.projectedBalance
- name: currency_exposure
type: string
mapping: $.position.currencyExposure
consumes:
- type: http
namespace: treasury
baseUri: https://treasury.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.treasury_token
resources:
- name: positions
path: /cash/positions?entity={{entity_id}}¤cy={{currency}}
inputParameters:
- name: entity_id
in: query
- name: currency
in: query
operations:
- name: get-position
method: GET
Orchestrates block trade allocation by splitting the fill across client accounts, booking individual allocations in the OMS, confirming with the custodian, and sending allocation details to clients.
naftiko: '0.5'
info:
label: Trade Allocation and Booking Orchestrator
description: Orchestrates block trade allocation by splitting the fill across client accounts, booking individual allocations in the OMS, confirming with the custodian, and sending allocation details to clients.
tags:
- trading
- allocation
- oms
capability:
exposes:
- type: mcp
namespace: trade-allocation
port: 8080
tools:
- name: allocate-block-trade
description: Allocate a block trade across client accounts.
inputParameters:
- name: block_trade_id
in: body
type: string
description: The block trade ID.
- name: allocation_scheme
in: body
type: string
description: The allocation scheme (pro-rata, manual).
steps:
- name: calculate-allocations
type: call
call: allocation-engine.calculate
with:
block_trade_id: '{{block_trade_id}}'
scheme: '{{allocation_scheme}}'
- name: book-allocations
type: call
call: oms.book-allocations
with:
block_trade_id: '{{block_trade_id}}'
allocations: '{{calculate-allocations.allocation_list}}'
- name: confirm-custody
type: call
call: custody.confirm-allocations
with:
allocation_count: '{{book-allocations.allocation_count}}'
- name: notify-clients
type: call
call: messaging.send-allocation-notices
with:
block_trade_id: '{{block_trade_id}}'
allocation_count: '{{book-allocations.allocation_count}}'
consumes:
- type: http
namespace: allocation-engine
baseUri: https://allocation.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.allocation_token
resources:
- name: calculations
path: /calculate
operations:
- name: calculate
method: POST
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: allocations
path: /allocations
operations:
- name: book-allocations
method: POST
- type: http
namespace: custody
baseUri: https://custody.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.custody_token
resources:
- name: confirmations
path: /allocations/confirm
operations:
- name: confirm-allocations
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: notices
path: /allocation-notices
operations:
- name: send-allocation-notices
method: POST
Validates a payment message migration from MT to ISO 20022 format by parsing the legacy MT message, converting via the translation engine, comparing fields, and logging the validation result.
naftiko: '0.5'
info:
label: ISO 20022 Payment Migration Validator
description: Validates a payment message migration from MT to ISO 20022 format by parsing the legacy MT message, converting via the translation engine, comparing fields, and logging the validation result.
tags:
- payments
- swift
- iso20022
- technology
capability:
exposes:
- type: mcp
namespace: iso20022-migration
port: 8080
tools:
- name: validate-migration
description: Parse MT message, translate to ISO 20022, compare fields, and log validation.
inputParameters:
- name: mt_message_ref
in: body
type: string
description: Reference ID of the legacy MT message.
- name: message_type
in: body
type: string
description: MT message type (e.g., MT103, MT202).
steps:
- name: get-mt-message
type: call
call: swift-messaging.get-message
with:
message_ref: '{{mt_message_ref}}'
- name: translate
type: call
call: iso20022-engine.translate
with:
mt_content: '{{get-mt-message.content}}'
message_type: '{{message_type}}'
- name: compare-fields
type: call
call: iso20022-engine.compare
with:
mt_parsed: '{{get-mt-message.parsedFields}}'
mx_parsed: '{{translate.parsedFields}}'
- name: log-result
type: call
call: migration-tracker.log
with:
mt_message_ref: '{{mt_message_ref}}'
message_type: '{{message_type}}'
match_pct: '{{compare-fields.matchPercentage}}'
mismatched_fields: '{{compare-fields.mismatchedFields}}'
status: '{{compare-fields.validationStatus}}'
consumes:
- type: http
namespace: swift-messaging
baseUri: https://swift-messaging.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.swift_messaging_token
resources:
- name: messages
path: /messages/{{message_ref}}
inputParameters:
- name: message_ref
in: path
operations:
- name: get-message
method: GET
- type: http
namespace: iso20022-engine
baseUri: https://iso20022-engine.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.iso20022_engine_token
resources:
- name: translations
path: /translate
operations:
- name: translate
method: POST
- name: comparisons
path: /compare
operations:
- name: compare
method: POST
- type: http
namespace: migration-tracker
baseUri: https://migration-tracker.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.migration_tracker_token
resources:
- name: logs
path: /logs
operations:
- name: log
method: POST
Processes an auto loan application by pulling credit data, running automated decisioning, generating loan documents, and notifying the dealer via the partner portal.
naftiko: '0.5'
info:
label: Auto Loan Origination Pipeline
description: Processes an auto loan application by pulling credit data, running automated decisioning, generating loan documents, and notifying the dealer via the partner portal.
tags:
- lending
- consumer-banking
- auto
capability:
exposes:
- type: mcp
namespace: auto-lending
port: 8080
tools:
- name: originate-auto-loan
description: Process an auto loan application.
inputParameters:
- name: application_id
in: body
type: string
description: The loan application ID.
- name: dealer_id
in: body
type: string
description: The dealer partner ID.
steps:
- name: pull-credit
type: call
call: credit-bureau.pull-report
with:
application_id: '{{application_id}}'
- name: run-decision
type: call
call: underwriting-engine.auto-decide
with:
application_id: '{{application_id}}'
credit_score: '{{pull-credit.fico_score}}'
- name: generate-docs
type: call
call: loan-platform.generate-documents
with:
application_id: '{{application_id}}'
decision: '{{run-decision.decision}}'
rate: '{{run-decision.offered_rate}}'
- name: notify-dealer
type: call
call: dealer-portal.send-notification
with:
dealer_id: '{{dealer_id}}'
application_id: '{{application_id}}'
decision: '{{run-decision.decision}}'
consumes:
- type: http
namespace: credit-bureau
baseUri: https://credit-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.credit_bureau_token
resources:
- name: reports
path: /reports/pull
operations:
- name: pull-report
method: POST
- type: http
namespace: underwriting-engine
baseUri: https://underwriting.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.underwriting_token
resources:
- name: auto
path: /auto/decide
operations:
- name: auto-decide
method: POST
- type: http
namespace: loan-platform
baseUri: https://loan-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.loan_platform_token
resources:
- name: documents
path: /documents/generate
operations:
- name: generate-documents
method: POST
- type: http
namespace: dealer-portal
baseUri: https://dealer-portal.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.dealer_portal_token
resources:
- name: notifications
path: /notifications
operations:
- name: send-notification
method: POST
Retrieves commercial real estate loan details from the lending platform, returning outstanding balance, LTV ratio, debt service coverage ratio, and maturity date.
naftiko: '0.5'
info:
label: Commercial Real Estate Loan Status
description: Retrieves commercial real estate loan details from the lending platform, returning outstanding balance, LTV ratio, debt service coverage ratio, and maturity date.
tags:
- lending
- commercial-banking
- real-estate
capability:
exposes:
- type: mcp
namespace: cre-lending
port: 8080
tools:
- name: get-cre-loan
description: Look up a commercial real estate loan.
inputParameters:
- name: loan_id
in: body
type: string
description: The CRE loan ID.
call: lending.get-cre-loan
with:
loan_id: '{{loan_id}}'
outputParameters:
- name: outstanding_balance
type: string
mapping: $.loan.outstandingBalance
- name: ltv_ratio
type: string
mapping: $.loan.ltvRatio
- name: dscr
type: string
mapping: $.loan.debtServiceCoverageRatio
- name: maturity_date
type: string
mapping: $.loan.maturityDate
consumes:
- type: http
namespace: lending
baseUri: https://lending-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.lending_token
resources:
- name: cre-loans
path: /cre/loans/{{loan_id}}
inputParameters:
- name: loan_id
in: path
operations:
- name: get-cre-loan
method: GET
Fetches the current FX spot rate for a currency pair from the JPMorgan FX pricing engine. Returns mid, bid, and ask rates. Used by treasury, trading, and operations for currency conversion and pricing.
naftiko: '0.5'
info:
label: FX Spot Rate Retrieval
description: Fetches the current FX spot rate for a currency pair from the JPMorgan FX pricing engine. Returns mid, bid, and ask rates. Used by treasury, trading, and operations for currency conversion and pricing.
tags:
- trading
- fx
- treasury
capability:
exposes:
- type: mcp
namespace: fx-pricing
port: 8080
tools:
- name: get-fx-spot
description: Retrieve FX spot rate for a currency pair. Returns mid, bid, and ask rates with timestamp.
inputParameters:
- name: currency_pair
in: body
type: string
description: The currency pair in ISO format (e.g., EURUSD).
call: fx-engine.get-spot
with:
currency_pair: '{{currency_pair}}'
outputParameters:
- name: mid_rate
type: number
mapping: $.rate.mid
- name: bid_rate
type: number
mapping: $.rate.bid
- name: ask_rate
type: number
mapping: $.rate.ask
- name: timestamp
type: string
mapping: $.rate.timestamp
consumes:
- type: http
namespace: fx-engine
baseUri: https://fx-pricing.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fx_engine_token
resources:
- name: spot-rates
path: /spot/{{currency_pair}}
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-spot
method: GET
Orchestrates regulatory trade reporting by extracting trades from the OMS, formatting for EMIR/Dodd-Frank, submitting to the trade repository, and logging confirmation in the compliance system.
naftiko: '0.5'
info:
label: Compliance Trade Reporting Pipeline
description: Orchestrates regulatory trade reporting by extracting trades from the OMS, formatting for EMIR/Dodd-Frank, submitting to the trade repository, and logging confirmation in the compliance system.
tags:
- compliance
- regulatory
- trading
capability:
exposes:
- type: mcp
namespace: trade-reporting
port: 8080
tools:
- name: report-trades
description: Submit trades to regulatory trade repository.
inputParameters:
- name: business_date
in: body
type: string
description: The business date.
- name: asset_class
in: body
type: string
description: The asset class (rates, credit, equity, fx).
steps:
- name: extract-trades
type: call
call: oms.get-reportable-trades
with:
date: '{{business_date}}'
asset_class: '{{asset_class}}'
- name: format-reports
type: call
call: reporting-engine.format-regulatory
with:
trade_count: '{{extract-trades.trade_count}}'
regime: EMIR
- name: submit-to-tr
type: call
call: trade-repository.submit
with:
report_batch_id: '{{format-reports.batch_id}}'
- name: log-confirmation
type: call
call: compliance-system.log-submission
with:
business_date: '{{business_date}}'
trade_count: '{{extract-trades.trade_count}}'
tr_confirmation: '{{submit-to-tr.confirmation_id}}'
consumes:
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: trades
path: /trades/reportable
operations:
- name: get-reportable-trades
method: GET
- type: http
namespace: reporting-engine
baseUri: https://regulatory-reporting.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.reporting_token
resources:
- name: formatting
path: /format
operations:
- name: format-regulatory
method: POST
- type: http
namespace: trade-repository
baseUri: https://trade-repository.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.tr_token
resources:
- name: submissions
path: /submit
operations:
- name: submit
method: POST
- type: http
namespace: compliance-system
baseUri: https://compliance.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: logs
path: /submissions/log
operations:
- name: log-submission
method: POST
Reconciles nostro account balances by fetching the internal ledger balance, retrieving the correspondent bank statement via SWIFT, identifying breaks, and creating ServiceNow tasks for unmatched items.
naftiko: '0.5'
info:
label: Interbank Nostro Reconciliation
description: Reconciles nostro account balances by fetching the internal ledger balance, retrieving the correspondent bank statement via SWIFT, identifying breaks, and creating ServiceNow tasks for unmatched items.
tags:
- treasury
- reconciliation
- nostro
- swift
- servicenow
capability:
exposes:
- type: mcp
namespace: nostro-recon
port: 8080
tools:
- name: reconcile-nostro
description: Compare internal ledger to correspondent statement and escalate breaks.
inputParameters:
- name: nostro_account_id
in: body
type: string
description: The nostro account identifier.
- name: correspondent_bic
in: body
type: string
description: SWIFT BIC of the correspondent bank.
- name: value_date
in: body
type: string
description: Value date in YYYY-MM-DD format.
steps:
- name: get-ledger-balance
type: call
call: core-banking.get-balance
with:
account_id: '{{nostro_account_id}}'
value_date: '{{value_date}}'
- name: get-statement
type: call
call: swift-messaging.get-mt950
with:
correspondent_bic: '{{correspondent_bic}}'
account_id: '{{nostro_account_id}}'
value_date: '{{value_date}}'
- name: identify-breaks
type: call
call: recon-engine.match
with:
ledger_balance: '{{get-ledger-balance.balance}}'
statement_balance: '{{get-statement.closingBalance}}'
ledger_entries: '{{get-ledger-balance.entries}}'
statement_entries: '{{get-statement.entries}}'
- name: create-break-tasks
type: call
call: servicenow.create-task
with:
short_description: 'Nostro recon breaks: {{nostro_account_id}} at {{correspondent_bic}} for {{value_date}}'
description: '{{identify-breaks.breakCount}} unmatched items. Ledger balance: {{get-ledger-balance.balance}}. Statement balance: {{get-statement.closingBalance}}. Net difference: {{identify-breaks.netDifference}}.'
assigned_group: Nostro_Recon
category: reconciliation
consumes:
- type: http
namespace: core-banking
baseUri: https://core-banking.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: balances
path: /accounts/{{account_id}}/balance
inputParameters:
- name: account_id
in: path
operations:
- name: get-balance
method: GET
- type: http
namespace: swift-messaging
baseUri: https://swift-messaging.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.swift_messaging_token
resources:
- name: statements
path: /statements/mt950
operations:
- name: get-mt950
method: GET
- type: http
namespace: recon-engine
baseUri: https://recon-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.recon_engine_token
resources:
- name: matching
path: /match
operations:
- name: match
method: POST
- type: http
namespace: servicenow
baseUri: https://jpmorgan.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves blockchain transaction details from JPMorgan's Onyx platform, returning transaction hash, settlement status, and counterparty for JPM Coin payments.
naftiko: '0.5'
info:
label: Onyx Blockchain Transaction Lookup
description: Retrieves blockchain transaction details from JPMorgan's Onyx platform, returning transaction hash, settlement status, and counterparty for JPM Coin payments.
tags:
- blockchain
- payments
- onyx
capability:
exposes:
- type: mcp
namespace: blockchain-payments
port: 8080
tools:
- name: get-blockchain-tx
description: Look up an Onyx blockchain transaction.
inputParameters:
- name: tx_hash
in: body
type: string
description: The blockchain transaction hash.
call: onyx.get-transaction
with:
tx_hash: '{{tx_hash}}'
outputParameters:
- name: status
type: string
mapping: $.transaction.status
- name: amount
type: string
mapping: $.transaction.amount
- name: counterparty
type: string
mapping: $.transaction.counterparty
- name: settled_at
type: string
mapping: $.transaction.settledAt
consumes:
- type: http
namespace: onyx
baseUri: https://onyx.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.onyx_token
resources:
- name: transactions
path: /transactions/{{tx_hash}}
inputParameters:
- name: tx_hash
in: path
operations:
- name: get-transaction
method: GET
Distributes equity research reports by generating the report from the research platform, performing compliance review, publishing to the client portal, and notifying entitled clients via messaging.
naftiko: '0.5'
info:
label: Equity Research Report Distribution Pipeline
description: Distributes equity research reports by generating the report from the research platform, performing compliance review, publishing to the client portal, and notifying entitled clients via messaging.
tags:
- research
- equities
- compliance
capability:
exposes:
- type: mcp
namespace: research-distribution
port: 8080
tools:
- name: distribute-report
description: Distribute an equity research report.
inputParameters:
- name: report_id
in: body
type: string
description: The research report ID.
- name: ticker
in: body
type: string
description: The covered security ticker.
steps:
- name: get-report
type: call
call: research-platform.get-report
with:
report_id: '{{report_id}}'
- name: compliance-review
type: call
call: compliance-system.review-research
with:
report_id: '{{report_id}}'
ticker: '{{ticker}}'
rating: '{{get-report.rating}}'
- name: publish-portal
type: call
call: client-portal.publish-research
with:
report_id: '{{report_id}}'
clearance_id: '{{compliance-review.clearance_id}}'
- name: notify-clients
type: call
call: messaging.send-research-alert
with:
ticker: '{{ticker}}'
report_title: '{{get-report.title}}'
rating: '{{get-report.rating}}'
consumes:
- type: http
namespace: research-platform
baseUri: https://research.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.research_token
resources:
- name: reports
path: /reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
- type: http
namespace: compliance-system
baseUri: https://compliance.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: research-review
path: /research/review
operations:
- name: review-research
method: POST
- type: http
namespace: client-portal
baseUri: https://client-portal.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.portal_token
resources:
- name: research
path: /research/publish
operations:
- name: publish-research
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: alerts
path: /research-alerts
operations:
- name: send-research-alert
method: POST
Looks up an ACH payment transaction by trace number from the JPMorgan payments hub. Returns status, settlement date, originator, and amount. Used by operations teams to research payment inquiries.
naftiko: '0.5'
info:
label: ACH Payment Retrieval
description: Looks up an ACH payment transaction by trace number from the JPMorgan payments hub. Returns status, settlement date, originator, and amount. Used by operations teams to research payment inquiries.
tags:
- payments
- ach
- operations
capability:
exposes:
- type: mcp
namespace: payments-ach
port: 8080
tools:
- name: get-ach-payment
description: Look up an ACH payment by trace number. Returns payment status, settlement date, originator name, and amount.
inputParameters:
- name: trace_number
in: body
type: string
description: The ACH trace number (15-digit).
call: payments-hub.get-ach
with:
trace_number: '{{trace_number}}'
outputParameters:
- name: status
type: string
mapping: $.payment.status
- name: settlement_date
type: string
mapping: $.payment.settlementDate
- name: originator
type: string
mapping: $.payment.originatorName
- name: amount
type: number
mapping: $.payment.amount
consumes:
- type: http
namespace: payments-hub
baseUri: https://payments-hub.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.payments_hub_token
resources:
- name: ach-payments
path: /ach/{{trace_number}}
inputParameters:
- name: trace_number
in: path
operations:
- name: get-ach
method: GET
Provisions API access for a new client application by creating the API key in the gateway, configuring rate limits and scopes, registering the client in the developer portal, and notifying the integration team via Microsoft Teams.
naftiko: '0.5'
info:
label: API Gateway Rate Limit and Access Provisioning
description: Provisions API access for a new client application by creating the API key in the gateway, configuring rate limits and scopes, registering the client in the developer portal, and notifying the integration team via Microsoft Teams.
tags:
- technology
- api-management
- onboarding
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: api-provisioning
port: 8080
tools:
- name: provision-api-access
description: Create API key, configure limits and scopes, register in portal, and notify integration team.
inputParameters:
- name: client_app_name
in: body
type: string
description: Name of the client application.
- name: api_products
in: body
type: string
description: Comma-separated list of API product IDs to grant access to.
- name: rate_limit
in: body
type: number
description: Requests per second limit.
- name: integration_team_email
in: body
type: string
description: Email of the integration support team.
steps:
- name: create-api-key
type: call
call: api-gateway.create-key
with:
app_name: '{{client_app_name}}'
products: '{{api_products}}'
- name: configure-limits
type: call
call: api-gateway.set-rate-limit
with:
api_key_id: '{{create-api-key.keyId}}'
rate_limit: '{{rate_limit}}'
- name: register-portal
type: call
call: dev-portal.register-app
with:
app_name: '{{client_app_name}}'
api_key_id: '{{create-api-key.keyId}}'
products: '{{api_products}}'
- name: notify-team
type: call
call: msteams.send-message
with:
recipient_upn: '{{integration_team_email}}'
text: 'API access provisioned: {{client_app_name}}. Key ID: {{create-api-key.keyId}}. Products: {{api_products}}. Rate limit: {{rate_limit}} rps. Portal: {{register-portal.portalUrl}}.'
consumes:
- type: http
namespace: api-gateway
baseUri: https://api-gateway.jpmorgan.com/admin/v2
authentication:
type: bearer
token: $secrets.api_gateway_token
resources:
- name: keys
path: /keys
operations:
- name: create-key
method: POST
- name: rate-limits
path: /keys/{{api_key_id}}/rate-limits
inputParameters:
- name: api_key_id
in: path
operations:
- name: set-rate-limit
method: PUT
- type: http
namespace: dev-portal
baseUri: https://developer.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.dev_portal_token
resources:
- name: apps
path: /apps
operations:
- name: register-app
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 private equity fund performance metrics, returning IRR, TVPI, DPI, and committed capital for JPMorgan asset management PE funds.
naftiko: '0.5'
info:
label: Private Equity Fund Performance
description: Retrieves private equity fund performance metrics, returning IRR, TVPI, DPI, and committed capital for JPMorgan asset management PE funds.
tags:
- asset-management
- private-equity
capability:
exposes:
- type: mcp
namespace: pe-performance
port: 8080
tools:
- name: get-pe-performance
description: Retrieve private equity fund performance.
inputParameters:
- name: fund_id
in: body
type: string
description: The PE fund ID.
call: am-platform.get-pe-metrics
with:
fund_id: '{{fund_id}}'
outputParameters:
- name: irr
type: string
mapping: $.performance.irr
- name: tvpi
type: string
mapping: $.performance.tvpi
- name: dpi
type: string
mapping: $.performance.dpi
- name: committed_capital
type: string
mapping: $.performance.committedCapital
consumes:
- type: http
namespace: am-platform
baseUri: https://asset-management.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.am_token
resources:
- name: pe-funds
path: /pe-funds/{{fund_id}}/performance
inputParameters:
- name: fund_id
in: path
operations:
- name: get-pe-metrics
method: GET
Retrieves fraud alert details for a consumer credit card transaction, returning alert score, transaction details, merchant, and recommended action.
naftiko: '0.5'
info:
label: Consumer Credit Card Fraud Alert
description: Retrieves fraud alert details for a consumer credit card transaction, returning alert score, transaction details, merchant, and recommended action.
tags:
- fraud-detection
- consumer-banking
- credit-cards
capability:
exposes:
- type: mcp
namespace: card-fraud
port: 8080
tools:
- name: get-fraud-alert
description: Look up a credit card fraud alert.
inputParameters:
- name: alert_id
in: body
type: string
description: The fraud alert ID.
call: fraud-engine.get-alert
with:
alert_id: '{{alert_id}}'
outputParameters:
- name: risk_score
type: number
mapping: $.alert.riskScore
- name: transaction_amount
type: string
mapping: $.alert.transactionAmount
- name: merchant
type: string
mapping: $.alert.merchantName
- name: recommended_action
type: string
mapping: $.alert.recommendedAction
consumes:
- type: http
namespace: fraud-engine
baseUri: https://fraud-detection.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fraud_engine_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
Orchestrates supply chain financing by verifying invoice data, approving early payment, executing the discounted payment to the supplier, and updating the buyer's payable schedule.
naftiko: '0.5'
info:
label: Trade Finance Supply Chain Orchestrator
description: Orchestrates supply chain financing by verifying invoice data, approving early payment, executing the discounted payment to the supplier, and updating the buyer's payable schedule.
tags:
- trade-finance
- supply-chain
- commercial-banking
capability:
exposes:
- type: mcp
namespace: supply-chain-finance
port: 8080
tools:
- name: process-scf
description: Process a supply chain finance transaction.
inputParameters:
- name: invoice_id
in: body
type: string
description: The invoice ID.
- name: buyer_id
in: body
type: string
description: The buyer client ID.
- name: supplier_id
in: body
type: string
description: The supplier ID.
steps:
- name: verify-invoice
type: call
call: trade-finance.verify-invoice
with:
invoice_id: '{{invoice_id}}'
buyer_id: '{{buyer_id}}'
- name: approve-early-payment
type: call
call: trade-finance.approve-payment
with:
invoice_id: '{{invoice_id}}'
discount_rate: '{{verify-invoice.discount_rate}}'
- name: execute-payment
type: call
call: payment-hub.execute-scf-payment
with:
supplier_id: '{{supplier_id}}'
amount: '{{approve-early-payment.discounted_amount}}'
- name: update-schedule
type: call
call: trade-finance.update-buyer-schedule
with:
buyer_id: '{{buyer_id}}'
invoice_id: '{{invoice_id}}'
new_due_date: '{{approve-early-payment.extended_due_date}}'
consumes:
- type: http
namespace: trade-finance
baseUri: https://trade-finance.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.trade_finance_token
resources:
- name: invoices
path: /invoices/verify
operations:
- name: verify-invoice
method: POST
- name: approvals
path: /payments/approve
operations:
- name: approve-payment
method: POST
- name: schedules
path: /buyer-schedules/update
operations:
- name: update-buyer-schedule
method: POST
- type: http
namespace: payment-hub
baseUri: https://payment-hub.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.payment_hub_token
resources:
- name: scf-payments
path: /scf/execute
operations:
- name: execute-scf-payment
method: POST
Enrolls a corporate client into the commercial card program by creating the card account in the card platform, setting spend controls, provisioning to the expense management system, and notifying the client via email.
naftiko: '0.5'
info:
label: Commercial Card Program Enrollment
description: Enrolls a corporate client into the commercial card program by creating the card account in the card platform, setting spend controls, provisioning to the expense management system, and notifying the client via email.
tags:
- commercial-banking
- cards
- payments
- expense-management
capability:
exposes:
- type: mcp
namespace: card-enrollment
port: 8080
tools:
- name: enroll-card-program
description: Create card account, set controls, link to expense system, and notify client.
inputParameters:
- name: client_id
in: body
type: string
description: The corporate client identifier.
- name: program_type
in: body
type: string
description: Card program type (e.g., PURCHASING, TRAVEL, FLEET).
- name: monthly_limit
in: body
type: number
description: Monthly aggregate spend limit.
- name: client_contact_email
in: body
type: string
description: Email of the client program administrator.
steps:
- name: create-card-account
type: call
call: card-platform.create-account
with:
client_id: '{{client_id}}'
program_type: '{{program_type}}'
- name: set-controls
type: call
call: card-platform.set-controls
with:
card_account_id: '{{create-card-account.cardAccountId}}'
monthly_limit: '{{monthly_limit}}'
program_type: '{{program_type}}'
- name: link-expense-system
type: call
call: concur.create-card-feed
with:
card_account_id: '{{create-card-account.cardAccountId}}'
client_id: '{{client_id}}'
- name: notify-client
type: call
call: email-service.send
with:
to: '{{client_contact_email}}'
subject: 'Commercial Card Program Enrolled: {{program_type}}'
body: 'Your {{program_type}} card program has been activated. Account: {{create-card-account.cardAccountId}}. Monthly limit: ${{monthly_limit}}. Expense feed connected. Program ID: {{link-expense-system.feedId}}.'
consumes:
- type: http
namespace: card-platform
baseUri: https://card-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.card_platform_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
- name: controls
path: /accounts/{{card_account_id}}/controls
inputParameters:
- name: card_account_id
in: path
operations:
- name: set-controls
method: POST
- type: http
namespace: concur
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: card-feeds
path: /expense/cardfeeds
operations:
- name: create-card-feed
method: POST
- type: http
namespace: email-service
baseUri: https://email-service.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.email_service_token
resources:
- name: emails
path: /send
operations:
- name: send
method: POST
Aggregates risk-weighted assets from the risk engine, calculates capital ratios, generates the regulatory report, submits to the filing platform, and notifies the regulatory affairs team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Capital Calculation and Filing
description: Aggregates risk-weighted assets from the risk engine, calculates capital ratios, generates the regulatory report, submits to the filing platform, and notifies the regulatory affairs team via Microsoft Teams.
tags:
- risk
- regulatory
- capital
- compliance
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: reg-capital
port: 8080
tools:
- name: calculate-and-file
description: Aggregate RWA, calculate capital ratios, generate and submit the regulatory filing, and notify the team.
inputParameters:
- name: reporting_date
in: body
type: string
description: Reporting date in YYYY-MM-DD format.
- name: report_type
in: body
type: string
description: Report type (e.g., FR_Y9C, CCAR).
- name: team_channel_id
in: body
type: string
description: Microsoft Teams channel ID for notification.
steps:
- name: get-rwa
type: call
call: risk-engine.get-rwa
with:
reporting_date: '{{reporting_date}}'
- name: calc-ratios
type: call
call: capital-engine.calculate-ratios
with:
rwa_total: '{{get-rwa.totalRWA}}'
reporting_date: '{{reporting_date}}'
- name: submit-filing
type: call
call: reg-platform.submit-filing
with:
report_type: '{{report_type}}'
reporting_date: '{{reporting_date}}'
cet1_ratio: '{{calc-ratios.cet1Ratio}}'
tier1_ratio: '{{calc-ratios.tier1Ratio}}'
total_capital_ratio: '{{calc-ratios.totalCapitalRatio}}'
- name: notify-team
type: call
call: msteams.post-channel
with:
channel_id: '{{team_channel_id}}'
text: 'Regulatory filing submitted: {{report_type}} for {{reporting_date}}. CET1: {{calc-ratios.cet1Ratio}}%. Tier1: {{calc-ratios.tier1Ratio}}%. Filing ID: {{submit-filing.filingId}}.'
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: rwa
path: /rwa/{{reporting_date}}
inputParameters:
- name: reporting_date
in: path
operations:
- name: get-rwa
method: GET
- type: http
namespace: capital-engine
baseUri: https://capital-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.capital_engine_token
resources:
- name: ratios
path: /ratios
operations:
- name: calculate-ratios
method: POST
- type: http
namespace: reg-platform
baseUri: https://reg-reporting.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.reg_platform_token
resources:
- name: filings
path: /filings
operations:
- name: submit-filing
method: POST
- 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/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Retrieves the current positions for a managed portfolio from the portfolio management system. Returns holdings, market values, and weights. Used by portfolio managers and wealth advisors.
naftiko: '0.5'
info:
label: Portfolio Position Lookup
description: Retrieves the current positions for a managed portfolio from the portfolio management system. Returns holdings, market values, and weights. Used by portfolio managers and wealth advisors.
tags:
- wealth-management
- portfolio
- positions
capability:
exposes:
- type: mcp
namespace: portfolio-mgmt
port: 8080
tools:
- name: get-positions
description: Fetch current holdings for a portfolio by portfolio ID. Returns list of positions with instrument, quantity, market value, and weight.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The internal portfolio identifier.
call: portfolio-svc.get-positions
with:
portfolio_id: '{{portfolio_id}}'
outputParameters:
- name: total_market_value
type: number
mapping: $.portfolio.totalMarketValue
- name: currency
type: string
mapping: $.portfolio.currency
- name: positions_count
type: number
mapping: $.portfolio.positionsCount
consumes:
- type: http
namespace: portfolio-svc
baseUri: https://portfolio-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.portfolio_api_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
Before initiating a SWIFT cross-border payment, screens the beneficiary against sanctions lists, converts currency via FX pricing, and submits the payment. Alerts compliance if screening returns a match.
naftiko: '0.5'
info:
label: Cross-Border Payment with Sanctions Screening
description: Before initiating a SWIFT cross-border payment, screens the beneficiary against sanctions lists, converts currency via FX pricing, and submits the payment. Alerts compliance if screening returns a match.
tags:
- payments
- swift
- compliance
- sanctions
- fx
capability:
exposes:
- type: mcp
namespace: cross-border-payments
port: 8080
tools:
- name: initiate-screened-payment
description: Screen the beneficiary, obtain FX rate, and initiate a SWIFT cross-border payment. Halts and alerts compliance on sanctions match.
inputParameters:
- name: beneficiary_name
in: body
type: string
description: Full name of the beneficiary.
- name: beneficiary_bic
in: body
type: string
description: SWIFT BIC of the beneficiary bank.
- name: beneficiary_account
in: body
type: string
description: Beneficiary account number or IBAN.
- name: amount
in: body
type: number
description: Payment amount in source currency.
- name: source_currency
in: body
type: string
description: ISO currency code of the source.
- name: target_currency
in: body
type: string
description: ISO currency code of the beneficiary.
- name: country_code
in: body
type: string
description: Country code of the beneficiary.
steps:
- name: screen-beneficiary
type: call
call: sanctions-svc.screen
with:
party_name: '{{beneficiary_name}}'
country_code: '{{country_code}}'
- name: get-fx-rate
type: call
call: fx-engine.get-spot
with:
currency_pair: '{{source_currency}}{{target_currency}}'
- name: submit-payment
type: call
call: swift-payments.initiate
with:
beneficiary_name: '{{beneficiary_name}}'
beneficiary_bic: '{{beneficiary_bic}}'
beneficiary_account: '{{beneficiary_account}}'
amount: '{{amount}}'
source_currency: '{{source_currency}}'
target_currency: '{{target_currency}}'
fx_rate: '{{get-fx-rate.mid}}'
consumes:
- type: http
namespace: sanctions-svc
baseUri: https://sanctions-screening.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.sanctions_svc_token
resources:
- name: screenings
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: fx-engine
baseUri: https://fx-pricing.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fx_engine_token
resources:
- name: spot-rates
path: /spot/{{currency_pair}}
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-spot
method: GET
- type: http
namespace: swift-payments
baseUri: https://payments-hub.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.payments_hub_token
resources:
- name: swift
path: /swift/payments
operations:
- name: initiate
method: POST
Orchestrates model validation governance by retrieving model performance metrics, running validation tests, generating the validation report, and submitting for model risk committee approval.
naftiko: '0.5'
info:
label: Model Validation Governance Pipeline
description: Orchestrates model validation governance by retrieving model performance metrics, running validation tests, generating the validation report, and submitting for model risk committee approval.
tags:
- model-risk
- governance
- machine-learning
capability:
exposes:
- type: mcp
namespace: model-governance
port: 8080
tools:
- name: validate-model
description: Execute model validation governance workflow.
inputParameters:
- name: model_id
in: body
type: string
description: The model ID.
- name: validation_type
in: body
type: string
description: Validation type (initial, annual, trigger).
steps:
- name: get-performance
type: call
call: model-platform.get-metrics
with:
model_id: '{{model_id}}'
- name: run-validation
type: call
call: model-platform.run-tests
with:
model_id: '{{model_id}}'
validation_type: '{{validation_type}}'
- name: generate-report
type: call
call: model-platform.create-validation-report
with:
model_id: '{{model_id}}'
test_results: '{{run-validation.results_id}}'
performance_metrics: '{{get-performance.metrics_id}}'
- name: submit-approval
type: call
call: governance-system.submit-for-approval
with:
model_id: '{{model_id}}'
report_id: '{{generate-report.report_id}}'
committee: Model_Risk_Committee
consumes:
- type: http
namespace: model-platform
baseUri: https://model-risk.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.model_platform_token
resources:
- name: metrics
path: /models/{{model_id}}/metrics
inputParameters:
- name: model_id
in: path
operations:
- name: get-metrics
method: GET
- name: tests
path: /models/{{model_id}}/validate
inputParameters:
- name: model_id
in: path
operations:
- name: run-tests
method: POST
- name: reports
path: /reports/create
operations:
- name: create-validation-report
method: POST
- type: http
namespace: governance-system
baseUri: https://governance.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.governance_token
resources:
- name: approvals
path: /approvals/submit
operations:
- name: submit-for-approval
method: POST
On a critical technology incident, creates a P1 incident in ServiceNow, activates the business continuity plan in the BCM system, sends mass notifications to the crisis team via Microsoft Teams, and pages the on-call SRE via PagerDuty.
naftiko: '0.5'
info:
label: Incident Response and Business Continuity Activation
description: On a critical technology incident, creates a P1 incident in ServiceNow, activates the business continuity plan in the BCM system, sends mass notifications to the crisis team via Microsoft Teams, and pages the on-call SRE via PagerDuty.
tags:
- technology
- incident-response
- servicenow
- microsoft-teams
- pagerduty
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: activate-incident-response
description: Create P1 incident, activate BCP, mass notify crisis team, and page on-call SRE.
inputParameters:
- name: incident_summary
in: body
type: string
description: Brief summary of the incident.
- name: affected_service
in: body
type: string
description: Name of the affected service.
- name: severity
in: body
type: string
description: Severity level (P1, P2).
- name: crisis_team_channel
in: body
type: string
description: Microsoft Teams channel ID for the crisis team.
- name: pagerduty_service_id
in: body
type: string
description: PagerDuty service ID for the affected system.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: '{{severity}}: {{incident_summary}}'
category: technology_incident
assigned_group: Global_Technology
description: 'Affected service: {{affected_service}}. Severity: {{severity}}. Reported at current timestamp.'
urgency: '1'
- name: activate-bcp
type: call
call: bcm-system.activate
with:
service: '{{affected_service}}'
severity: '{{severity}}'
incident_ref: '{{create-incident.number}}'
- name: notify-crisis-team
type: call
call: msteams.post-channel
with:
channel_id: '{{crisis_team_channel}}'
text: 'INCIDENT ALERT {{severity}}: {{incident_summary}}. Service: {{affected_service}}. SNOW: {{create-incident.number}}. BCP: {{activate-bcp.planRef}}. War room assembling.'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
service_id: '{{pagerduty_service_id}}'
title: '{{severity}} — {{incident_summary}}'
urgency: high
details: 'ServiceNow: {{create-incident.number}}. BCP activated: {{activate-bcp.planRef}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jpmorgan.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: bcm-system
baseUri: https://bcm-system.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.bcm_system_token
resources:
- name: activations
path: /activations
operations:
- name: activate
method: POST
- 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/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
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
Orchestrates repo trade booking by validating collateral, booking the trade in the OMS, initiating settlement via the custody system, and confirming with the counterparty via messaging.
naftiko: '0.5'
info:
label: Repo Trade Booking and Settlement Orchestrator
description: Orchestrates repo trade booking by validating collateral, booking the trade in the OMS, initiating settlement via the custody system, and confirming with the counterparty via messaging.
tags:
- trading
- fixed-income
- repo
- settlement
capability:
exposes:
- type: mcp
namespace: repo-trading
port: 8080
tools:
- name: book-repo-trade
description: Book and settle a repo trade.
inputParameters:
- name: security_id
in: body
type: string
description: The collateral security ISIN.
- name: notional
in: body
type: string
description: The repo notional amount.
- name: counterparty_id
in: body
type: string
description: The counterparty ID.
- name: repo_rate
in: body
type: string
description: The repo rate.
steps:
- name: validate-collateral
type: call
call: collateral-mgmt.validate
with:
security_id: '{{security_id}}'
notional: '{{notional}}'
- name: book-trade
type: call
call: oms.book-repo
with:
security_id: '{{security_id}}'
notional: '{{notional}}'
counterparty_id: '{{counterparty_id}}'
rate: '{{repo_rate}}'
haircut: '{{validate-collateral.haircut}}'
- name: initiate-settlement
type: call
call: custody.settle-repo
with:
trade_ref: '{{book-trade.tradeRef}}'
security_id: '{{security_id}}'
- name: confirm-counterparty
type: call
call: messaging.send-confirmation
with:
counterparty_id: '{{counterparty_id}}'
message: 'Repo booked: {{book-trade.tradeRef}}. Collateral: {{security_id}}. Notional: {{notional}}. Rate: {{repo_rate}}. Settlement: {{initiate-settlement.settlement_date}}.'
consumes:
- type: http
namespace: collateral-mgmt
baseUri: https://collateral.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.collateral_token
resources:
- name: validation
path: /validate
operations:
- name: validate
method: POST
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: repos
path: /repos
operations:
- name: book-repo
method: POST
- type: http
namespace: custody
baseUri: https://custody.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.custody_token
resources:
- name: settlement
path: /settle
operations:
- name: settle-repo
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: confirmations
path: /confirmations
operations:
- name: send-confirmation
method: POST
Orchestrates consumer checking account opening by verifying identity, running ChexSystems screening, creating the account in the core banking system, and ordering a debit card via the card platform.
naftiko: '0.5'
info:
label: Consumer Account Opening Orchestrator
description: Orchestrates consumer checking account opening by verifying identity, running ChexSystems screening, creating the account in the core banking system, and ordering a debit card via the card platform.
tags:
- consumer-banking
- onboarding
- accounts
capability:
exposes:
- type: mcp
namespace: consumer-account-opening
port: 8080
tools:
- name: open-checking-account
description: Open a consumer checking account.
inputParameters:
- name: customer_name
in: body
type: string
description: The customer full name.
- name: ssn_last4
in: body
type: string
description: Last 4 of SSN.
- name: address
in: body
type: string
description: Customer address.
steps:
- name: verify-identity
type: call
call: identity-service.verify
with:
name: '{{customer_name}}'
ssn_last4: '{{ssn_last4}}'
- name: screen-chexsystems
type: call
call: chexsystems.screen
with:
customer_id: '{{verify-identity.customer_id}}'
- name: create-account
type: call
call: core-banking.create-account
with:
customer_id: '{{verify-identity.customer_id}}'
product_type: checking
address: '{{address}}'
- name: order-card
type: call
call: card-platform.order-debit-card
with:
account_id: '{{create-account.account_id}}'
customer_name: '{{customer_name}}'
address: '{{address}}'
consumes:
- type: http
namespace: identity-service
baseUri: https://identity.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.identity_token
resources:
- name: verification
path: /verify
operations:
- name: verify
method: POST
- type: http
namespace: chexsystems
baseUri: https://chexsystems.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.chexsystems_token
resources:
- name: screening
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: core-banking
baseUri: https://core-banking.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
- type: http
namespace: card-platform
baseUri: https://card-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.card_platform_token
resources:
- name: cards
path: /debit-cards/order
operations:
- name: order-debit-card
method: POST
Screens a portfolio for ESG compliance by fetching holdings, retrieving ESG scores from the data provider, identifying exclusions against the client's ESG policy, and generating a compliance report in SharePoint.
naftiko: '0.5'
info:
label: ESG Portfolio Screening and Reporting
description: Screens a portfolio for ESG compliance by fetching holdings, retrieving ESG scores from the data provider, identifying exclusions against the client's ESG policy, and generating a compliance report in SharePoint.
tags:
- wealth-management
- esg
- portfolio
- compliance
- sharepoint
capability:
exposes:
- type: mcp
namespace: esg-screening
port: 8080
tools:
- name: screen-esg-compliance
description: Fetch holdings, score ESG, identify policy violations, and generate report.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio identifier.
- name: esg_policy_id
in: body
type: string
description: The client ESG policy identifier.
steps:
- name: get-holdings
type: call
call: portfolio-svc.get-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: get-esg-scores
type: call
call: esg-provider.get-scores
with:
isins: '{{get-holdings.isinList}}'
- name: apply-policy
type: call
call: esg-engine.screen
with:
policy_id: '{{esg_policy_id}}'
holdings: '{{get-holdings.positions}}'
scores: '{{get-esg-scores.scores}}'
- name: generate-report
type: call
call: sharepoint.create-document
with:
site_id: esg_reporting_site
folder_path: ESG_Reports/{{portfolio_id}}
document_name: ESG_Screening_Report.xlsx
violations: '{{apply-policy.violations}}'
overall_score: '{{apply-policy.portfolioScore}}'
consumes:
- type: http
namespace: portfolio-svc
baseUri: https://portfolio-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.portfolio_api_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: esg-provider
baseUri: https://esg-data.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.esg_provider_token
resources:
- name: scores
path: /scores
operations:
- name: get-scores
method: POST
- type: http
namespace: esg-engine
baseUri: https://esg-engine.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.esg_engine_token
resources:
- name: screening
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site_id}}/drive/root:/{{folder_path}}/{{document_name}}:/content
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: document_name
in: path
operations:
- name: create-document
method: PUT
For a wealth management client, retrieves current portfolio positions, fetches the target model allocation, calculates rebalance trades, and submits them to the OMS. Notifies the advisor via Salesforce task.
naftiko: '0.5'
info:
label: Wealth Client Portfolio Rebalance
description: For a wealth management client, retrieves current portfolio positions, fetches the target model allocation, calculates rebalance trades, and submits them to the OMS. Notifies the advisor via Salesforce task.
tags:
- wealth-management
- portfolio
- rebalance
- oms
- salesforce
capability:
exposes:
- type: mcp
namespace: wealth-rebalance
port: 8080
tools:
- name: rebalance-portfolio
description: Retrieve portfolio positions, compare to model, generate and submit rebalance trades, and notify the advisor.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The managed portfolio identifier.
- name: model_id
in: body
type: string
description: The target allocation model ID.
- name: advisor_email
in: body
type: string
description: Email address of the wealth advisor.
steps:
- name: get-positions
type: call
call: portfolio-svc.get-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: get-model
type: call
call: portfolio-svc.get-model
with:
model_id: '{{model_id}}'
- name: generate-trades
type: call
call: rebalance-engine.calculate
with:
portfolio_id: '{{portfolio_id}}'
current_positions: '{{get-positions.positions}}'
target_model: '{{get-model.allocations}}'
- name: submit-trades
type: call
call: oms.submit-basket
with:
portfolio_id: '{{portfolio_id}}'
trades: '{{generate-trades.tradeList}}'
- name: notify-advisor
type: call
call: salesforce.create-task
with:
subject: 'Rebalance completed: Portfolio {{portfolio_id}}'
description: '{{generate-trades.tradeCount}} trades submitted. Basket ref: {{submit-trades.basketRef}}. Model: {{model_id}}.'
owner_email: '{{advisor_email}}'
consumes:
- type: http
namespace: portfolio-svc
baseUri: https://portfolio-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.portfolio_api_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- name: models
path: /models/{{model_id}}
inputParameters:
- name: model_id
in: path
operations:
- name: get-model
method: GET
- type: http
namespace: rebalance-engine
baseUri: https://rebalance-engine.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.rebalance_engine_token
resources:
- name: calculations
path: /calculate
operations:
- name: calculate
method: POST
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: baskets
path: /baskets
operations:
- name: submit-basket
method: POST
- type: http
namespace: salesforce
baseUri: https://jpmorgan.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
Monitors commercial loan covenant compliance, returning covenant type, current ratio, threshold, and compliance status for each active covenant.
naftiko: '0.5'
info:
label: Commercial Loan Covenant Monitor
description: Monitors commercial loan covenant compliance, returning covenant type, current ratio, threshold, and compliance status for each active covenant.
tags:
- lending
- commercial-banking
- risk
capability:
exposes:
- type: mcp
namespace: covenant-monitoring
port: 8080
tools:
- name: check-covenants
description: Check covenant compliance for a commercial loan.
inputParameters:
- name: facility_id
in: body
type: string
description: The lending facility ID.
call: lending.get-covenants
with:
facility_id: '{{facility_id}}'
outputParameters:
- name: covenant_count
type: number
mapping: $.covenants.length
- name: breaches
type: number
mapping: $.covenants.breachCount
- name: next_test_date
type: string
mapping: $.covenants.nextTestDate
consumes:
- type: http
namespace: lending
baseUri: https://lending-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.lending_token
resources:
- name: covenants
path: /facilities/{{facility_id}}/covenants
inputParameters:
- name: facility_id
in: path
operations:
- name: get-covenants
method: GET
Retrieves merchant payment processing transaction details, returning transaction amount, card type, authorization code, and settlement status.
naftiko: '0.5'
info:
label: Merchant Services Transaction Lookup
description: Retrieves merchant payment processing transaction details, returning transaction amount, card type, authorization code, and settlement status.
tags:
- payments
- merchant-services
capability:
exposes:
- type: mcp
namespace: merchant-transactions
port: 8080
tools:
- name: get-merchant-tx
description: Look up a merchant services transaction.
inputParameters:
- name: transaction_id
in: body
type: string
description: The transaction ID.
call: merchant.get-transaction
with:
transaction_id: '{{transaction_id}}'
outputParameters:
- name: amount
type: string
mapping: $.transaction.amount
- name: card_type
type: string
mapping: $.transaction.cardType
- name: auth_code
type: string
mapping: $.transaction.authorizationCode
- name: settlement_status
type: string
mapping: $.transaction.settlementStatus
consumes:
- type: http
namespace: merchant
baseUri: https://merchant-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.merchant_token
resources:
- name: transactions
path: /transactions/{{transaction_id}}
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
Queries the SWIFT gpi tracker for a cross-border payment by UETR. Returns current status, creditor agent, and settlement date. Used by treasury operations to trace international wire transfers.
naftiko: '0.5'
info:
label: SWIFT Payment Status Lookup
description: Queries the SWIFT gpi tracker for a cross-border payment by UETR. Returns current status, creditor agent, and settlement date. Used by treasury operations to trace international wire transfers.
tags:
- payments
- swift
- treasury
capability:
exposes:
- type: mcp
namespace: payments-swift
port: 8080
tools:
- name: get-payment-status
description: Track a SWIFT gpi payment by UETR. Returns transaction status, last update, creditor agent BIC, and settlement date.
inputParameters:
- name: uetr
in: body
type: string
description: The Unique End-to-End Transaction Reference for the SWIFT payment.
call: swift.get-payment-tracking
with:
uetr: '{{uetr}}'
outputParameters:
- name: transaction_status
type: string
mapping: $.payment_event.tracker_status
- name: creditor_agent_bic
type: string
mapping: $.payment_event.creditor_agent
- name: settlement_date
type: string
mapping: $.payment_event.settlement_date
- name: last_update
type: string
mapping: $.payment_event.last_update_time
consumes:
- type: http
namespace: swift
baseUri: https://api.swiftnet.sipn.swift.com/swift-apitracker/v4
authentication:
type: bearer
token: $secrets.swift_gpi_token
resources:
- name: payments
path: /payments/{{uetr}}/transactions
inputParameters:
- name: uetr
in: path
operations:
- name: get-payment-tracking
method: GET
Fetches end-of-day P&L from the trading book, retrieves VaR limits, and if P&L exceeds VaR threshold, creates a risk breach incident in ServiceNow and notifies the desk head via Microsoft Teams.
naftiko: '0.5'
info:
label: Daily P&L Report with Risk Breach Alerting
description: Fetches end-of-day P&L from the trading book, retrieves VaR limits, and if P&L exceeds VaR threshold, creates a risk breach incident in ServiceNow and notifies the desk head via Microsoft Teams.
tags:
- trading
- risk
- market-risk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: daily-pnl-risk
port: 8080
tools:
- name: check-pnl-breach
description: Retrieve daily P&L for a trading book, compare against VaR limits, and escalate if breached.
inputParameters:
- name: book_id
in: body
type: string
description: The trading book identifier.
- name: trade_date
in: body
type: string
description: The trade date in YYYY-MM-DD format.
- name: desk_head_email
in: body
type: string
description: Email of the desk head for escalation.
steps:
- name: get-pnl
type: call
call: pnl-service.get-daily-pnl
with:
book_id: '{{book_id}}'
trade_date: '{{trade_date}}'
- name: get-var-limits
type: call
call: risk-engine.get-var
with:
book_id: '{{book_id}}'
- name: create-breach-incident
type: call
call: servicenow.create-incident
with:
short_description: 'VaR breach: Book {{book_id}} P&L {{get-pnl.dailyPnl}} exceeds VaR-99 {{get-var-limits.confidence99}}'
category: risk_breach
assigned_group: Market_Risk
description: Trading book {{book_id}} reported daily P&L of {{get-pnl.dailyPnl}} on {{trade_date}}, exceeding VaR-99 limit of {{get-var-limits.confidence99}}.
- name: notify-desk-head
type: call
call: msteams.send-message
with:
recipient_upn: '{{desk_head_email}}'
text: 'RISK ALERT: Book {{book_id}} daily P&L ({{get-pnl.dailyPnl}}) breached VaR-99 ({{get-var-limits.confidence99}}) on {{trade_date}}. Incident: {{create-breach-incident.number}}.'
consumes:
- type: http
namespace: pnl-service
baseUri: https://pnl-service.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.pnl_service_token
resources:
- name: daily-pnl
path: /books/{{book_id}}/pnl/{{trade_date}}
inputParameters:
- name: book_id
in: path
- name: trade_date
in: path
operations:
- name: get-daily-pnl
method: GET
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: var
path: /books/{{book_id}}/var
inputParameters:
- name: book_id
in: path
operations:
- name: get-var
method: GET
- type: http
namespace: servicenow
baseUri: https://jpmorgan.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Orchestrates a commercial loan from credit check through facility creation: pulls the counterparty credit score, screens against sanctions, creates the loan facility, and logs the deal in Salesforce.
naftiko: '0.5'
info:
label: Commercial Loan Origination Pipeline
description: 'Orchestrates a commercial loan from credit check through facility creation: pulls the counterparty credit score, screens against sanctions, creates the loan facility, and logs the deal in Salesforce.'
tags:
- commercial-banking
- lending
- risk
- credit
- salesforce
capability:
exposes:
- type: mcp
namespace: loan-origination
port: 8080
tools:
- name: originate-loan
description: Run credit check, sanctions screen, create loan facility, and log in CRM.
inputParameters:
- name: borrower_lei
in: body
type: string
description: LEI of the borrowing entity.
- name: borrower_name
in: body
type: string
description: Legal name of the borrower.
- name: country_code
in: body
type: string
description: Borrower domicile country code.
- name: facility_amount
in: body
type: number
description: Requested facility commitment amount.
- name: maturity_years
in: body
type: number
description: Facility tenor in years.
- name: rm_email
in: body
type: string
description: Relationship manager email.
steps:
- name: credit-check
type: call
call: risk-engine.get-credit-profile
with:
lei: '{{borrower_lei}}'
- name: sanctions-screen
type: call
call: sanctions-svc.screen
with:
party_name: '{{borrower_name}}'
country_code: '{{country_code}}'
- name: create-facility
type: call
call: loan-system.create-facility
with:
borrower_lei: '{{borrower_lei}}'
commitment_amount: '{{facility_amount}}'
maturity_years: '{{maturity_years}}'
internal_rating: '{{credit-check.internalRating}}'
- name: log-deal
type: call
call: salesforce.create-opportunity
with:
name: 'Loan facility: {{borrower_name}} — ${{facility_amount}}'
stage: Closed Won
amount: '{{facility_amount}}'
description: 'Facility {{create-facility.facilityId}} created. Rating: {{credit-check.internalRating}}. PD: {{credit-check.probabilityOfDefault}}. Sanctions score: {{sanctions-screen.highestMatchScore}}.'
owner_email: '{{rm_email}}'
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: credit-profiles
path: /counterparties/{{lei}}/credit-profile
inputParameters:
- name: lei
in: path
operations:
- name: get-credit-profile
method: GET
- type: http
namespace: sanctions-svc
baseUri: https://sanctions-screening.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.sanctions_svc_token
resources:
- name: screenings
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: loan-system
baseUri: https://loan-origination.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.loan_system_token
resources:
- name: facilities
path: /facilities
operations:
- name: create-facility
method: POST
- type: http
namespace: salesforce
baseUri: https://jpmorgan.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 ETF creation/redemption basket details for authorized participant operations, returning basket composition, NAV, premium/discount, and creation unit size.
naftiko: '0.5'
info:
label: ETF Authorized Participant Creation
description: Retrieves ETF creation/redemption basket details for authorized participant operations, returning basket composition, NAV, premium/discount, and creation unit size.
tags:
- asset-management
- etf
capability:
exposes:
- type: mcp
namespace: etf-operations
port: 8080
tools:
- name: get-creation-basket
description: Retrieve ETF creation basket details.
inputParameters:
- name: fund_ticker
in: body
type: string
description: The ETF ticker symbol.
call: etf-platform.get-basket
with:
fund_ticker: '{{fund_ticker}}'
outputParameters:
- name: nav
type: string
mapping: $.basket.nav
- name: premium_discount
type: string
mapping: $.basket.premiumDiscount
- name: creation_unit_size
type: number
mapping: $.basket.creationUnitSize
- name: component_count
type: number
mapping: $.basket.componentCount
consumes:
- type: http
namespace: etf-platform
baseUri: https://etf-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.etf_platform_token
resources:
- name: baskets
path: /funds/{{fund_ticker}}/creation-basket
inputParameters:
- name: fund_ticker
in: path
operations:
- name: get-basket
method: GET
Retrieves securities clearing and settlement status from the post-trade platform, returning clearing status, settlement instruction status, and matched/unmatched indicator.
naftiko: '0.5'
info:
label: Securities Clearing Status Lookup
description: Retrieves securities clearing and settlement status from the post-trade platform, returning clearing status, settlement instruction status, and matched/unmatched indicator.
tags:
- operations
- clearing
- settlement
capability:
exposes:
- type: mcp
namespace: securities-clearing
port: 8080
tools:
- name: get-clearing-status
description: Look up securities clearing status.
inputParameters:
- name: trade_ref
in: body
type: string
description: The trade reference.
call: post-trade.get-clearing
with:
trade_ref: '{{trade_ref}}'
outputParameters:
- name: clearing_status
type: string
mapping: $.clearing.status
- name: settlement_instruction
type: string
mapping: $.clearing.settlementInstruction
- name: matched
type: string
mapping: $.clearing.matchStatus
- name: settlement_date
type: string
mapping: $.clearing.settlementDate
consumes:
- type: http
namespace: post-trade
baseUri: https://post-trade.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.post_trade_token
resources:
- name: clearing
path: /clearing/{{trade_ref}}
inputParameters:
- name: trade_ref
in: path
operations:
- name: get-clearing
method: GET
Retrieves consumer savings account details from the core banking system, returning current balance, APY, interest earned YTD, and account status.
naftiko: '0.5'
info:
label: Consumer Savings Account Lookup
description: Retrieves consumer savings account details from the core banking system, returning current balance, APY, interest earned YTD, and account status.
tags:
- consumer-banking
- savings
- accounts
capability:
exposes:
- type: mcp
namespace: consumer-savings
port: 8080
tools:
- name: get-savings-account
description: Look up a consumer savings account.
inputParameters:
- name: account_id
in: body
type: string
description: The savings account ID.
call: core-banking.get-savings
with:
account_id: '{{account_id}}'
outputParameters:
- name: balance
type: string
mapping: $.account.currentBalance
- name: apy
type: string
mapping: $.account.apy
- name: interest_ytd
type: string
mapping: $.account.interestEarnedYTD
- name: status
type: string
mapping: $.account.status
consumes:
- type: http
namespace: core-banking
baseUri: https://core-banking.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: savings
path: /savings/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-savings
method: GET
Retrieves Value-at-Risk calculation results from the risk engine, returning 1-day VaR, 10-day VaR, and stressed VaR by trading desk.
naftiko: '0.5'
info:
label: Market Risk VaR Calculation
description: Retrieves Value-at-Risk calculation results from the risk engine, returning 1-day VaR, 10-day VaR, and stressed VaR by trading desk.
tags:
- risk
- market-risk
capability:
exposes:
- type: mcp
namespace: market-risk-var
port: 8080
tools:
- name: get-var
description: Retrieve VaR calculation for a trading desk.
inputParameters:
- name: desk_id
in: body
type: string
description: The trading desk ID.
- name: date
in: body
type: string
description: The calculation date.
call: risk-engine.get-var
with:
desk_id: '{{desk_id}}'
date: '{{date}}'
outputParameters:
- name: var_1d
type: string
mapping: $.var.oneDay99
- name: var_10d
type: string
mapping: $.var.tenDay99
- name: stressed_var
type: string
mapping: $.var.stressedVaR
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: var
path: /var/desks/{{desk_id}}?date={{date}}
inputParameters:
- name: desk_id
in: path
- name: date
in: query
operations:
- name: get-var
method: GET
Retrieves FX forward rates from the market data service, returning outright rate, forward points, and swap points for a given currency pair and tenor.
naftiko: '0.5'
info:
label: FX Forward Rate Lookup
description: Retrieves FX forward rates from the market data service, returning outright rate, forward points, and swap points for a given currency pair and tenor.
tags:
- fx
- market-data
- trading
capability:
exposes:
- type: mcp
namespace: fx-forwards
port: 8080
tools:
- name: get-forward-rate
description: Look up FX forward rate for a currency pair.
inputParameters:
- name: ccy_pair
in: body
type: string
description: The currency pair (e.g. EURUSD).
- name: tenor
in: body
type: string
description: The forward tenor (1M, 3M, 6M, 1Y).
call: market-data.get-fx-forward
with:
ccy_pair: '{{ccy_pair}}'
tenor: '{{tenor}}'
outputParameters:
- name: outright_rate
type: string
mapping: $.data.outrightRate
- name: forward_points
type: string
mapping: $.data.forwardPoints
- name: spot_rate
type: string
mapping: $.data.spotRate
consumes:
- type: http
namespace: market-data
baseUri: https://market-data.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.market_data_token
resources:
- name: fx-forwards
path: /fx/forwards?pair={{ccy_pair}}&tenor={{tenor}}
inputParameters:
- name: ccy_pair
in: query
- name: tenor
in: query
operations:
- name: get-fx-forward
method: GET
Executes a derivatives pricing calculation in the Athena risk platform for a given trade ID. Returns mark-to-market value, Greeks, and model timestamp. Used by derivatives traders and quantitative analysts.
naftiko: '0.5'
info:
label: Athena Pricing Model Execution
description: Executes a derivatives pricing calculation in the Athena risk platform for a given trade ID. Returns mark-to-market value, Greeks, and model timestamp. Used by derivatives traders and quantitative analysts.
tags:
- trading
- derivatives
- athena
- pricing
capability:
exposes:
- type: mcp
namespace: athena-pricing
port: 8080
tools:
- name: price-trade
description: Run a pricing calculation for a derivatives trade in Athena by trade ID. Returns MTM, delta, gamma, vega, and model timestamp.
inputParameters:
- name: trade_id
in: body
type: string
description: The Athena trade identifier.
call: athena.price-trade
with:
trade_id: '{{trade_id}}'
outputParameters:
- name: mtm_value
type: number
mapping: $.pricing.mtm
- name: delta
type: number
mapping: $.pricing.delta
- name: gamma
type: number
mapping: $.pricing.gamma
- name: vega
type: number
mapping: $.pricing.vega
- name: model_timestamp
type: string
mapping: $.pricing.timestamp
consumes:
- type: http
namespace: athena
baseUri: https://athena.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.athena_token
resources:
- name: pricing
path: /trades/{{trade_id}}/price
inputParameters:
- name: trade_id
in: path
operations:
- name: price-trade
method: POST
Retrieves treasury services balance reporting for corporate clients, returning opening balance, closing balance, available balance, and float for cash management.
naftiko: '0.5'
info:
label: Treasury Services Balance Reporting
description: Retrieves treasury services balance reporting for corporate clients, returning opening balance, closing balance, available balance, and float for cash management.
tags:
- treasury-services
- commercial-banking
- reporting
capability:
exposes:
- type: mcp
namespace: ts-balance-reporting
port: 8080
tools:
- name: get-balance-report
description: Retrieve treasury services balance report.
inputParameters:
- name: account_id
in: body
type: string
description: The treasury services account ID.
- name: report_date
in: body
type: string
description: The report date.
call: ts-platform.get-balances
with:
account_id: '{{account_id}}'
report_date: '{{report_date}}'
outputParameters:
- name: opening_balance
type: string
mapping: $.balances.openingBalance
- name: closing_balance
type: string
mapping: $.balances.closingBalance
- name: available_balance
type: string
mapping: $.balances.availableBalance
- name: float
type: string
mapping: $.balances.float
consumes:
- type: http
namespace: ts-platform
baseUri: https://treasury-services.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.ts_platform_token
resources:
- name: balances
path: /accounts/{{account_id}}/balances?date={{report_date}}
inputParameters:
- name: account_id
in: path
- name: report_date
in: query
operations:
- name: get-balances
method: GET
Reconciles payment clearing by extracting settled payments from the payment hub, matching against the general ledger, identifying breaks, and creating resolution tasks in the operations system.
naftiko: '0.5'
info:
label: Payment Clearing Reconciliation Pipeline
description: Reconciles payment clearing by extracting settled payments from the payment hub, matching against the general ledger, identifying breaks, and creating resolution tasks in the operations system.
tags:
- operations
- payments
- reconciliation
capability:
exposes:
- type: mcp
namespace: clearing-recon
port: 8080
tools:
- name: reconcile-clearing
description: Reconcile payment clearing for a business date.
inputParameters:
- name: business_date
in: body
type: string
description: The business date.
- name: payment_type
in: body
type: string
description: Payment type (ACH, wire, SWIFT).
steps:
- name: extract-settlements
type: call
call: payment-hub.get-settled
with:
date: '{{business_date}}'
type: '{{payment_type}}'
- name: match-gl
type: call
call: gl-system.match-entries
with:
date: '{{business_date}}'
settlement_count: '{{extract-settlements.count}}'
- name: identify-breaks
type: call
call: recon-engine.find-breaks
with:
matched: '{{match-gl.matched_count}}'
total: '{{extract-settlements.count}}'
- name: create-tasks
type: call
call: ops-system.create-recon-tasks
with:
break_count: '{{identify-breaks.break_count}}'
total_break_amount: '{{identify-breaks.total_amount}}'
business_date: '{{business_date}}'
consumes:
- type: http
namespace: payment-hub
baseUri: https://payment-hub.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.payment_hub_token
resources:
- name: settlements
path: /settlements
operations:
- name: get-settled
method: GET
- type: http
namespace: gl-system
baseUri: https://general-ledger.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.gl_token
resources:
- name: matching
path: /match
operations:
- name: match-entries
method: POST
- type: http
namespace: recon-engine
baseUri: https://reconciliation.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.recon_token
resources:
- name: breaks
path: /breaks/identify
operations:
- name: find-breaks
method: POST
- type: http
namespace: ops-system
baseUri: https://operations.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: tasks
path: /tasks/reconciliation
operations:
- name: create-recon-tasks
method: POST
Before executing a real-time payment, scores the transaction through the fraud detection engine, screens the payee, and then submits via the RTP network. Blocks and escalates if fraud score is high.
naftiko: '0.5'
info:
label: Real-Time Payments with Fraud Detection
description: Before executing a real-time payment, scores the transaction through the fraud detection engine, screens the payee, and then submits via the RTP network. Blocks and escalates if fraud score is high.
tags:
- payments
- rtp
- fraud
- compliance
capability:
exposes:
- type: mcp
namespace: rtp-payments
port: 8080
tools:
- name: send-rtp-payment
description: Score for fraud, screen payee, and submit a real-time payment.
inputParameters:
- name: payer_account
in: body
type: string
description: Payer account number.
- name: payee_name
in: body
type: string
description: Full name of the payee.
- name: payee_account
in: body
type: string
description: Payee account or routing number.
- name: amount
in: body
type: number
description: Payment amount in USD.
- name: memo
in: body
type: string
description: Payment memo or reference.
steps:
- name: fraud-score
type: call
call: fraud-engine.score
with:
payer_account: '{{payer_account}}'
payee_account: '{{payee_account}}'
amount: '{{amount}}'
- name: screen-payee
type: call
call: sanctions-svc.screen
with:
party_name: '{{payee_name}}'
country_code: US
- name: submit-rtp
type: call
call: rtp-network.submit
with:
payer_account: '{{payer_account}}'
payee_account: '{{payee_account}}'
payee_name: '{{payee_name}}'
amount: '{{amount}}'
memo: '{{memo}}'
fraud_score: '{{fraud-score.score}}'
consumes:
- type: http
namespace: fraud-engine
baseUri: https://fraud-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fraud_engine_token
resources:
- name: scoring
path: /score
operations:
- name: score
method: POST
- type: http
namespace: sanctions-svc
baseUri: https://sanctions-screening.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.sanctions_svc_token
resources:
- name: screenings
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: rtp-network
baseUri: https://rtp-gateway.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.rtp_gateway_token
resources:
- name: payments
path: /payments
operations:
- name: submit
method: POST
Books a new interest rate swap in the derivatives platform, prices it via Athena, registers the trade with the DTCC trade repository, and sends an electronic confirmation to the counterparty.
naftiko: '0.5'
info:
label: Interest Rate Swap Booking and Confirmation
description: Books a new interest rate swap in the derivatives platform, prices it via Athena, registers the trade with the DTCC trade repository, and sends an electronic confirmation to the counterparty.
tags:
- trading
- derivatives
- athena
- dtcc
- confirmation
capability:
exposes:
- type: mcp
namespace: irs-booking
port: 8080
tools:
- name: book-irs
description: Book an IRS, price in Athena, report to DTCC, and send electronic confirmation.
inputParameters:
- name: counterparty_lei
in: body
type: string
description: LEI of the swap counterparty.
- name: notional
in: body
type: number
description: Notional amount.
- name: currency
in: body
type: string
description: Notional currency.
- name: fixed_rate
in: body
type: number
description: Fixed leg rate.
- name: tenor
in: body
type: string
description: Swap tenor (e.g., 5Y, 10Y).
- name: client_id
in: body
type: string
description: Client account identifier.
steps:
- name: book-trade
type: call
call: derivatives-platform.book-irs
with:
counterparty_lei: '{{counterparty_lei}}'
notional: '{{notional}}'
currency: '{{currency}}'
fixed_rate: '{{fixed_rate}}'
tenor: '{{tenor}}'
- name: price-trade
type: call
call: athena.price-trade
with:
trade_id: '{{book-trade.tradeId}}'
- name: report-dtcc
type: call
call: dtcc-gateway.report-trade
with:
trade_id: '{{book-trade.tradeId}}'
product_type: IRS
notional: '{{notional}}'
currency: '{{currency}}'
counterparty_lei: '{{counterparty_lei}}'
- name: send-confirmation
type: call
call: messaging.send-confirmation
with:
client_id: '{{client_id}}'
message: 'IRS booked: {{notional}} {{currency}} {{tenor}} at {{fixed_rate}}% fixed. MTM: {{price-trade.mtm}}. Trade ref: {{book-trade.tradeId}}. DTCC UTI: {{report-dtcc.uti}}.'
consumes:
- type: http
namespace: derivatives-platform
baseUri: https://derivatives-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.derivatives_platform_token
resources:
- name: irs
path: /irs
operations:
- name: book-irs
method: POST
- type: http
namespace: athena
baseUri: https://athena.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.athena_token
resources:
- name: pricing
path: /trades/{{trade_id}}/price
inputParameters:
- name: trade_id
in: path
operations:
- name: price-trade
method: POST
- type: http
namespace: dtcc-gateway
baseUri: https://dtcc-gateway.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.dtcc_gateway_token
resources:
- name: trade-reports
path: /reports
operations:
- name: report-trade
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: confirmations
path: /confirmations
operations:
- name: send-confirmation
method: POST
Screens a party name against OFAC, EU, and UN sanctions lists via the sanctions screening service. Returns match score, list source, and screening timestamp. Used by compliance for transaction and onboarding screening.
naftiko: '0.5'
info:
label: Sanctions Screening Check
description: Screens a party name against OFAC, EU, and UN sanctions lists via the sanctions screening service. Returns match score, list source, and screening timestamp. Used by compliance for transaction and onboarding screening.
tags:
- compliance
- sanctions
- aml
capability:
exposes:
- type: mcp
namespace: compliance-sanctions
port: 8080
tools:
- name: screen-party
description: Screen a party name against global sanctions lists. Returns match score, matched list, and screening timestamp.
inputParameters:
- name: party_name
in: body
type: string
description: The full name of the individual or entity to screen.
- name: country_code
in: body
type: string
description: ISO 3166-1 alpha-2 country code of the party.
call: sanctions-svc.screen
with:
party_name: '{{party_name}}'
country_code: '{{country_code}}'
outputParameters:
- name: match_score
type: number
mapping: $.screening.highestMatchScore
- name: matched_list
type: string
mapping: $.screening.matchedList
- name: screening_timestamp
type: string
mapping: $.screening.timestamp
consumes:
- type: http
namespace: sanctions-svc
baseUri: https://sanctions-screening.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.sanctions_svc_token
resources:
- name: screenings
path: /screen
operations:
- name: screen
method: POST
Retrieves credit card rewards balance for Chase cardholders, returning points balance, pending points, tier status, and redemption options.
naftiko: '0.5'
info:
label: Credit Card Rewards Balance Lookup
description: Retrieves credit card rewards balance for Chase cardholders, returning points balance, pending points, tier status, and redemption options.
tags:
- consumer-banking
- credit-cards
- rewards
capability:
exposes:
- type: mcp
namespace: card-rewards
port: 8080
tools:
- name: get-rewards-balance
description: Look up credit card rewards balance.
inputParameters:
- name: card_id
in: body
type: string
description: The credit card account ID.
call: card-platform.get-rewards
with:
card_id: '{{card_id}}'
outputParameters:
- name: points_balance
type: number
mapping: $.rewards.pointsBalance
- name: pending_points
type: number
mapping: $.rewards.pendingPoints
- name: tier_status
type: string
mapping: $.rewards.tierStatus
consumes:
- type: http
namespace: card-platform
baseUri: https://card-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.card_platform_token
resources:
- name: rewards
path: /cards/{{card_id}}/rewards
inputParameters:
- name: card_id
in: path
operations:
- name: get-rewards
method: GET
Validates an AI/ML model before production deployment by pulling model metadata from the model registry, running bias and fairness checks, logging results in the model risk management system, and notifying the MRM team.
naftiko: '0.5'
info:
label: AI Model Risk Validation Pipeline
description: Validates an AI/ML model before production deployment by pulling model metadata from the model registry, running bias and fairness checks, logging results in the model risk management system, and notifying the MRM team.
tags:
- technology
- ai
- model-risk
- compliance
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ai-model-validation
port: 8080
tools:
- name: validate-model
description: Retrieve model metadata, run validation checks, log results, and notify the MRM team.
inputParameters:
- name: model_id
in: body
type: string
description: The AI/ML model identifier in the registry.
- name: validation_type
in: body
type: string
description: Type of validation (e.g., INITIAL, PERIODIC, MATERIAL_CHANGE).
- name: mrm_reviewer_email
in: body
type: string
description: Email of the model risk reviewer.
steps:
- name: get-model-metadata
type: call
call: model-registry.get-model
with:
model_id: '{{model_id}}'
- name: run-validation
type: call
call: model-validation-svc.validate
with:
model_id: '{{model_id}}'
validation_type: '{{validation_type}}'
model_type: '{{get-model-metadata.modelType}}'
- name: log-results
type: call
call: mrm-system.log-validation
with:
model_id: '{{model_id}}'
validation_type: '{{validation_type}}'
bias_score: '{{run-validation.biasScore}}'
fairness_score: '{{run-validation.fairnessScore}}'
overall_status: '{{run-validation.overallStatus}}'
- name: notify-reviewer
type: call
call: msteams.send-message
with:
recipient_upn: '{{mrm_reviewer_email}}'
text: 'Model validation complete: {{get-model-metadata.modelName}} ({{model_id}}). Type: {{validation_type}}. Bias: {{run-validation.biasScore}}. Fairness: {{run-validation.fairnessScore}}. Status: {{run-validation.overallStatus}}. MRM ref: {{log-results.validationRef}}.'
consumes:
- type: http
namespace: model-registry
baseUri: https://model-registry.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.model_registry_token
resources:
- name: models
path: /models/{{model_id}}
inputParameters:
- name: model_id
in: path
operations:
- name: get-model
method: GET
- type: http
namespace: model-validation-svc
baseUri: https://model-validation.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.model_validation_token
resources:
- name: validations
path: /validate
operations:
- name: validate
method: POST
- type: http
namespace: mrm-system
baseUri: https://mrm-system.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.mrm_system_token
resources:
- name: validations
path: /validations
operations:
- name: log-validation
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
At end of day, retrieves sub-account balances for a corporate client, calculates the net position, and executes a zero-balance sweep to the master account via the payments hub. Notifies the treasury team.
naftiko: '0.5'
info:
label: Cash Management Sweep Orchestrator
description: At end of day, retrieves sub-account balances for a corporate client, calculates the net position, and executes a zero-balance sweep to the master account via the payments hub. Notifies the treasury team.
tags:
- treasury
- cash-management
- payments
- commercial-banking
capability:
exposes:
- type: mcp
namespace: cash-sweep
port: 8080
tools:
- name: execute-sweep
description: Retrieve sub-account balances, calculate net, and execute zero-balance sweep to master account.
inputParameters:
- name: master_account_id
in: body
type: string
description: The master account identifier.
- name: client_id
in: body
type: string
description: The corporate client ID.
- name: treasurer_email
in: body
type: string
description: Email of the client treasurer for notification.
steps:
- name: get-balances
type: call
call: core-banking.get-sub-accounts
with:
client_id: '{{client_id}}'
master_account_id: '{{master_account_id}}'
- name: calc-sweep
type: call
call: cash-mgmt.calculate-sweep
with:
master_account_id: '{{master_account_id}}'
sub_account_balances: '{{get-balances.subAccounts}}'
- name: execute-transfers
type: call
call: payments-hub.execute-sweep
with:
master_account_id: '{{master_account_id}}'
transfers: '{{calc-sweep.transfers}}'
- name: notify-treasurer
type: call
call: messaging.send-confirmation
with:
client_id: '{{client_id}}'
message: 'EOD sweep completed. {{calc-sweep.transferCount}} transfers executed. Net swept: {{calc-sweep.netAmount}} {{calc-sweep.currency}}. Master balance: {{execute-transfers.masterBalance}}.'
consumes:
- type: http
namespace: core-banking
baseUri: https://core-banking.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: sub-accounts
path: /clients/{{client_id}}/accounts/{{master_account_id}}/sub-accounts
inputParameters:
- name: client_id
in: path
- name: master_account_id
in: path
operations:
- name: get-sub-accounts
method: GET
- type: http
namespace: cash-mgmt
baseUri: https://cash-management.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.cash_mgmt_token
resources:
- name: sweeps
path: /sweeps/calculate
operations:
- name: calculate-sweep
method: POST
- type: http
namespace: payments-hub
baseUri: https://payments-hub.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.payments_hub_token
resources:
- name: sweeps
path: /sweeps
operations:
- name: execute-sweep
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: confirmations
path: /confirmations
operations:
- name: send-confirmation
method: POST
Calculates margin requirements for a derivatives portfolio, compares against posted collateral, and if a shortfall exists, generates a margin call notice and notifies the counterparty via SWIFT messaging.
naftiko: '0.5'
info:
label: Derivatives Margin Call Orchestrator
description: Calculates margin requirements for a derivatives portfolio, compares against posted collateral, and if a shortfall exists, generates a margin call notice and notifies the counterparty via SWIFT messaging.
tags:
- trading
- derivatives
- collateral
- margin
- swift
capability:
exposes:
- type: mcp
namespace: margin-management
port: 8080
tools:
- name: process-margin-call
description: Calculate margin, check collateral, and issue margin call if shortfall exists.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The derivatives portfolio identifier.
- name: counterparty_lei
in: body
type: string
description: LEI of the counterparty.
- name: counterparty_bic
in: body
type: string
description: SWIFT BIC of the counterparty.
steps:
- name: calc-margin
type: call
call: margin-engine.calculate
with:
portfolio_id: '{{portfolio_id}}'
- name: get-collateral
type: call
call: collateral-mgmt.get-posted
with:
portfolio_id: '{{portfolio_id}}'
counterparty_lei: '{{counterparty_lei}}'
- name: issue-call
type: call
call: margin-engine.create-call
with:
portfolio_id: '{{portfolio_id}}'
counterparty_lei: '{{counterparty_lei}}'
required_margin: '{{calc-margin.totalMarginRequired}}'
posted_collateral: '{{get-collateral.totalPosted}}'
- name: notify-counterparty
type: call
call: swift-messaging.send-mt340
with:
counterparty_bic: '{{counterparty_bic}}'
margin_call_ref: '{{issue-call.callRef}}'
amount_due: '{{issue-call.shortfallAmount}}'
currency: '{{issue-call.currency}}'
deadline: '{{issue-call.deadline}}'
consumes:
- type: http
namespace: margin-engine
baseUri: https://margin-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.margin_engine_token
resources:
- name: calculations
path: /portfolios/{{portfolio_id}}/margin
inputParameters:
- name: portfolio_id
in: path
operations:
- name: calculate
method: POST
- name: calls
path: /margin-calls
operations:
- name: create-call
method: POST
- type: http
namespace: collateral-mgmt
baseUri: https://collateral-mgmt.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.collateral_mgmt_token
resources:
- name: posted-collateral
path: /portfolios/{{portfolio_id}}/counterparties/{{counterparty_lei}}/collateral
inputParameters:
- name: portfolio_id
in: path
- name: counterparty_lei
in: path
operations:
- name: get-posted
method: GET
- type: http
namespace: swift-messaging
baseUri: https://swift-messaging.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.swift_messaging_token
resources:
- name: messages
path: /messages/mt340
operations:
- name: send-mt340
method: POST
Orchestrates daily treasury funding by aggregating cash positions across entities, identifying funding gaps, executing intercompany transfers, and reporting to treasury management.
naftiko: '0.5'
info:
label: Daily Treasury Funding Orchestrator
description: Orchestrates daily treasury funding by aggregating cash positions across entities, identifying funding gaps, executing intercompany transfers, and reporting to treasury management.
tags:
- treasury
- funding
- cash-management
capability:
exposes:
- type: mcp
namespace: treasury-funding
port: 8080
tools:
- name: execute-daily-funding
description: Execute daily treasury funding operations.
inputParameters:
- name: business_date
in: body
type: string
description: The business date.
steps:
- name: aggregate-positions
type: call
call: treasury.aggregate-cash
with:
date: '{{business_date}}'
- name: identify-gaps
type: call
call: treasury.identify-funding-gaps
with:
date: '{{business_date}}'
total_position: '{{aggregate-positions.net_position}}'
- name: execute-transfers
type: call
call: treasury.execute-interco-transfers
with:
gap_list: '{{identify-gaps.gap_list}}'
- name: report-status
type: call
call: reporting.create-treasury-report
with:
date: '{{business_date}}'
net_position: '{{aggregate-positions.net_position}}'
transfers_executed: '{{execute-transfers.transfer_count}}'
gaps_resolved: '{{identify-gaps.gap_count}}'
consumes:
- type: http
namespace: treasury
baseUri: https://treasury.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.treasury_token
resources:
- name: cash
path: /cash/aggregate
operations:
- name: aggregate-cash
method: GET
- name: gaps
path: /funding/gaps
operations:
- name: identify-funding-gaps
method: POST
- name: transfers
path: /interco/transfers
operations:
- name: execute-interco-transfers
method: POST
- type: http
namespace: reporting
baseUri: https://reporting.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.reporting_token
resources:
- name: reports
path: /treasury/daily
operations:
- name: create-treasury-report
method: POST
Settles a tokenized payment on JPMorgan's Onyx blockchain platform by verifying the counterparty, creating the payment instruction, submitting to the blockchain ledger, and recording in the core banking system.
naftiko: '0.5'
info:
label: Blockchain Payment Rail Settlement
description: Settles a tokenized payment on JPMorgan's Onyx blockchain platform by verifying the counterparty, creating the payment instruction, submitting to the blockchain ledger, and recording in the core banking system.
tags:
- payments
- blockchain
- onyx
- technology
capability:
exposes:
- type: mcp
namespace: blockchain-settlement
port: 8080
tools:
- name: settle-on-chain
description: Verify counterparty, create instruction, submit to Onyx ledger, and record in core banking.
inputParameters:
- name: counterparty_id
in: body
type: string
description: The counterparty node identifier on Onyx.
- name: amount
in: body
type: number
description: Settlement amount.
- name: currency
in: body
type: string
description: Settlement currency.
- name: reference
in: body
type: string
description: Payment reference.
steps:
- name: verify-counterparty
type: call
call: onyx-platform.verify-node
with:
node_id: '{{counterparty_id}}'
- name: create-instruction
type: call
call: onyx-platform.create-instruction
with:
counterparty_id: '{{counterparty_id}}'
amount: '{{amount}}'
currency: '{{currency}}'
reference: '{{reference}}'
- name: submit-to-ledger
type: call
call: onyx-platform.submit
with:
instruction_id: '{{create-instruction.instructionId}}'
- name: record-in-core
type: call
call: core-banking.record-settlement
with:
tx_hash: '{{submit-to-ledger.txHash}}'
amount: '{{amount}}'
currency: '{{currency}}'
counterparty: '{{verify-counterparty.legalName}}'
reference: '{{reference}}'
consumes:
- type: http
namespace: onyx-platform
baseUri: https://onyx.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.onyx_token
resources:
- name: nodes
path: /nodes/{{node_id}}/verify
inputParameters:
- name: node_id
in: path
operations:
- name: verify-node
method: GET
- name: instructions
path: /instructions
operations:
- name: create-instruction
method: POST
- name: submit
path: /instructions/{{instruction_id}}/submit
inputParameters:
- name: instruction_id
in: path
operations:
- name: submit
method: POST
- type: http
namespace: core-banking
baseUri: https://core-banking.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.core_banking_token
resources:
- name: settlements
path: /settlements
operations:
- name: record-settlement
method: POST
Retrieves mobile check deposit status for consumer banking, returning deposit amount, hold status, available date, and image quality score.
naftiko: '0.5'
info:
label: Digital Banking Mobile Deposit Status
description: Retrieves mobile check deposit status for consumer banking, returning deposit amount, hold status, available date, and image quality score.
tags:
- consumer-banking
- digital
- deposits
capability:
exposes:
- type: mcp
namespace: mobile-deposits
port: 8080
tools:
- name: get-deposit-status
description: Look up a mobile check deposit status.
inputParameters:
- name: deposit_id
in: body
type: string
description: The mobile deposit ID.
call: digital-banking.get-deposit
with:
deposit_id: '{{deposit_id}}'
outputParameters:
- name: amount
type: string
mapping: $.deposit.amount
- name: hold_status
type: string
mapping: $.deposit.holdStatus
- name: available_date
type: string
mapping: $.deposit.availableDate
- name: image_quality
type: string
mapping: $.deposit.imageQualityScore
consumes:
- type: http
namespace: digital-banking
baseUri: https://digital-banking.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.digital_banking_token
resources:
- name: deposits
path: /mobile-deposits/{{deposit_id}}
inputParameters:
- name: deposit_id
in: path
operations:
- name: get-deposit
method: GET
When a trade fails to settle, retrieves the settlement instruction from the OMS, checks the counterparty SSI in reference data, creates a ServiceNow incident, and notifies the operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Trade Settlement Exception Resolution
description: When a trade fails to settle, retrieves the settlement instruction from the OMS, checks the counterparty SSI in reference data, creates a ServiceNow incident, and notifies the operations team via Microsoft Teams.
tags:
- operations
- settlement
- oms
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: settlement-exceptions
port: 8080
tools:
- name: resolve-settlement-fail
description: Investigate a failed trade settlement, cross-check SSIs, open an incident, and notify ops.
inputParameters:
- name: trade_ref
in: body
type: string
description: The failed trade reference.
- name: ops_team_email
in: body
type: string
description: Email of the settlement operations team.
steps:
- name: get-trade
type: call
call: oms.get-trade
with:
trade_ref: '{{trade_ref}}'
- name: get-ssi
type: call
call: ref-data-svc.get-ssi
with:
counterparty_lei: '{{get-trade.counterpartyLEI}}'
instrument_type: '{{get-trade.instrumentType}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Settlement fail: Trade {{trade_ref}} — {{get-trade.instrumentName}}'
category: settlement_exception
assigned_group: Settlement_Ops
description: 'Trade {{trade_ref}} failed settlement. Counterparty: {{get-trade.counterpartyName}}. Expected settlement: {{get-trade.settlementDate}}. SSI on file: {{get-ssi.custodianBIC}} / {{get-ssi.accountNumber}}.'
- name: notify-ops
type: call
call: msteams.send-message
with:
recipient_upn: '{{ops_team_email}}'
text: 'SETTLEMENT FAIL: Trade {{trade_ref}} ({{get-trade.instrumentName}}). Counterparty: {{get-trade.counterpartyName}}. Incident: {{create-incident.number}}. Please investigate SSI mismatch.'
consumes:
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: trades
path: /trades/{{trade_ref}}
inputParameters:
- name: trade_ref
in: path
operations:
- name: get-trade
method: GET
- type: http
namespace: ref-data-svc
baseUri: https://ref-data.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.ref_data_token
resources:
- name: ssi
path: /ssi/{{counterparty_lei}}/{{instrument_type}}
inputParameters:
- name: counterparty_lei
in: path
- name: instrument_type
in: path
operations:
- name: get-ssi
method: GET
- type: http
namespace: servicenow
baseUri: https://jpmorgan.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves collateral valuation for margin calculations, returning market value, haircut percentage, eligible value, and margin deficit/excess.
naftiko: '0.5'
info:
label: Collateral Margin Valuation
description: Retrieves collateral valuation for margin calculations, returning market value, haircut percentage, eligible value, and margin deficit/excess.
tags:
- risk
- collateral
- derivatives
capability:
exposes:
- type: mcp
namespace: collateral-valuation
port: 8080
tools:
- name: get-collateral-value
description: Retrieve collateral valuation for margin.
inputParameters:
- name: agreement_id
in: body
type: string
description: The collateral agreement ID.
call: collateral.get-valuation
with:
agreement_id: '{{agreement_id}}'
outputParameters:
- name: market_value
type: string
mapping: $.valuation.marketValue
- name: haircut_pct
type: string
mapping: $.valuation.haircutPercentage
- name: eligible_value
type: string
mapping: $.valuation.eligibleValue
- name: margin_status
type: string
mapping: $.valuation.marginStatus
consumes:
- type: http
namespace: collateral
baseUri: https://collateral.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.collateral_token
resources:
- name: valuations
path: /agreements/{{agreement_id}}/valuation
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-valuation
method: GET
On receipt of a new equities order, submits to the FIX gateway, retrieves the fill status, books the trade in the OMS, and sends a confirmation to the client via the messaging platform.
naftiko: '0.5'
info:
label: Trade Execution and Confirmation Orchestrator
description: On receipt of a new equities order, submits to the FIX gateway, retrieves the fill status, books the trade in the OMS, and sends a confirmation to the client via the messaging platform.
tags:
- trading
- equities
- fix-gateway
- oms
- confirmation
capability:
exposes:
- type: mcp
namespace: trade-execution
port: 8080
tools:
- name: execute-and-confirm
description: Submit an equities order, book the fill in the OMS, and send trade confirmation to the client.
inputParameters:
- name: symbol
in: body
type: string
description: The ticker symbol of the instrument.
- name: side
in: body
type: string
description: BUY or SELL.
- name: quantity
in: body
type: number
description: Number of shares.
- name: order_type
in: body
type: string
description: Order type (MARKET, LIMIT).
- name: client_id
in: body
type: string
description: The client account identifier.
steps:
- name: submit-order
type: call
call: fix-gw.submit-order
with:
symbol: '{{symbol}}'
side: '{{side}}'
quantity: '{{quantity}}'
order_type: '{{order_type}}'
- name: book-trade
type: call
call: oms.book-trade
with:
cl_ord_id: '{{submit-order.clOrdId}}'
client_id: '{{client_id}}'
symbol: '{{symbol}}'
side: '{{side}}'
quantity: '{{submit-order.cumQty}}'
price: '{{submit-order.avgPx}}'
- name: send-confirmation
type: call
call: messaging.send-confirmation
with:
client_id: '{{client_id}}'
message: 'Trade confirmed: {{side}} {{submit-order.cumQty}} {{symbol}} at {{submit-order.avgPx}}. Order ref: {{submit-order.clOrdId}}. Booking ref: {{book-trade.bookingRef}}.'
consumes:
- type: http
namespace: fix-gw
baseUri: https://fix-gateway.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fix_gateway_token
resources:
- name: orders
path: /orders
operations:
- name: submit-order
method: POST
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: bookings
path: /bookings
operations:
- name: book-trade
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: confirmations
path: /confirmations
operations:
- name: send-confirmation
method: POST
Orchestrates IPO bookbuilding by setting up the offering in the IB platform, collecting investor indications, running allocation analysis, and distributing allocation results to the syndicate.
naftiko: '0.5'
info:
label: Equity IPO Bookbuilding Orchestrator
description: Orchestrates IPO bookbuilding by setting up the offering in the IB platform, collecting investor indications, running allocation analysis, and distributing allocation results to the syndicate.
tags:
- investment-banking
- equities
- capital-markets
capability:
exposes:
- type: mcp
namespace: ipo-bookbuilding
port: 8080
tools:
- name: manage-bookbuild
description: Manage IPO bookbuilding process.
inputParameters:
- name: deal_id
in: body
type: string
description: The IPO deal ID.
- name: price_range_low
in: body
type: string
description: Price range low end.
- name: price_range_high
in: body
type: string
description: Price range high end.
steps:
- name: setup-book
type: call
call: ib-platform.create-book
with:
deal_id: '{{deal_id}}'
price_low: '{{price_range_low}}'
price_high: '{{price_range_high}}'
- name: collect-indications
type: call
call: ib-platform.get-indications
with:
deal_id: '{{deal_id}}'
- name: run-allocation
type: call
call: allocation-engine.allocate-ipo
with:
deal_id: '{{deal_id}}'
total_demand: '{{collect-indications.total_demand}}'
investor_count: '{{collect-indications.investor_count}}'
- name: distribute-results
type: call
call: messaging.send-allocation-notices
with:
deal_id: '{{deal_id}}'
allocation_count: '{{run-allocation.allocation_count}}'
consumes:
- type: http
namespace: ib-platform
baseUri: https://ib-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.ib_platform_token
resources:
- name: books
path: /books
operations:
- name: create-book
method: POST
- name: indications
path: /books/{{deal_id}}/indications
inputParameters:
- name: deal_id
in: path
operations:
- name: get-indications
method: GET
- type: http
namespace: allocation-engine
baseUri: https://allocation.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.allocation_token
resources:
- name: ipo
path: /ipo/allocate
operations:
- name: allocate-ipo
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: notices
path: /allocation-notices
operations:
- name: send-allocation-notices
method: POST
Retrieves operational risk incident details from the risk management system, returning incident type, financial impact, root cause, and remediation status.
naftiko: '0.5'
info:
label: Operational Risk Incident Lookup
description: Retrieves operational risk incident details from the risk management system, returning incident type, financial impact, root cause, and remediation status.
tags:
- risk
- operational-risk
capability:
exposes:
- type: mcp
namespace: op-risk-incidents
port: 8080
tools:
- name: get-incident
description: Look up an operational risk incident.
inputParameters:
- name: incident_id
in: body
type: string
description: The incident ID.
call: risk-system.get-incident
with:
incident_id: '{{incident_id}}'
outputParameters:
- name: type
type: string
mapping: $.incident.type
- name: financial_impact
type: string
mapping: $.incident.financialImpact
- name: root_cause
type: string
mapping: $.incident.rootCause
- name: remediation_status
type: string
mapping: $.incident.remediationStatus
consumes:
- type: http
namespace: risk-system
baseUri: https://risk-management.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.risk_system_token
resources:
- name: incidents
path: /op-risk/incidents/{{incident_id}}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
Orchestrates a corporate bond issuance by setting up the deal in the IB platform, pricing via the syndication desk, allocating to investors, and confirming settlement via the custody system.
naftiko: '0.5'
info:
label: Corporate Bond Issuance Orchestrator
description: Orchestrates a corporate bond issuance by setting up the deal in the IB platform, pricing via the syndication desk, allocating to investors, and confirming settlement via the custody system.
tags:
- investment-banking
- fixed-income
- capital-markets
capability:
exposes:
- type: mcp
namespace: bond-issuance
port: 8080
tools:
- name: process-issuance
description: Process a corporate bond issuance.
inputParameters:
- name: deal_id
in: body
type: string
description: The deal ID.
- name: issuer
in: body
type: string
description: The issuer name.
- name: notional
in: body
type: string
description: The issuance size.
steps:
- name: setup-deal
type: call
call: ib-platform.create-deal
with:
deal_id: '{{deal_id}}'
issuer: '{{issuer}}'
notional: '{{notional}}'
- name: price-deal
type: call
call: syndication.price-bond
with:
deal_id: '{{deal_id}}'
benchmark: '{{setup-deal.benchmark_rate}}'
- name: allocate-investors
type: call
call: syndication.allocate
with:
deal_id: '{{deal_id}}'
final_spread: '{{price-deal.final_spread}}'
- name: confirm-settlement
type: call
call: custody.setup-settlement
with:
deal_id: '{{deal_id}}'
isin: '{{price-deal.isin}}'
settlement_date: '{{price-deal.settlement_date}}'
consumes:
- type: http
namespace: ib-platform
baseUri: https://ib-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.ib_platform_token
resources:
- name: deals
path: /deals
operations:
- name: create-deal
method: POST
- type: http
namespace: syndication
baseUri: https://syndication.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.syndication_token
resources:
- name: pricing
path: /pricing
operations:
- name: price-bond
method: POST
- name: allocation
path: /allocations
operations:
- name: allocate
method: POST
- type: http
namespace: custody
baseUri: https://custody.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.custody_token
resources:
- name: settlement
path: /setup
operations:
- name: setup-settlement
method: POST
Deploys a new algorithmic trading strategy by registering it in the algo management platform, configuring risk limits, activating on the execution gateway, and notifying the quant desk via Microsoft Teams.
naftiko: '0.5'
info:
label: Algorithmic Trading Strategy Deployment
description: Deploys a new algorithmic trading strategy by registering it in the algo management platform, configuring risk limits, activating on the execution gateway, and notifying the quant desk via Microsoft Teams.
tags:
- trading
- algorithmic
- risk
- technology
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: algo-deployment
port: 8080
tools:
- name: deploy-strategy
description: Register algo strategy, set risk limits, activate on gateway, and notify the desk.
inputParameters:
- name: strategy_id
in: body
type: string
description: The algo strategy identifier.
- name: max_notional
in: body
type: number
description: Maximum notional per order.
- name: max_participation_rate
in: body
type: number
description: Maximum participation rate as percentage.
- name: quant_desk_email
in: body
type: string
description: Email of the quant desk lead.
steps:
- name: register-strategy
type: call
call: algo-platform.register
with:
strategy_id: '{{strategy_id}}'
- name: set-limits
type: call
call: risk-engine.set-algo-limits
with:
strategy_id: '{{strategy_id}}'
max_notional: '{{max_notional}}'
max_participation_rate: '{{max_participation_rate}}'
- name: activate
type: call
call: fix-gw.activate-strategy
with:
strategy_id: '{{strategy_id}}'
limits_ref: '{{set-limits.limitsRef}}'
- name: notify-desk
type: call
call: msteams.send-message
with:
recipient_upn: '{{quant_desk_email}}'
text: 'Algo strategy {{strategy_id}} deployed. Max notional: {{max_notional}}. Max participation: {{max_participation_rate}}%. Gateway status: {{activate.status}}. Limits ref: {{set-limits.limitsRef}}.'
consumes:
- type: http
namespace: algo-platform
baseUri: https://algo-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.algo_platform_token
resources:
- name: strategies
path: /strategies
operations:
- name: register
method: POST
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: algo-limits
path: /algo-limits
operations:
- name: set-algo-limits
method: POST
- type: http
namespace: fix-gw
baseUri: https://fix-gateway.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fix_gateway_token
resources:
- name: strategies
path: /strategies/activate
operations:
- name: activate-strategy
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the latest cash and securities balances for a custody account from the global custody platform. Used by asset managers and fund administrators for daily reconciliation.
naftiko: '0.5'
info:
label: Custody Account Balance Lookup
description: Retrieves the latest cash and securities balances for a custody account from the global custody platform. Used by asset managers and fund administrators for daily reconciliation.
tags:
- custody
- asset-management
- reconciliation
capability:
exposes:
- type: mcp
namespace: custody
port: 8080
tools:
- name: get-custody-balance
description: Fetch cash and securities balances for a custody account by account ID. Returns total AUM, cash balance, and number of holdings.
inputParameters:
- name: account_id
in: body
type: string
description: The custody account identifier.
call: custody-platform.get-balance
with:
account_id: '{{account_id}}'
outputParameters:
- name: total_aum
type: number
mapping: $.account.totalAUM
- name: cash_balance
type: number
mapping: $.account.cashBalance
- name: holdings_count
type: number
mapping: $.account.holdingsCount
consumes:
- type: http
namespace: custody-platform
baseUri: https://custody-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.custody_api_token
resources:
- name: accounts
path: /accounts/{{account_id}}/balances
inputParameters:
- name: account_id
in: path
operations:
- name: get-balance
method: GET
Retrieves wire transfer status from the payment hub, returning transfer state, beneficiary bank, amount, and value date for domestic and international wires.
naftiko: '0.5'
info:
label: Wire Transfer Status Lookup
description: Retrieves wire transfer status from the payment hub, returning transfer state, beneficiary bank, amount, and value date for domestic and international wires.
tags:
- payments
- wire-transfer
capability:
exposes:
- type: mcp
namespace: wire-transfers
port: 8080
tools:
- name: get-wire-status
description: Look up a wire transfer status.
inputParameters:
- name: reference_id
in: body
type: string
description: The wire transfer reference ID.
call: payment-hub.get-wire
with:
reference_id: '{{reference_id}}'
outputParameters:
- name: status
type: string
mapping: $.wire.status
- name: beneficiary_bank
type: string
mapping: $.wire.beneficiaryBank
- name: amount
type: string
mapping: $.wire.amount
- name: value_date
type: string
mapping: $.wire.valueDate
consumes:
- type: http
namespace: payment-hub
baseUri: https://payment-hub.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.payment_hub_token
resources:
- name: wires
path: /wires/{{reference_id}}
inputParameters:
- name: reference_id
in: path
operations:
- name: get-wire
method: GET
Queries the internal credit risk engine for the probability-of-default score and credit rating of a counterparty by LEI. Used by credit officers and relationship managers during onboarding and periodic reviews.
naftiko: '0.5'
info:
label: Credit Risk Score Retrieval
description: Queries the internal credit risk engine for the probability-of-default score and credit rating of a counterparty by LEI. Used by credit officers and relationship managers during onboarding and periodic reviews.
tags:
- risk
- credit
- counterparty
capability:
exposes:
- type: mcp
namespace: credit-risk
port: 8080
tools:
- name: get-credit-score
description: Look up a counterparty credit risk profile by Legal Entity Identifier (LEI). Returns PD score, internal rating, and last review date.
inputParameters:
- name: lei
in: body
type: string
description: The 20-character Legal Entity Identifier of the counterparty.
call: risk-engine.get-credit-profile
with:
lei: '{{lei}}'
outputParameters:
- name: pd_score
type: number
mapping: $.creditProfile.probabilityOfDefault
- name: internal_rating
type: string
mapping: $.creditProfile.internalRating
- name: last_review_date
type: string
mapping: $.creditProfile.lastReviewDate
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: credit-profiles
path: /counterparties/{{lei}}/credit-profile
inputParameters:
- name: lei
in: path
operations:
- name: get-credit-profile
method: GET
Identifies tax-loss harvesting opportunities by scanning portfolio positions for unrealized losses, finding substitute securities that maintain factor exposure, generating sell/buy trades, and logging the harvest event for tax reporting.
naftiko: '0.5'
info:
label: Wealth Client Tax-Loss Harvesting
description: Identifies tax-loss harvesting opportunities by scanning portfolio positions for unrealized losses, finding substitute securities that maintain factor exposure, generating sell/buy trades, and logging the harvest event for tax reporting.
tags:
- wealth-management
- tax
- portfolio
- trading
capability:
exposes:
- type: mcp
namespace: tax-loss-harvesting
port: 8080
tools:
- name: harvest-losses
description: Scan for unrealized losses, find substitutes, generate trades, and log for tax reporting.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The client portfolio identifier.
- name: loss_threshold
in: body
type: number
description: Minimum unrealized loss in USD to trigger harvest.
- name: advisor_email
in: body
type: string
description: Email of the wealth advisor.
steps:
- name: get-positions
type: call
call: portfolio-svc.get-positions
with:
portfolio_id: '{{portfolio_id}}'
- name: identify-losses
type: call
call: tax-engine.scan-losses
with:
positions: '{{get-positions.positions}}'
threshold: '{{loss_threshold}}'
- name: find-substitutes
type: call
call: tax-engine.find-substitutes
with:
loss_positions: '{{identify-losses.eligiblePositions}}'
- name: submit-trades
type: call
call: oms.submit-basket
with:
portfolio_id: '{{portfolio_id}}'
trades: '{{find-substitutes.tradeList}}'
- name: log-harvest
type: call
call: tax-engine.log-harvest
with:
portfolio_id: '{{portfolio_id}}'
basket_ref: '{{submit-trades.basketRef}}'
total_losses_harvested: '{{identify-losses.totalLoss}}'
positions_count: '{{identify-losses.positionCount}}'
consumes:
- type: http
namespace: portfolio-svc
baseUri: https://portfolio-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.portfolio_api_token
resources:
- name: positions
path: /portfolios/{{portfolio_id}}/positions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-positions
method: GET
- type: http
namespace: tax-engine
baseUri: https://tax-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.tax_engine_token
resources:
- name: loss-scanning
path: /scan-losses
operations:
- name: scan-losses
method: POST
- name: substitutes
path: /substitutes
operations:
- name: find-substitutes
method: POST
- name: harvest-log
path: /harvest-log
operations:
- name: log-harvest
method: POST
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: baskets
path: /baskets
operations:
- name: submit-basket
method: POST
Checks the submission status of a regulatory filing (e.g., FR Y-14, CCAR) from the regulatory reporting platform. Returns filing status, submission timestamp, and acknowledgement ID. Used by regulatory affairs teams.
naftiko: '0.5'
info:
label: Regulatory Report Status
description: Checks the submission status of a regulatory filing (e.g., FR Y-14, CCAR) from the regulatory reporting platform. Returns filing status, submission timestamp, and acknowledgement ID. Used by regulatory affairs teams.
tags:
- compliance
- regulatory
- reporting
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: get-filing-status
description: Check the status of a regulatory filing by report ID. Returns filing status, submission timestamp, and regulator acknowledgement ID.
inputParameters:
- name: report_id
in: body
type: string
description: The regulatory report filing identifier.
call: reg-platform.get-filing
with:
report_id: '{{report_id}}'
outputParameters:
- name: filing_status
type: string
mapping: $.filing.status
- name: submitted_at
type: string
mapping: $.filing.submittedAt
- name: ack_id
type: string
mapping: $.filing.acknowledgementId
consumes:
- type: http
namespace: reg-platform
baseUri: https://reg-reporting.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.reg_platform_token
resources:
- name: filings
path: /filings/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-filing
method: GET
When a new equity research report is published, fetches the report metadata, identifies subscribed institutional clients in Salesforce, and distributes the report via the client document portal and email notifications.
naftiko: '0.5'
info:
label: Equity Research Distribution Pipeline
description: When a new equity research report is published, fetches the report metadata, identifies subscribed institutional clients in Salesforce, and distributes the report via the client document portal and email notifications.
tags:
- research
- equities
- salesforce
- distribution
capability:
exposes:
- type: mcp
namespace: research-distribution
port: 8080
tools:
- name: distribute-research
description: Fetch research report, identify subscribers, publish to document portal, and send email notifications.
inputParameters:
- name: report_id
in: body
type: string
description: The research report identifier.
- name: analyst_name
in: body
type: string
description: Name of the publishing analyst.
steps:
- name: get-report
type: call
call: research-platform.get-report
with:
report_id: '{{report_id}}'
- name: get-subscribers
type: call
call: salesforce.get-subscribers
with:
coverage_ticker: '{{get-report.ticker}}'
sector: '{{get-report.sector}}'
- name: publish-portal
type: call
call: document-portal.publish
with:
report_id: '{{report_id}}'
title: '{{get-report.title}}'
ticker: '{{get-report.ticker}}'
analyst: '{{analyst_name}}'
subscriber_ids: '{{get-subscribers.clientIds}}'
- name: send-notifications
type: call
call: email-service.send-bulk
with:
template: research_alert
recipients: '{{get-subscribers.emails}}'
subject: 'New Research: {{get-report.title}} — {{get-report.ticker}}'
body: '{{analyst_name}} published a new report on {{get-report.ticker}}: {{get-report.title}}. Rating: {{get-report.rating}}. Target price: {{get-report.targetPrice}}. Access at: {{publish-portal.portalUrl}}.'
consumes:
- type: http
namespace: research-platform
baseUri: https://research-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.research_platform_token
resources:
- name: reports
path: /reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
- type: http
namespace: salesforce
baseUri: https://jpmorgan.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: subscribers
path: /query
operations:
- name: get-subscribers
method: GET
- type: http
namespace: document-portal
baseUri: https://doc-portal.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.doc_portal_token
resources:
- name: publications
path: /publications
operations:
- name: publish
method: POST
- type: http
namespace: email-service
baseUri: https://email-service.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.email_service_token
resources:
- name: bulk-send
path: /bulk
operations:
- name: send-bulk
method: POST
Retrieves yield curve data from the market data service, returning spot rates, forward rates, and discount factors for a specified curve and date.
naftiko: '0.5'
info:
label: Fixed Income Yield Curve Retrieval
description: Retrieves yield curve data from the market data service, returning spot rates, forward rates, and discount factors for a specified curve and date.
tags:
- market-data
- fixed-income
- rates
capability:
exposes:
- type: mcp
namespace: yield-curves
port: 8080
tools:
- name: get-yield-curve
description: Retrieve yield curve data.
inputParameters:
- name: curve_name
in: body
type: string
description: The curve name (UST, LIBOR, SOFR).
- name: date
in: body
type: string
description: The curve date.
call: market-data.get-curve
with:
curve_name: '{{curve_name}}'
date: '{{date}}'
outputParameters:
- name: spot_rates
type: string
mapping: $.curve.spotRates
- name: forward_rates
type: string
mapping: $.curve.forwardRates
- name: tenors
type: string
mapping: $.curve.tenors
consumes:
- type: http
namespace: market-data
baseUri: https://market-data.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.market_data_token
resources:
- name: curves
path: /yield-curves/{{curve_name}}?date={{date}}
inputParameters:
- name: curve_name
in: path
- name: date
in: query
operations:
- name: get-curve
method: GET
Orchestrates client relationship reviews by pulling revenue data from the CRM, analyzing wallet share, generating the review presentation, and scheduling the client meeting.
naftiko: '0.5'
info:
label: Client Relationship Review Pipeline
description: Orchestrates client relationship reviews by pulling revenue data from the CRM, analyzing wallet share, generating the review presentation, and scheduling the client meeting.
tags:
- client-management
- commercial-banking
- crm
capability:
exposes:
- type: mcp
namespace: client-review
port: 8080
tools:
- name: prepare-review
description: Prepare a client relationship review.
inputParameters:
- name: client_id
in: body
type: string
description: The client ID.
- name: review_period
in: body
type: string
description: The review period.
steps:
- name: get-revenue
type: call
call: crm.get-client-revenue
with:
client_id: '{{client_id}}'
period: '{{review_period}}'
- name: analyze-wallet
type: call
call: analytics.wallet-share-analysis
with:
client_id: '{{client_id}}'
revenue: '{{get-revenue.total_revenue}}'
- name: generate-presentation
type: call
call: doc-gen.create-review-deck
with:
client_id: '{{client_id}}'
revenue: '{{get-revenue.total_revenue}}'
wallet_share: '{{analyze-wallet.wallet_share_pct}}'
opportunities: '{{analyze-wallet.opportunities}}'
consumes:
- type: http
namespace: crm
baseUri: https://crm.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.crm_token
resources:
- name: revenue
path: /clients/{{client_id}}/revenue
inputParameters:
- name: client_id
in: path
operations:
- name: get-client-revenue
method: GET
- type: http
namespace: analytics
baseUri: https://analytics.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: wallet-share
path: /wallet-share/analyze
operations:
- name: wallet-share-analysis
method: POST
- type: http
namespace: doc-gen
baseUri: https://doc-generation.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.docgen_token
resources:
- name: presentations
path: /review-decks
operations:
- name: create-review-deck
method: POST
Synchronizes M&A deal status from the deal management system to Salesforce, updates the pitch book repository in SharePoint, and notifies the coverage banker via Microsoft Teams when a deal stage changes.
naftiko: '0.5'
info:
label: Investment Banking Deal Pipeline Tracker
description: Synchronizes M&A deal status from the deal management system to Salesforce, updates the pitch book repository in SharePoint, and notifies the coverage banker via Microsoft Teams when a deal stage changes.
tags:
- investment-banking
- deals
- salesforce
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ib-deal-pipeline
port: 8080
tools:
- name: sync-deal-status
description: Update CRM, refresh pitch book repository, and notify banker on deal stage change.
inputParameters:
- name: deal_id
in: body
type: string
description: The M&A deal identifier.
- name: new_stage
in: body
type: string
description: The new deal stage.
- name: banker_email
in: body
type: string
description: Email of the coverage banker.
steps:
- name: get-deal
type: call
call: deal-mgmt.get-deal
with:
deal_id: '{{deal_id}}'
- name: update-crm
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{get-deal.crmOpportunityId}}'
stage: '{{new_stage}}'
- name: update-pitchbook
type: call
call: sharepoint.update-metadata
with:
site_id: ib_deals_site
folder_path: Deals/{{get-deal.dealName}}
metadata_stage: '{{new_stage}}'
- name: notify-banker
type: call
call: msteams.send-message
with:
recipient_upn: '{{banker_email}}'
text: 'Deal update: {{get-deal.dealName}} moved to {{new_stage}}. Target: {{get-deal.targetName}}. Deal size: {{get-deal.dealSize}}. CRM updated, pitch book refreshed.'
consumes:
- type: http
namespace: deal-mgmt
baseUri: https://deal-management.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.deal_mgmt_token
resources:
- name: deals
path: /deals/{{deal_id}}
inputParameters:
- name: deal_id
in: path
operations:
- name: get-deal
method: GET
- type: http
namespace: salesforce
baseUri: https://jpmorgan.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: 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: update-metadata
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves cross-currency swap valuation from Athena, returning NPV, accrued interest, current notional exchange rate, and next payment date.
naftiko: '0.5'
info:
label: Cross-Currency Swap Valuation
description: Retrieves cross-currency swap valuation from Athena, returning NPV, accrued interest, current notional exchange rate, and next payment date.
tags:
- trading
- derivatives
- fx
capability:
exposes:
- type: mcp
namespace: xccy-swaps
port: 8080
tools:
- name: value-xccy-swap
description: Value a cross-currency swap via Athena.
inputParameters:
- name: trade_id
in: body
type: string
description: The trade ID.
call: athena.value-swap
with:
trade_id: '{{trade_id}}'
outputParameters:
- name: npv
type: string
mapping: $.valuation.npv
- name: accrued_interest
type: string
mapping: $.valuation.accruedInterest
- name: fx_rate
type: string
mapping: $.valuation.currentFxRate
- name: next_payment
type: string
mapping: $.valuation.nextPaymentDate
consumes:
- type: http
namespace: athena
baseUri: https://athena.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.athena_token
resources:
- name: valuations
path: /valuations/xccy-swaps/{{trade_id}}
inputParameters:
- name: trade_id
in: path
operations:
- name: value-swap
method: GET
Retrieves structured note pricing from Athena, returning indicative price, embedded option value, credit spread, and coupon schedule for wealth management products.
naftiko: '0.5'
info:
label: Structured Note Pricing
description: Retrieves structured note pricing from Athena, returning indicative price, embedded option value, credit spread, and coupon schedule for wealth management products.
tags:
- structured-products
- wealth-management
- pricing
capability:
exposes:
- type: mcp
namespace: structured-notes
port: 8080
tools:
- name: price-note
description: Price a structured note via Athena.
inputParameters:
- name: note_id
in: body
type: string
description: The structured note ISIN.
call: athena.price-structured-note
with:
note_id: '{{note_id}}'
outputParameters:
- name: indicative_price
type: string
mapping: $.pricing.indicativePrice
- name: option_value
type: string
mapping: $.pricing.embeddedOptionValue
- name: credit_spread
type: string
mapping: $.pricing.creditSpread
consumes:
- type: http
namespace: athena
baseUri: https://athena.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.athena_token
resources:
- name: structured-notes
path: /pricing/structured-notes/{{note_id}}
inputParameters:
- name: note_id
in: path
operations:
- name: price-structured-note
method: GET
When the AML engine flags a suspicious transaction, enriches it with customer KYC data, creates a case in the case management system, and notifies the BSA officer via email.
naftiko: '0.5'
info:
label: AML Transaction Monitoring and Escalation
description: When the AML engine flags a suspicious transaction, enriches it with customer KYC data, creates a case in the case management system, and notifies the BSA officer via email.
tags:
- compliance
- aml
- kyc
- case-management
capability:
exposes:
- type: mcp
namespace: aml-monitoring
port: 8080
tools:
- name: escalate-aml-alert
description: Enrich an AML alert with KYC data, create a compliance case, and notify the BSA officer.
inputParameters:
- name: alert_id
in: body
type: string
description: The AML alert identifier.
- name: customer_id
in: body
type: string
description: The customer entity ID.
- name: bsa_officer_email
in: body
type: string
description: Email of the BSA/AML officer.
steps:
- name: get-alert
type: call
call: aml-engine.get-alert
with:
alert_id: '{{alert_id}}'
- name: get-kyc
type: call
call: kyc-platform.get-entity
with:
entity_id: '{{customer_id}}'
- name: create-case
type: call
call: case-mgmt.create-case
with:
title: 'AML Alert: {{get-alert.alertType}} — {{get-kyc.entityName}}'
description: 'Alert {{alert_id}} flagged transaction of {{get-alert.amount}} {{get-alert.currency}}. Customer risk tier: {{get-kyc.riskTier}}. KYC status: {{get-kyc.verificationStatus}}.'
priority: high
category: aml_investigation
- name: notify-bsa-officer
type: call
call: msteams.send-message
with:
recipient_upn: '{{bsa_officer_email}}'
text: 'AML ALERT: Case {{create-case.caseId}} opened for {{get-kyc.entityName}}. Alert type: {{get-alert.alertType}}. Amount: {{get-alert.amount}} {{get-alert.currency}}. Risk tier: {{get-kyc.riskTier}}.'
consumes:
- type: http
namespace: aml-engine
baseUri: https://aml-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.aml_engine_token
resources:
- name: alerts
path: /alerts/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: kyc-platform
baseUri: https://kyc-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.kyc_platform_token
resources:
- name: entities
path: /entities/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-entity
method: GET
- type: http
namespace: case-mgmt
baseUri: https://case-management.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.case_mgmt_token
resources:
- name: cases
path: /cases
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
Orchestrates periodic KYC refresh by pulling client data from the CRM, running sanctions screening, updating risk classification, and creating a review case in the compliance system.
naftiko: '0.5'
info:
label: Client KYC Refresh Orchestrator
description: Orchestrates periodic KYC refresh by pulling client data from the CRM, running sanctions screening, updating risk classification, and creating a review case in the compliance system.
tags:
- compliance
- kyc
- sanctions
capability:
exposes:
- type: mcp
namespace: kyc-refresh
port: 8080
tools:
- name: refresh-kyc
description: Orchestrate a KYC refresh for a client.
inputParameters:
- name: client_id
in: body
type: string
description: The client ID.
steps:
- name: get-client-data
type: call
call: crm.get-client
with:
client_id: '{{client_id}}'
- name: screen-sanctions
type: call
call: sanctions.screen-entity
with:
entity_name: '{{get-client-data.legal_name}}'
entity_type: '{{get-client-data.entity_type}}'
country: '{{get-client-data.domicile}}'
- name: update-risk
type: call
call: risk-system.update-classification
with:
client_id: '{{client_id}}'
sanctions_result: '{{screen-sanctions.result}}'
pep_status: '{{screen-sanctions.pep_match}}'
- name: create-review
type: call
call: compliance-system.create-case
with:
client_id: '{{client_id}}'
case_type: KYC_Refresh
risk_rating: '{{update-risk.new_rating}}'
sanctions_hits: '{{screen-sanctions.hit_count}}'
consumes:
- type: http
namespace: crm
baseUri: https://crm.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.crm_token
resources:
- name: clients
path: /clients/{{client_id}}
inputParameters:
- name: client_id
in: path
operations:
- name: get-client
method: GET
- type: http
namespace: sanctions
baseUri: https://sanctions-screening.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.sanctions_token
resources:
- name: screening
path: /screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: risk-system
baseUri: https://risk-management.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.risk_system_token
resources:
- name: classification
path: /clients/classify
operations:
- name: update-classification
method: POST
- type: http
namespace: compliance-system
baseUri: https://compliance.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_token
resources:
- name: cases
path: /cases
operations:
- name: create-case
method: POST
Fetches a real-time quote for a given instrument from the Bloomberg B-PIPE market data feed. Returns bid, ask, last price, and volume. Used by traders, portfolio managers, and risk analysts.
naftiko: '0.5'
info:
label: Market Data Quote Retrieval
description: Fetches a real-time quote for a given instrument from the Bloomberg B-PIPE market data feed. Returns bid, ask, last price, and volume. Used by traders, portfolio managers, and risk analysts.
tags:
- trading
- market-data
- bloomberg
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-quote
description: Retrieve a real-time quote from Bloomberg B-PIPE for a given ticker symbol. Returns bid, ask, last trade price, and volume.
inputParameters:
- name: ticker
in: body
type: string
description: The Bloomberg ticker symbol (e.g., AAPL US Equity).
call: bloomberg.get-quote
with:
ticker: '{{ticker}}'
outputParameters:
- name: bid
type: number
mapping: $.data.bid
- name: ask
type: number
mapping: $.data.ask
- name: last_price
type: number
mapping: $.data.lastPrice
- name: volume
type: number
mapping: $.data.volume
consumes:
- type: http
namespace: bloomberg
baseUri: https://bpipe-api.bloomberg.com/eap/catalogs/bbg/snapshots
authentication:
type: bearer
token: $secrets.bloomberg_bpipe_token
resources:
- name: quotes
path: /{{ticker}}
inputParameters:
- name: ticker
in: path
operations:
- name: get-quote
method: GET
Retrieves account analysis statement for commercial banking clients, returning average balance, earnings credit rate, service charges, and net position.
naftiko: '0.5'
info:
label: Commercial Banking Account Analysis
description: Retrieves account analysis statement for commercial banking clients, returning average balance, earnings credit rate, service charges, and net position.
tags:
- commercial-banking
- accounts
capability:
exposes:
- type: mcp
namespace: account-analysis
port: 8080
tools:
- name: get-analysis
description: Retrieve commercial account analysis statement.
inputParameters:
- name: account_id
in: body
type: string
description: The commercial account ID.
- name: statement_period
in: body
type: string
description: The statement period.
call: commercial-banking.get-analysis
with:
account_id: '{{account_id}}'
statement_period: '{{statement_period}}'
outputParameters:
- name: avg_balance
type: string
mapping: $.analysis.averageBalance
- name: ecr
type: string
mapping: $.analysis.earningsCreditRate
- name: service_charges
type: string
mapping: $.analysis.totalServiceCharges
- name: net_position
type: string
mapping: $.analysis.netPosition
consumes:
- type: http
namespace: commercial-banking
baseUri: https://commercial.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.commercial_token
resources:
- name: analysis
path: /accounts/{{account_id}}/analysis
inputParameters:
- name: account_id
in: path
operations:
- name: get-analysis
method: GET
When a corporate action event is announced, retrieves affected holdings from the custody platform, calculates entitlements, records elections, and notifies the asset manager via the client portal.
naftiko: '0.5'
info:
label: Custody Corporate Action Processing
description: When a corporate action event is announced, retrieves affected holdings from the custody platform, calculates entitlements, records elections, and notifies the asset manager via the client portal.
tags:
- custody
- corporate-actions
- asset-management
capability:
exposes:
- type: mcp
namespace: corporate-actions
port: 8080
tools:
- name: process-corporate-action
description: Identify affected holdings, calculate entitlements, record elections, and notify the asset manager.
inputParameters:
- name: event_id
in: body
type: string
description: The corporate action event identifier.
- name: account_id
in: body
type: string
description: The custody account affected.
- name: election
in: body
type: string
description: The client election choice (e.g., CASH, STOCK).
steps:
- name: get-event
type: call
call: corp-actions-svc.get-event
with:
event_id: '{{event_id}}'
- name: get-holdings
type: call
call: custody-platform.get-holdings
with:
account_id: '{{account_id}}'
isin: '{{get-event.isin}}'
- name: calc-entitlement
type: call
call: corp-actions-svc.calculate-entitlement
with:
event_id: '{{event_id}}'
quantity: '{{get-holdings.quantity}}'
election: '{{election}}'
- name: record-election
type: call
call: corp-actions-svc.submit-election
with:
event_id: '{{event_id}}'
account_id: '{{account_id}}'
election: '{{election}}'
entitled_amount: '{{calc-entitlement.entitledAmount}}'
consumes:
- type: http
namespace: corp-actions-svc
baseUri: https://corp-actions.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.corp_actions_token
resources:
- name: events
path: /events/{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
- name: entitlements
path: /entitlements/calculate
operations:
- name: calculate-entitlement
method: POST
- name: elections
path: /elections
operations:
- name: submit-election
method: POST
- type: http
namespace: custody-platform
baseUri: https://custody-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.custody_api_token
resources:
- name: holdings
path: /accounts/{{account_id}}/holdings
inputParameters:
- name: account_id
in: path
operations:
- name: get-holdings
method: GET
Processes a consumer mortgage application by pulling credit reports, running automated underwriting, generating the loan estimate, and notifying the loan officer via the CRM.
naftiko: '0.5'
info:
label: Consumer Mortgage Origination Pipeline
description: Processes a consumer mortgage application by pulling credit reports, running automated underwriting, generating the loan estimate, and notifying the loan officer via the CRM.
tags:
- lending
- mortgage
- consumer-banking
capability:
exposes:
- type: mcp
namespace: mortgage-origination
port: 8080
tools:
- name: originate-mortgage
description: Process a consumer mortgage application.
inputParameters:
- name: application_id
in: body
type: string
description: The mortgage application ID.
- name: borrower_id
in: body
type: string
description: The borrower ID.
steps:
- name: pull-credit
type: call
call: credit-bureau.pull-report
with:
borrower_id: '{{borrower_id}}'
- name: run-underwriting
type: call
call: underwriting-engine.evaluate
with:
application_id: '{{application_id}}'
credit_score: '{{pull-credit.fico_score}}'
dti_ratio: '{{pull-credit.dti}}'
- name: generate-estimate
type: call
call: loan-platform.generate-le
with:
application_id: '{{application_id}}'
rate: '{{run-underwriting.offered_rate}}'
term: '{{run-underwriting.term}}'
- name: notify-lo
type: call
call: crm.create-task
with:
subject: 'Mortgage app {{application_id}}: {{run-underwriting.decision}}'
description: 'FICO: {{pull-credit.fico_score}}. Rate: {{run-underwriting.offered_rate}}. Loan estimate generated: {{generate-estimate.le_id}}.'
consumes:
- type: http
namespace: credit-bureau
baseUri: https://credit-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.credit_bureau_token
resources:
- name: reports
path: /reports/pull
operations:
- name: pull-report
method: POST
- type: http
namespace: underwriting-engine
baseUri: https://underwriting.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.underwriting_token
resources:
- name: evaluation
path: /evaluate
operations:
- name: evaluate
method: POST
- type: http
namespace: loan-platform
baseUri: https://mortgage-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.mortgage_platform_token
resources:
- name: loan-estimates
path: /loan-estimates
operations:
- name: generate-le
method: POST
- type: http
namespace: crm
baseUri: https://crm.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.crm_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Orchestrates LC issuance by verifying the applicant KYC, screening the beneficiary, creating the LC in the trade finance system, and transmitting to the advising bank via SWIFT MT700.
naftiko: '0.5'
info:
label: Trade Finance Letter of Credit Issuance
description: Orchestrates LC issuance by verifying the applicant KYC, screening the beneficiary, creating the LC in the trade finance system, and transmitting to the advising bank via SWIFT MT700.
tags:
- commercial-banking
- trade-finance
- compliance
- swift
- kyc
capability:
exposes:
- type: mcp
namespace: trade-finance
port: 8080
tools:
- name: issue-letter-of-credit
description: Verify KYC, screen beneficiary, create LC, and transmit via SWIFT.
inputParameters:
- name: applicant_entity_id
in: body
type: string
description: Entity ID of the LC applicant.
- name: beneficiary_name
in: body
type: string
description: Full name of the beneficiary.
- name: beneficiary_country
in: body
type: string
description: Country code of the beneficiary.
- name: advising_bank_bic
in: body
type: string
description: SWIFT BIC of the advising bank.
- name: amount
in: body
type: number
description: LC amount.
- name: currency
in: body
type: string
description: LC currency.
- name: expiry_date
in: body
type: string
description: LC expiry date in YYYY-MM-DD format.
steps:
- name: verify-kyc
type: call
call: kyc-platform.get-entity
with:
entity_id: '{{applicant_entity_id}}'
- name: screen-beneficiary
type: call
call: sanctions-svc.screen
with:
party_name: '{{beneficiary_name}}'
country_code: '{{beneficiary_country}}'
- name: create-lc
type: call
call: trade-finance-svc.create-lc
with:
applicant_entity_id: '{{applicant_entity_id}}'
beneficiary_name: '{{beneficiary_name}}'
amount: '{{amount}}'
currency: '{{currency}}'
expiry_date: '{{expiry_date}}'
- name: transmit-mt700
type: call
call: swift-messaging.send-mt700
with:
advising_bank_bic: '{{advising_bank_bic}}'
lc_number: '{{create-lc.lcNumber}}'
amount: '{{amount}}'
currency: '{{currency}}'
beneficiary_name: '{{beneficiary_name}}'
expiry_date: '{{expiry_date}}'
consumes:
- type: http
namespace: kyc-platform
baseUri: https://kyc-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.kyc_platform_token
resources:
- name: entities
path: /entities/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-entity
method: GET
- type: http
namespace: sanctions-svc
baseUri: https://sanctions-screening.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.sanctions_svc_token
resources:
- name: screenings
path: /screen
operations:
- name: screen
method: POST
- type: http
namespace: trade-finance-svc
baseUri: https://trade-finance.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.trade_finance_token
resources:
- name: letters-of-credit
path: /lc
operations:
- name: create-lc
method: POST
- type: http
namespace: swift-messaging
baseUri: https://swift-messaging.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.swift_messaging_token
resources:
- name: mt700
path: /messages/mt700
operations:
- name: send-mt700
method: POST
Handles an FX spot trade from pricing through execution: fetches the live spot rate, submits the trade to the FX execution engine, books in the OMS, and confirms to the client via messaging.
naftiko: '0.5'
info:
label: FX Trade Lifecycle Orchestrator
description: 'Handles an FX spot trade from pricing through execution: fetches the live spot rate, submits the trade to the FX execution engine, books in the OMS, and confirms to the client via messaging.'
tags:
- trading
- fx
- oms
- confirmation
capability:
exposes:
- type: mcp
namespace: fx-trade-lifecycle
port: 8080
tools:
- name: execute-fx-trade
description: Price, execute, book, and confirm an FX spot trade.
inputParameters:
- name: currency_pair
in: body
type: string
description: Currency pair (e.g., EURUSD).
- name: side
in: body
type: string
description: BUY or SELL the base currency.
- name: notional
in: body
type: number
description: Notional amount in base currency.
- name: client_id
in: body
type: string
description: Client account identifier.
steps:
- name: get-rate
type: call
call: fx-engine.get-spot
with:
currency_pair: '{{currency_pair}}'
- name: execute-trade
type: call
call: fx-execution.submit
with:
currency_pair: '{{currency_pair}}'
side: '{{side}}'
notional: '{{notional}}'
rate: '{{get-rate.mid}}'
- name: book-trade
type: call
call: oms.book-trade
with:
trade_ref: '{{execute-trade.tradeRef}}'
client_id: '{{client_id}}'
currency_pair: '{{currency_pair}}'
notional: '{{notional}}'
rate: '{{execute-trade.executedRate}}'
- name: confirm-client
type: call
call: messaging.send-confirmation
with:
client_id: '{{client_id}}'
message: 'FX trade confirmed: {{side}} {{notional}} {{currency_pair}} at {{execute-trade.executedRate}}. Trade ref: {{execute-trade.tradeRef}}. Value date: {{execute-trade.valueDate}}.'
consumes:
- type: http
namespace: fx-engine
baseUri: https://fx-pricing.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fx_engine_token
resources:
- name: spot-rates
path: /spot/{{currency_pair}}
inputParameters:
- name: currency_pair
in: path
operations:
- name: get-spot
method: GET
- type: http
namespace: fx-execution
baseUri: https://fx-execution.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fx_execution_token
resources:
- name: trades
path: /trades
operations:
- name: submit
method: POST
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: bookings
path: /bookings
operations:
- name: book-trade
method: POST
- type: http
namespace: messaging
baseUri: https://client-messaging.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.messaging_token
resources:
- name: confirmations
path: /confirmations
operations:
- name: send-confirmation
method: POST
Orchestrates regulatory stress test submission by extracting portfolio data, running stress scenarios in the risk engine, compiling the CCAR/DFAST report, and submitting to the Federal Reserve portal.
naftiko: '0.5'
info:
label: Regulatory Stress Test Submission Pipeline
description: Orchestrates regulatory stress test submission by extracting portfolio data, running stress scenarios in the risk engine, compiling the CCAR/DFAST report, and submitting to the Federal Reserve portal.
tags:
- regulatory
- risk
- stress-testing
- compliance
capability:
exposes:
- type: mcp
namespace: stress-test-submission
port: 8080
tools:
- name: submit-stress-test
description: Execute and submit a regulatory stress test.
inputParameters:
- name: test_cycle
in: body
type: string
description: The stress test cycle (e.g. CCAR-2026).
- name: scenario_set
in: body
type: string
description: The scenario set (baseline, adverse, severely_adverse).
steps:
- name: extract-portfolios
type: call
call: risk-engine.extract-positions
with:
test_cycle: '{{test_cycle}}'
- name: run-scenarios
type: call
call: risk-engine.run-stress-scenarios
with:
test_cycle: '{{test_cycle}}'
scenario_set: '{{scenario_set}}'
portfolio_id: '{{extract-portfolios.portfolio_id}}'
- name: compile-report
type: call
call: reporting-engine.compile-ccar
with:
test_cycle: '{{test_cycle}}'
results_id: '{{run-scenarios.results_id}}'
- name: submit-to-fed
type: call
call: regulatory-gateway.submit
with:
report_id: '{{compile-report.report_id}}'
test_cycle: '{{test_cycle}}'
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: positions
path: /stress-test/extract
operations:
- name: extract-positions
method: POST
- name: scenarios
path: /stress-test/run
operations:
- name: run-stress-scenarios
method: POST
- type: http
namespace: reporting-engine
baseUri: https://regulatory-reporting.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.reporting_token
resources:
- name: ccar
path: /ccar/compile
operations:
- name: compile-ccar
method: POST
- type: http
namespace: regulatory-gateway
baseUri: https://regulatory-gateway.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.regulatory_gateway_token
resources:
- name: submissions
path: /submit
operations:
- name: submit
method: POST
Queries the FIX gateway for the current execution status of an equities order by ClOrdID. Returns fill quantity, average price, and order state. Used by electronic trading desks to check order lifecycle without accessing the OMS directly.
naftiko: '0.5'
info:
label: FIX Order Status Lookup
description: Queries the FIX gateway for the current execution status of an equities order by ClOrdID. Returns fill quantity, average price, and order state. Used by electronic trading desks to check order lifecycle without accessing the OMS directly.
tags:
- trading
- equities
- fix-gateway
capability:
exposes:
- type: mcp
namespace: equities-trading
port: 8080
tools:
- name: get-order-status
description: Look up a FIX equities order by ClOrdID. Returns execution status, filled quantity, average price, and last update timestamp.
inputParameters:
- name: cl_ord_id
in: body
type: string
description: The client order ID assigned at submission.
call: fix-gw.get-order
with:
cl_ord_id: '{{cl_ord_id}}'
outputParameters:
- name: order_status
type: string
mapping: $.ordStatus
- name: filled_qty
type: number
mapping: $.cumQty
- name: avg_price
type: number
mapping: $.avgPx
- name: last_updated
type: string
mapping: $.transactTime
consumes:
- type: http
namespace: fix-gw
baseUri: https://fix-gateway.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.fix_gateway_token
resources:
- name: orders
path: /orders/{{cl_ord_id}}
inputParameters:
- name: cl_ord_id
in: path
operations:
- name: get-order
method: GET
Fetches the latest Value-at-Risk calculation for a trading book from the market risk engine. Returns VaR at 95% and 99% confidence levels, plus stressed VaR. Used by risk managers for daily limit monitoring.
naftiko: '0.5'
info:
label: VaR Calculation Retrieval
description: Fetches the latest Value-at-Risk calculation for a trading book from the market risk engine. Returns VaR at 95% and 99% confidence levels, plus stressed VaR. Used by risk managers for daily limit monitoring.
tags:
- risk
- market-risk
- var
- trading
capability:
exposes:
- type: mcp
namespace: market-risk
port: 8080
tools:
- name: get-var
description: Retrieve the latest VaR for a trading book by book ID. Returns VaR-95, VaR-99, stressed VaR, and calculation date.
inputParameters:
- name: book_id
in: body
type: string
description: The trading book identifier.
call: risk-engine.get-var
with:
book_id: '{{book_id}}'
outputParameters:
- name: var_95
type: number
mapping: $.var.confidence95
- name: var_99
type: number
mapping: $.var.confidence99
- name: stressed_var
type: number
mapping: $.var.stressedVar
- name: calc_date
type: string
mapping: $.var.calculationDate
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: var
path: /books/{{book_id}}/var
inputParameters:
- name: book_id
in: path
operations:
- name: get-var
method: GET
Looks up a legal entity in the enterprise reference data service by LEI or short name. Returns full legal name, domicile, sector classification, and parent hierarchy. Used across the firm for entity resolution.
naftiko: '0.5'
info:
label: Reference Data Entity Lookup
description: Looks up a legal entity in the enterprise reference data service by LEI or short name. Returns full legal name, domicile, sector classification, and parent hierarchy. Used across the firm for entity resolution.
tags:
- reference-data
- entity
- operations
capability:
exposes:
- type: mcp
namespace: ref-data
port: 8080
tools:
- name: get-entity
description: Look up a legal entity by LEI. Returns full legal name, domicile, GICS sector, and parent entity.
inputParameters:
- name: lei
in: body
type: string
description: The 20-character Legal Entity Identifier.
call: ref-data-svc.get-entity
with:
lei: '{{lei}}'
outputParameters:
- name: legal_name
type: string
mapping: $.entity.legalName
- name: domicile
type: string
mapping: $.entity.domicileCountry
- name: gics_sector
type: string
mapping: $.entity.gicsSector
- name: parent_lei
type: string
mapping: $.entity.parentLEI
consumes:
- type: http
namespace: ref-data-svc
baseUri: https://ref-data.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.ref_data_token
resources:
- name: entities
path: /entities/{{lei}}
inputParameters:
- name: lei
in: path
operations:
- name: get-entity
method: GET
Retrieves fund NAV calculation from the custody platform, returning total assets, total liabilities, NAV per share, and shares outstanding for fund administration.
naftiko: '0.5'
info:
label: Custody Fund NAV Calculation
description: Retrieves fund NAV calculation from the custody platform, returning total assets, total liabilities, NAV per share, and shares outstanding for fund administration.
tags:
- custody
- fund-administration
- asset-management
capability:
exposes:
- type: mcp
namespace: fund-nav
port: 8080
tools:
- name: get-nav
description: Retrieve fund NAV calculation.
inputParameters:
- name: fund_id
in: body
type: string
description: The fund ID.
- name: nav_date
in: body
type: string
description: The NAV calculation date.
call: custody.get-nav
with:
fund_id: '{{fund_id}}'
nav_date: '{{nav_date}}'
outputParameters:
- name: total_assets
type: string
mapping: $.nav.totalAssets
- name: total_liabilities
type: string
mapping: $.nav.totalLiabilities
- name: nav_per_share
type: string
mapping: $.nav.navPerShare
- name: shares_outstanding
type: number
mapping: $.nav.sharesOutstanding
consumes:
- type: http
namespace: custody
baseUri: https://custody.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.custody_token
resources:
- name: nav
path: /funds/{{fund_id}}/nav?date={{nav_date}}
inputParameters:
- name: fund_id
in: path
- name: nav_date
in: query
operations:
- name: get-nav
method: GET
Runs a regulatory stress test scenario across portfolios: applies market shocks, recalculates P&L impact, aggregates losses, and stores results in the regulatory reporting platform for CCAR/DFAST submission.
naftiko: '0.5'
info:
label: Stress Test Scenario Execution
description: 'Runs a regulatory stress test scenario across portfolios: applies market shocks, recalculates P&L impact, aggregates losses, and stores results in the regulatory reporting platform for CCAR/DFAST submission.'
tags:
- risk
- stress-testing
- regulatory
- ccar
capability:
exposes:
- type: mcp
namespace: stress-testing
port: 8080
tools:
- name: run-stress-test
description: Apply scenario shocks, calculate portfolio impacts, aggregate results, and store for regulatory filing.
inputParameters:
- name: scenario_id
in: body
type: string
description: The stress test scenario identifier.
- name: reporting_date
in: body
type: string
description: Reporting date in YYYY-MM-DD format.
steps:
- name: get-scenario
type: call
call: stress-engine.get-scenario
with:
scenario_id: '{{scenario_id}}'
- name: apply-shocks
type: call
call: stress-engine.apply-shocks
with:
scenario_id: '{{scenario_id}}'
reporting_date: '{{reporting_date}}'
- name: aggregate-results
type: call
call: stress-engine.aggregate
with:
run_id: '{{apply-shocks.runId}}'
- name: store-results
type: call
call: reg-platform.submit-stress-results
with:
scenario_id: '{{scenario_id}}'
reporting_date: '{{reporting_date}}'
total_loss: '{{aggregate-results.totalLoss}}'
capital_impact: '{{aggregate-results.capitalImpact}}'
run_id: '{{apply-shocks.runId}}'
consumes:
- type: http
namespace: stress-engine
baseUri: https://stress-testing.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.stress_engine_token
resources:
- name: scenarios
path: /scenarios/{{scenario_id}}
inputParameters:
- name: scenario_id
in: path
operations:
- name: get-scenario
method: GET
- name: shocks
path: /execute
operations:
- name: apply-shocks
method: POST
- name: aggregation
path: /runs/{{run_id}}/aggregate
inputParameters:
- name: run_id
in: path
operations:
- name: aggregate
method: POST
- type: http
namespace: reg-platform
baseUri: https://reg-reporting.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.reg_platform_token
resources:
- name: stress-results
path: /stress-results
operations:
- name: submit-stress-results
method: POST
Checks securities lending availability for a given ISIN, sources a locate from the inventory pool, books the borrow in the lending system, and confirms to the requesting trader via messaging.
naftiko: '0.5'
info:
label: Securities Lending Availability and Locate
description: Checks securities lending availability for a given ISIN, sources a locate from the inventory pool, books the borrow in the lending system, and confirms to the requesting trader via messaging.
tags:
- trading
- securities-lending
- prime-brokerage
capability:
exposes:
- type: mcp
namespace: sec-lending
port: 8080
tools:
- name: locate-and-borrow
description: Check availability, source a locate, book the borrow, and confirm to the trader.
inputParameters:
- name: isin
in: body
type: string
description: The ISIN of the security to borrow.
- name: quantity
in: body
type: number
description: Number of shares to borrow.
- name: trader_email
in: body
type: string
description: Email of the requesting trader.
steps:
- name: check-availability
type: call
call: lending-platform.check-availability
with:
isin: '{{isin}}'
quantity: '{{quantity}}'
- name: book-borrow
type: call
call: lending-platform.book-borrow
with:
isin: '{{isin}}'
quantity: '{{quantity}}'
rate: '{{check-availability.indicativeRate}}'
lender_pool: '{{check-availability.lenderPool}}'
- name: confirm-trader
type: call
call: msteams.send-message
with:
recipient_upn: '{{trader_email}}'
text: 'Locate confirmed: {{quantity}} shares of {{isin}} at {{check-availability.indicativeRate}} bps. Borrow ref: {{book-borrow.borrowRef}}. Available pool: {{check-availability.availableQty}}.'
consumes:
- type: http
namespace: lending-platform
baseUri: https://sec-lending.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.sec_lending_token
resources:
- name: availability
path: /availability
operations:
- name: check-availability
method: POST
- name: borrows
path: /borrows
operations:
- name: book-borrow
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 credit exposure data for a counterparty, returning current exposure, potential future exposure, credit limit, and utilization percentage.
naftiko: '0.5'
info:
label: Credit Exposure Counterparty Lookup
description: Retrieves credit exposure data for a counterparty, returning current exposure, potential future exposure, credit limit, and utilization percentage.
tags:
- risk
- credit
- counterparty
capability:
exposes:
- type: mcp
namespace: credit-exposure
port: 8080
tools:
- name: get-exposure
description: Look up credit exposure for a counterparty.
inputParameters:
- name: counterparty_id
in: body
type: string
description: The counterparty ID.
call: risk-engine.get-exposure
with:
counterparty_id: '{{counterparty_id}}'
outputParameters:
- name: current_exposure
type: string
mapping: $.exposure.currentExposure
- name: pfe
type: string
mapping: $.exposure.potentialFutureExposure
- name: credit_limit
type: string
mapping: $.exposure.creditLimit
- name: utilization_pct
type: string
mapping: $.exposure.utilizationPercentage
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: exposure
path: /credit/counterparty/{{counterparty_id}}
inputParameters:
- name: counterparty_id
in: path
operations:
- name: get-exposure
method: GET
Prepares a quarterly client review for private banking: pulls portfolio performance, retrieves recent transactions, fetches CRM activity notes from Salesforce, and generates a briefing document in SharePoint.
naftiko: '0.5'
info:
label: Private Banking Client Review Preparation
description: 'Prepares a quarterly client review for private banking: pulls portfolio performance, retrieves recent transactions, fetches CRM activity notes from Salesforce, and generates a briefing document in SharePoint.'
tags:
- wealth-management
- private-banking
- portfolio
- salesforce
- sharepoint
capability:
exposes:
- type: mcp
namespace: client-review-prep
port: 8080
tools:
- name: prepare-review
description: Assemble portfolio performance, transactions, CRM notes, and generate a briefing document.
inputParameters:
- name: client_id
in: body
type: string
description: The private banking client identifier.
- name: portfolio_id
in: body
type: string
description: The client portfolio identifier.
- name: review_period
in: body
type: string
description: Review period (e.g., Q1-2026).
steps:
- name: get-performance
type: call
call: portfolio-svc.get-performance
with:
portfolio_id: '{{portfolio_id}}'
period: '{{review_period}}'
- name: get-transactions
type: call
call: portfolio-svc.get-transactions
with:
portfolio_id: '{{portfolio_id}}'
period: '{{review_period}}'
- name: get-crm-notes
type: call
call: salesforce.get-activity
with:
client_id: '{{client_id}}'
period: '{{review_period}}'
- name: generate-briefing
type: call
call: sharepoint.create-document
with:
site_id: private_banking_site
folder_path: ClientReviews/{{client_id}}/{{review_period}}
document_name: Quarterly_Review_{{review_period}}.docx
performance_data: '{{get-performance.summary}}'
transactions_data: '{{get-transactions.summary}}'
crm_notes: '{{get-crm-notes.notes}}'
consumes:
- type: http
namespace: portfolio-svc
baseUri: https://portfolio-api.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.portfolio_api_token
resources:
- name: performance
path: /portfolios/{{portfolio_id}}/performance
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-performance
method: GET
- name: transactions
path: /portfolios/{{portfolio_id}}/transactions
inputParameters:
- name: portfolio_id
in: path
operations:
- name: get-transactions
method: GET
- type: http
namespace: salesforce
baseUri: https://jpmorgan.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activity
path: /query
operations:
- name: get-activity
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:/{{folder_path}}/{{document_name}}:/content
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: document_name
in: path
operations:
- name: create-document
method: PUT
Retrieves financial plan details for a JP Morgan private banking client, returning retirement readiness score, asset allocation, and projected wealth trajectory.
naftiko: '0.5'
info:
label: Wealth Client Financial Plan Lookup
description: Retrieves financial plan details for a JP Morgan private banking client, returning retirement readiness score, asset allocation, and projected wealth trajectory.
tags:
- wealth-management
- financial-planning
capability:
exposes:
- type: mcp
namespace: financial-planning
port: 8080
tools:
- name: get-financial-plan
description: Retrieve a wealth client financial plan.
inputParameters:
- name: client_id
in: body
type: string
description: The client ID.
call: wealth-platform.get-plan
with:
client_id: '{{client_id}}'
outputParameters:
- name: retirement_score
type: number
mapping: $.plan.retirementReadinessScore
- name: asset_allocation
type: string
mapping: $.plan.currentAllocation
- name: projected_wealth
type: string
mapping: $.plan.projectedWealth
consumes:
- type: http
namespace: wealth-platform
baseUri: https://wealth.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.wealth_token
resources:
- name: plans
path: /clients/{{client_id}}/financial-plan
inputParameters:
- name: client_id
in: path
operations:
- name: get-plan
method: GET
Retrieves global payment routing status from the payment hub, returning selected route, estimated arrival time, correspondent bank chain, and total fees.
naftiko: '0.5'
info:
label: Global Payments Routing Status
description: Retrieves global payment routing status from the payment hub, returning selected route, estimated arrival time, correspondent bank chain, and total fees.
tags:
- payments
- global
capability:
exposes:
- type: mcp
namespace: payment-routing
port: 8080
tools:
- name: get-routing-status
description: Retrieve payment routing status.
inputParameters:
- name: payment_id
in: body
type: string
description: The payment ID.
call: payment-hub.get-route
with:
payment_id: '{{payment_id}}'
outputParameters:
- name: route
type: string
mapping: $.routing.selectedRoute
- name: eta
type: string
mapping: $.routing.estimatedArrival
- name: correspondent_chain
type: string
mapping: $.routing.correspondentBanks
- name: total_fees
type: string
mapping: $.routing.totalFees
consumes:
- type: http
namespace: payment-hub
baseUri: https://payment-hub.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.payment_hub_token
resources:
- name: routing
path: /payments/{{payment_id}}/routing
inputParameters:
- name: payment_id
in: path
operations:
- name: get-route
method: GET
Retrieves mutual fund order details from the fund platform, returning order type, amount, NAV applied, and settlement status for asset management operations.
naftiko: '0.5'
info:
label: Mutual Fund Order Lookup
description: Retrieves mutual fund order details from the fund platform, returning order type, amount, NAV applied, and settlement status for asset management operations.
tags:
- asset-management
- mutual-funds
capability:
exposes:
- type: mcp
namespace: fund-orders
port: 8080
tools:
- name: get-fund-order
description: Look up a mutual fund order.
inputParameters:
- name: order_id
in: body
type: string
description: The fund order ID.
call: fund-platform.get-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: order_type
type: string
mapping: $.order.type
- name: amount
type: string
mapping: $.order.amount
- name: nav_applied
type: string
mapping: $.order.navApplied
- name: settlement_status
type: string
mapping: $.order.settlementStatus
consumes:
- type: http
namespace: fund-platform
baseUri: https://fund-services.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.fund_platform_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Retrieves current exposure for a counterparty, checks against approved credit limits, and if utilization exceeds threshold, creates a limit breach event and notifies the credit officer via ServiceNow and Teams.
naftiko: '0.5'
info:
label: Counterparty Credit Limit Monitoring
description: Retrieves current exposure for a counterparty, checks against approved credit limits, and if utilization exceeds threshold, creates a limit breach event and notifies the credit officer via ServiceNow and Teams.
tags:
- risk
- credit
- counterparty
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: credit-limit-monitoring
port: 8080
tools:
- name: check-credit-limit
description: Retrieve counterparty exposure, compare to limits, and escalate breaches.
inputParameters:
- name: counterparty_lei
in: body
type: string
description: LEI of the counterparty.
- name: credit_officer_email
in: body
type: string
description: Email of the responsible credit officer.
steps:
- name: get-exposure
type: call
call: risk-engine.get-exposure
with:
lei: '{{counterparty_lei}}'
- name: get-limits
type: call
call: risk-engine.get-credit-limits
with:
lei: '{{counterparty_lei}}'
- name: create-breach-event
type: call
call: servicenow.create-incident
with:
short_description: 'Credit limit breach: {{get-exposure.counterpartyName}} utilization {{get-exposure.utilizationPct}}%'
category: credit_risk
assigned_group: Credit_Risk
description: 'Current exposure: {{get-exposure.totalExposure}}. Approved limit: {{get-limits.approvedLimit}}. Utilization: {{get-exposure.utilizationPct}}%.'
- name: notify-credit-officer
type: call
call: msteams.send-message
with:
recipient_upn: '{{credit_officer_email}}'
text: 'CREDIT LIMIT ALERT: {{get-exposure.counterpartyName}} at {{get-exposure.utilizationPct}}% utilization. Exposure: {{get-exposure.totalExposure}}. Limit: {{get-limits.approvedLimit}}. Incident: {{create-breach-event.number}}.'
consumes:
- type: http
namespace: risk-engine
baseUri: https://risk-engine.jpmorgan.com/api/v3
authentication:
type: bearer
token: $secrets.risk_engine_token
resources:
- name: exposure
path: /counterparties/{{lei}}/exposure
inputParameters:
- name: lei
in: path
operations:
- name: get-exposure
method: GET
- name: credit-limits
path: /counterparties/{{lei}}/limits
inputParameters:
- name: lei
in: path
operations:
- name: get-credit-limits
method: GET
- type: http
namespace: servicenow
baseUri: https://jpmorgan.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves commodity futures position data from the OMS, returning contract details, quantity, average price, and unrealized P&L.
naftiko: '0.5'
info:
label: Commodity Futures Position Lookup
description: Retrieves commodity futures position data from the OMS, returning contract details, quantity, average price, and unrealized P&L.
tags:
- trading
- commodities
capability:
exposes:
- type: mcp
namespace: commodity-positions
port: 8080
tools:
- name: get-futures-position
description: Look up a commodity futures position.
inputParameters:
- name: contract_id
in: body
type: string
description: The futures contract ID.
call: oms.get-position
with:
contract_id: '{{contract_id}}'
outputParameters:
- name: contract
type: string
mapping: $.position.contractName
- name: quantity
type: number
mapping: $.position.quantity
- name: avg_price
type: string
mapping: $.position.averagePrice
- name: unrealized_pnl
type: string
mapping: $.position.unrealizedPnL
consumes:
- type: http
namespace: oms
baseUri: https://oms.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.oms_token
resources:
- name: positions
path: /positions/futures/{{contract_id}}
inputParameters:
- name: contract_id
in: path
operations:
- name: get-position
method: GET
Retrieves syndicated loan facility details, returning facility amount, drawn amount, participant banks, and agent bank for leveraged lending.
naftiko: '0.5'
info:
label: Syndicated Loan Facility Lookup
description: Retrieves syndicated loan facility details, returning facility amount, drawn amount, participant banks, and agent bank for leveraged lending.
tags:
- lending
- syndicated-loans
- investment-banking
capability:
exposes:
- type: mcp
namespace: syndicated-loans
port: 8080
tools:
- name: get-facility
description: Look up a syndicated loan facility.
inputParameters:
- name: facility_id
in: body
type: string
description: The facility ID.
call: lending.get-syndicated-facility
with:
facility_id: '{{facility_id}}'
outputParameters:
- name: facility_amount
type: string
mapping: $.facility.totalAmount
- name: drawn_amount
type: string
mapping: $.facility.drawnAmount
- name: participant_count
type: number
mapping: $.facility.participantCount
- name: agent_bank
type: string
mapping: $.facility.agentBank
consumes:
- type: http
namespace: lending
baseUri: https://lending-platform.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.lending_token
resources:
- name: syndicated
path: /syndicated/facilities/{{facility_id}}
inputParameters:
- name: facility_id
in: path
operations:
- name: get-syndicated-facility
method: GET
Fetches the current Know Your Customer record for a client entity from the KYC platform. Returns verification status, risk tier, and document expiry. Used by compliance analysts during periodic reviews.
naftiko: '0.5'
info:
label: KYC Document Retrieval
description: Fetches the current Know Your Customer record for a client entity from the KYC platform. Returns verification status, risk tier, and document expiry. Used by compliance analysts during periodic reviews.
tags:
- compliance
- kyc
- onboarding
capability:
exposes:
- type: mcp
namespace: compliance-kyc
port: 8080
tools:
- name: get-kyc-record
description: Retrieve a KYC record for a client entity by entity ID. Returns verification status, risk tier, and document expiry date.
inputParameters:
- name: entity_id
in: body
type: string
description: The internal entity identifier for the client.
call: kyc-platform.get-entity
with:
entity_id: '{{entity_id}}'
outputParameters:
- name: verification_status
type: string
mapping: $.entity.verificationStatus
- name: risk_tier
type: string
mapping: $.entity.riskTier
- name: document_expiry
type: string
mapping: $.entity.documentExpiryDate
consumes:
- type: http
namespace: kyc-platform
baseUri: https://kyc-platform.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.kyc_platform_token
resources:
- name: entities
path: /entities/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-entity
method: GET
Retrieves equity option pricing from the Athena pricing engine, returning theoretical price, delta, gamma, vega, and implied volatility.
naftiko: '0.5'
info:
label: Equity Option Pricing Lookup
description: Retrieves equity option pricing from the Athena pricing engine, returning theoretical price, delta, gamma, vega, and implied volatility.
tags:
- trading
- derivatives
- equities
capability:
exposes:
- type: mcp
namespace: option-pricing
port: 8080
tools:
- name: price-option
description: Price an equity option via Athena.
inputParameters:
- name: underlying
in: body
type: string
description: The underlying ticker.
- name: strike
in: body
type: string
description: The strike price.
- name: expiry
in: body
type: string
description: The expiry date.
- name: option_type
in: body
type: string
description: CALL or PUT.
call: athena.price-option
with:
underlying: '{{underlying}}'
strike: '{{strike}}'
expiry: '{{expiry}}'
option_type: '{{option_type}}'
outputParameters:
- name: theo_price
type: string
mapping: $.pricing.theoreticalPrice
- name: delta
type: string
mapping: $.pricing.delta
- name: gamma
type: string
mapping: $.pricing.gamma
- name: implied_vol
type: string
mapping: $.pricing.impliedVol
consumes:
- type: http
namespace: athena
baseUri: https://athena.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.athena_token
resources:
- name: options
path: /pricing/equity-options
operations:
- name: price-option
method: POST
Retrieves prime brokerage client portfolio data, returning NAV, gross exposure, net exposure, and margin utilization for hedge fund clients.
naftiko: '0.5'
info:
label: Prime Brokerage Portfolio Lookup
description: Retrieves prime brokerage client portfolio data, returning NAV, gross exposure, net exposure, and margin utilization for hedge fund clients.
tags:
- prime-brokerage
- portfolio
capability:
exposes:
- type: mcp
namespace: prime-brokerage
port: 8080
tools:
- name: get-pb-portfolio
description: Look up a prime brokerage client portfolio.
inputParameters:
- name: fund_id
in: body
type: string
description: The fund account ID.
call: pb-platform.get-portfolio
with:
fund_id: '{{fund_id}}'
outputParameters:
- name: nav
type: string
mapping: $.portfolio.nav
- name: gross_exposure
type: string
mapping: $.portfolio.grossExposure
- name: net_exposure
type: string
mapping: $.portfolio.netExposure
- name: margin_utilization
type: string
mapping: $.portfolio.marginUtilization
consumes:
- type: http
namespace: pb-platform
baseUri: https://prime-brokerage.jpmorgan.com/api/v1
authentication:
type: bearer
token: $secrets.pb_token
resources:
- name: portfolios
path: /funds/{{fund_id}}/portfolio
inputParameters:
- name: fund_id
in: path
operations:
- name: get-portfolio
method: GET
Retrieves instrument reference data from the golden source, returning ISIN, ticker, instrument type, currency, and exchange for trade booking.
naftiko: '0.5'
info:
label: Reference Data Instrument Lookup
description: Retrieves instrument reference data from the golden source, returning ISIN, ticker, instrument type, currency, and exchange for trade booking.
tags:
- reference-data
- trading
capability:
exposes:
- type: mcp
namespace: instrument-reference
port: 8080
tools:
- name: get-instrument
description: Look up instrument reference data.
inputParameters:
- name: identifier
in: body
type: string
description: The instrument identifier (ISIN, ticker, CUSIP).
call: ref-data.get-instrument
with:
identifier: '{{identifier}}'
outputParameters:
- name: isin
type: string
mapping: $.instrument.isin
- name: ticker
type: string
mapping: $.instrument.ticker
- name: instrument_type
type: string
mapping: $.instrument.type
- name: currency
type: string
mapping: $.instrument.currency
consumes:
- type: http
namespace: ref-data
baseUri: https://reference-data.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.ref_data_token
resources:
- name: instruments
path: /instruments/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-instrument
method: GET
Retrieves CDS pricing data from the pricing engine, returning spread, upfront fee, recovery rate, and implied probability of default for credit trading.
naftiko: '0.5'
info:
label: Credit Default Swap Pricing Lookup
description: Retrieves CDS pricing data from the pricing engine, returning spread, upfront fee, recovery rate, and implied probability of default for credit trading.
tags:
- trading
- credit
- derivatives
capability:
exposes:
- type: mcp
namespace: cds-pricing
port: 8080
tools:
- name: get-cds-price
description: Look up CDS pricing for a reference entity.
inputParameters:
- name: reference_entity
in: body
type: string
description: The reference entity name or ticker.
- name: tenor
in: body
type: string
description: The CDS tenor (e.g. 5Y).
call: athena.price-cds
with:
reference_entity: '{{reference_entity}}'
tenor: '{{tenor}}'
outputParameters:
- name: spread_bps
type: number
mapping: $.pricing.spread
- name: upfront_pct
type: string
mapping: $.pricing.upfront
- name: recovery_rate
type: string
mapping: $.pricing.recoveryRate
- name: implied_pd
type: string
mapping: $.pricing.impliedPD
consumes:
- type: http
namespace: athena
baseUri: https://athena.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.athena_token
resources:
- name: cds
path: /pricing/cds
operations:
- name: price-cds
method: POST
Retrieves details of a commercial lending facility by facility ID from the loan origination system. Returns commitment amount, drawn balance, maturity date, and pricing. Used by commercial bankers and credit officers.
naftiko: '0.5'
info:
label: Loan Facility Lookup
description: Retrieves details of a commercial lending facility by facility ID from the loan origination system. Returns commitment amount, drawn balance, maturity date, and pricing. Used by commercial bankers and credit officers.
tags:
- commercial-banking
- lending
- loans
capability:
exposes:
- type: mcp
namespace: commercial-lending
port: 8080
tools:
- name: get-loan-facility
description: Look up a commercial loan facility by facility ID. Returns commitment amount, drawn balance, maturity date, and current rate.
inputParameters:
- name: facility_id
in: body
type: string
description: The loan facility identifier.
call: loan-system.get-facility
with:
facility_id: '{{facility_id}}'
outputParameters:
- name: commitment_amount
type: number
mapping: $.facility.commitmentAmount
- name: drawn_balance
type: number
mapping: $.facility.drawnBalance
- name: maturity_date
type: string
mapping: $.facility.maturityDate
- name: current_rate
type: number
mapping: $.facility.currentRate
consumes:
- type: http
namespace: loan-system
baseUri: https://loan-origination.jpmorgan.com/api/v2
authentication:
type: bearer
token: $secrets.loan_system_token
resources:
- name: facilities
path: /facilities/{{facility_id}}
inputParameters:
- name: facility_id
in: path
operations:
- name: get-facility
method: GET
Monitors AKS pod metrics in Datadog, scales deployments, and notifies the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: AKS Pod Scaling and Notification Pipeline
description: Monitors AKS pod metrics in Datadog, scales deployments, and notifies the platform team via Microsoft Teams.
tags:
- infrastructure
- azure-kubernetes-service
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aks-scaling
port: 8080
tools:
- name: scale-aks-pods
description: Scale AKS pods based on metrics and notify the team.
inputParameters:
- name: namespace
in: body
type: string
description: Kubernetes namespace.
- name: deployment
in: body
type: string
description: Deployment name.
steps:
- name: check-metrics
type: call
call: datadog-api.query-metrics
with:
query: kubernetes.cpu.usage{kube_namespace:{{namespace}},kube_deployment:{{deployment}}}
- name: scale-deployment
type: call
call: aks-api.scale-deployment
with:
namespace: '{{namespace}}'
deployment: '{{deployment}}'
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: platform-engineering
channel_id: scaling
message: 'AKS scaling: {{deployment}} in {{namespace}}. CPU: {{check-metrics.value}}%.'
consumes:
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: aks-api
baseUri: https://management.azure.com/subscriptions
authentication:
type: bearer
token: $secrets.azure_management_token
resources:
- name: deployments
path: /resourceGroups/mc-prod/providers/Microsoft.ContainerService/managedClusters/mc-prod-aks
operations:
- name: scale-deployment
method: PATCH
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Creates a new vendor record in SAP Ariba, assigns the appropriate spend categories, and notifies the procurement team via Teams.
naftiko: '0.5'
info:
label: SAP Ariba Vendor Onboarding
description: Creates a new vendor record in SAP Ariba, assigns the appropriate spend categories, and notifies the procurement team via Teams.
tags:
- procurement
- sap-ariba
- vendor-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vendor-onboarding
port: 8080
tools:
- name: onboard-vendor
description: Given a vendor company name, tax ID, and spend category, create the vendor record in SAP Ariba and notify the procurement lead via Teams. Use when a new supplier is approved for Mastercard procurement.
inputParameters:
- name: vendor_name
in: body
type: string
description: Legal company name of the vendor to onboard.
- name: tax_id
in: body
type: string
description: Vendor tax identification number (EIN/TIN).
- name: spend_category
in: body
type: string
description: Primary SAP Ariba spend category for this vendor.
- name: procurement_lead_upn
in: body
type: string
description: UPN of the procurement lead to notify upon completion.
steps:
- name: create-vendor
type: call
call: ariba.create-vendor
with:
name: '{{vendor_name}}'
tax_id: '{{tax_id}}'
category: '{{spend_category}}'
- name: notify-procurement
type: call
call: msteams-vendors.send-message
with:
recipient_upn: '{{procurement_lead_upn}}'
text: 'New vendor onboarded in SAP Ariba: {{vendor_name}} ({{spend_category}}). Vendor ID: {{create-vendor.vendor_id}}. Ready for procurement use.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: vendors
path: /suppliers
operations:
- name: create-vendor
method: POST
- type: http
namespace: msteams-vendors
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
Scans infrastructure with Checkmarx, validates compliance posture in Snowflake, and generates audit reports in Confluence.
naftiko: '0.5'
info:
label: PCI Compliance Audit Pipeline
description: Scans infrastructure with Checkmarx, validates compliance posture in Snowflake, and generates audit reports in Confluence.
tags:
- compliance
- checkmarx
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: pci-audit
port: 8080
tools:
- name: run-pci-audit
description: Execute a PCI compliance audit across infrastructure and applications.
inputParameters:
- name: scope
in: body
type: string
description: Audit scope (e.g. cardholder-data-environment).
steps:
- name: run-scan
type: call
call: checkmarx-api.create-scan
with:
project: '{{scope}}'
- name: check-posture
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM compliance.pci_controls WHERE scope = '{{scope}}' AND status != 'compliant'
- name: generate-report
type: call
call: confluence-api.create-page
with:
space: COMPLIANCE
title: 'PCI Audit: {{scope}}'
body: 'Scan findings: {{run-scan.vulnerability_count}}. Non-compliant controls: {{check-posture.count}}.'
consumes:
- type: http
namespace: checkmarx-api
baseUri: https://checkmarx.mastercard.com/cxrestapi
authentication:
type: bearer
token: $secrets.checkmarx_token
resources:
- name: scans
path: /sast/scans
operations:
- name: create-scan
method: POST
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: confluence-api
baseUri: https://mastercard.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Retrieves the list of applications assigned to a user in Okta for access management auditing.
naftiko: '0.5'
info:
label: Okta User Application Assignments Lookup
description: Retrieves the list of applications assigned to a user in Okta for access management auditing.
tags:
- identity
- okta
capability:
exposes:
- type: mcp
namespace: okta
port: 8080
tools:
- name: get-user-apps
description: List applications assigned to an Okta user.
inputParameters:
- name: user_login
in: body
type: string
description: Okta user login (email).
call: okta-api.list-user-apps
with:
user_login: '{{user_login}}'
consumes:
- type: http
namespace: okta-api
baseUri: https://mastercard.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{user_login}}/appLinks
inputParameters:
- name: user_login
in: path
operations:
- name: list-user-apps
method: GET
Provisions application access in Okta for a new or transferring employee based on their job role, then confirms via Teams.
naftiko: '0.5'
info:
label: Okta Application Access Provisioning
description: Provisions application access in Okta for a new or transferring employee based on their job role, then confirms via Teams.
tags:
- identity
- security
- okta
- access-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: access-provisioning
port: 8080
tools:
- name: provision-application-access
description: Given an employee email and job role code, assign the appropriate Okta application groups for their role and send an access confirmation to their Teams account. Use during onboarding or role changes requiring updated application access across payment and analytics platforms.
inputParameters:
- name: user_email
in: body
type: string
description: Work email of the employee requiring access provisioning.
- name: job_role
in: body
type: string
description: Job role code determining which Okta groups to assign (e.g., PAYMENTS_ANALYST, DATA_ENGINEER, PRODUCT_MANAGER).
- name: teams_upn
in: body
type: string
description: UPN of the employee's Teams account for confirmation.
steps:
- name: get-user
type: call
call: okta-prov.get-user-by-email
with:
email: '{{user_email}}'
- name: assign-role-groups
type: call
call: okta-prov.assign-group
with:
user_id: '{{get-user.user_id}}'
group_name: '{{job_role}}'
- name: confirm-access
type: call
call: msteams-access.send-message
with:
recipient_upn: '{{teams_upn}}'
text: Your application access has been provisioned for role {{job_role}}. You can access your applications at mastercard.okta.com.
consumes:
- type: http
namespace: okta-prov
baseUri: https://mastercard.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users
operations:
- name: get-user-by-email
method: GET
- name: group-members
path: /groups/{group_id}/users/{user_id}
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: assign-group
method: PUT
- type: http
namespace: msteams-access
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
Validates release gates in Azure DevOps, checks quality metrics in Datadog, and creates change records in ServiceNow.
naftiko: '0.5'
info:
label: Azure DevOps Release Gate Pipeline
description: Validates release gates in Azure DevOps, checks quality metrics in Datadog, and creates change records in ServiceNow.
tags:
- cicd
- azure-devops
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: release-gate
port: 8080
tools:
- name: validate-release-gate
description: Validate release quality gates before deployment.
inputParameters:
- name: release_id
in: body
type: string
description: Azure DevOps release ID.
steps:
- name: get-release
type: call
call: azdo-api.get-release
with:
release_id: '{{release_id}}'
- name: check-quality
type: call
call: datadog-api.query-metrics
with:
query: ci.test.pass_rate{release:{{release_id}}}
- name: create-change
type: call
call: servicenow-api.create-change
with:
short_description: 'Release: {{get-release.name}} v{{get-release.version}}'
description: 'Test pass rate: {{check-quality.value}}%. Artifacts: {{get-release.artifacts_count}}.'
consumes:
- type: http
namespace: azdo-api
baseUri: https://vsrm.dev.azure.com/mastercard
authentication:
type: basic
username: ''
password: $secrets.azdo_pat
resources:
- name: releases
path: /_apis/release/releases/{{release_id}}
inputParameters:
- name: release_id
in: path
operations:
- name: get-release
method: GET
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: servicenow-api
baseUri: https://mastercard.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
Reviews expense reports from SAP Concur, validates against policies in Snowflake, and flags violations in Jira.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Compliance Check
description: Reviews expense reports from SAP Concur, validates against policies in Snowflake, and flags violations in Jira.
tags:
- finance
- sap-concur
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: expense-compliance
port: 8080
tools:
- name: check-expense-compliance
description: Audit travel expenses against corporate policies.
inputParameters:
- name: report_id
in: body
type: string
description: SAP Concur expense report ID.
steps:
- name: get-report
type: call
call: concur-api.get-report
with:
report_id: '{{report_id}}'
- name: check-policy
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM finance.expense_policy_violations WHERE report_id = '{{report_id}}'
- name: flag-violations
type: call
call: jira-api.create-issue
with:
project: FINANCE
summary: 'Expense policy violation: {{report_id}}'
description: 'Total: {{get-report.total}}. Violations: {{check-policy.count}}.'
consumes:
- type: http
namespace: concur-api
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-report
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Monitors Lambda function concurrency, adjusts reserved capacity, and notifies the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Lambda Payment Processor Scaling Pipeline
description: Monitors Lambda function concurrency, adjusts reserved capacity, and notifies the platform team via Microsoft Teams.
tags:
- serverless
- aws-lambda
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lambda-scaling
port: 8080
tools:
- name: scale-lambda-processor
description: Monitor and scale Lambda payment processor concurrency.
inputParameters:
- name: function_name
in: body
type: string
description: Lambda function name.
- name: target_concurrency
in: body
type: string
description: Target reserved concurrency.
steps:
- name: check-metrics
type: call
call: datadog-api.query-metrics
with:
query: aws.lambda.concurrent_executions{function:{{function_name}}}
- name: update-config
type: call
call: lambda-api.update-concurrency
with:
function_name: '{{function_name}}'
concurrency: '{{target_concurrency}}'
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: platform-team
channel_id: scaling
message: 'Lambda scaling: {{function_name}} to {{target_concurrency}}. Current: {{check-metrics.value}}.'
consumes:
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: lambda-api
baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: concurrency
path: /functions/{{function_name}}/concurrency
inputParameters:
- name: function_name
in: path
operations:
- name: update-concurrency
method: PUT
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Aggregates merchant performance data from Snowflake, calculates health scores, and updates Salesforce account records.
naftiko: '0.5'
info:
label: Salesforce Merchant Health Score Updater
description: Aggregates merchant performance data from Snowflake, calculates health scores, and updates Salesforce account records.
tags:
- merchant-management
- snowflake
- salesforce
- power-bi
capability:
exposes:
- type: mcp
namespace: merchant-health
port: 8080
tools:
- name: update-merchant-health
description: Calculate and update merchant health scores across platforms.
inputParameters:
- name: region
in: body
type: string
description: Geographic region.
steps:
- name: aggregate-data
type: call
call: snowflake-api.run-query
with:
query: CALL merchants.calculate_health_scores('{{region}}')
- name: update-salesforce
type: call
call: salesforce-api.composite-update
with:
object: Account
region: '{{region}}'
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: merchant-health-{{region}}
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce-api
baseUri: https://mastercard.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: composite
path: /composite/sobjects
operations:
- name: composite-update
method: PATCH
- type: http
namespace: powerbi-api
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
Detects malicious endpoints via CrowdStrike, quarantines the device, revokes Okta access, and logs the incident in ServiceNow.
naftiko: '0.5'
info:
label: CrowdStrike Endpoint Quarantine Workflow
description: Detects malicious endpoints via CrowdStrike, quarantines the device, revokes Okta access, and logs the incident in ServiceNow.
tags:
- security
- crowdstrike
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: endpoint-quarantine
port: 8080
tools:
- name: quarantine-endpoint
description: Quarantine a compromised endpoint and revoke user access.
inputParameters:
- name: device_id
in: body
type: string
description: CrowdStrike device identifier.
steps:
- name: get-detection
type: call
call: crowdstrike-api.get-detection
with:
device_id: '{{device_id}}'
- name: revoke-access
type: call
call: okta-api.suspend-user
with:
login: '{{get-detection.user_email}}'
- name: log-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'Endpoint quarantine: {{device_id}}'
description: 'Threat: {{get-detection.threat_name}}. User: {{get-detection.user_email}}. Okta suspended.'
priority: '1'
consumes:
- type: http
namespace: crowdstrike-api
baseUri: https://api.crowdstrike.com
authentication:
type: bearer
token: $secrets.crowdstrike_token
resources:
- name: detections
path: /detects/entities/summaries/GET/v1
operations:
- name: get-detection
method: POST
- type: http
namespace: okta-api
baseUri: https://mastercard.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{login}}/lifecycle/suspend
inputParameters:
- name: login
in: path
operations:
- name: suspend-user
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Extracts business unit cost center data from SAP S/4HANA and refreshes the consolidated forecast Power BI dataset for CFO and finance leadership review.
naftiko: '0.5'
info:
label: Quarterly Finance Forecast Consolidation
description: Extracts business unit cost center data from SAP S/4HANA and refreshes the consolidated forecast Power BI dataset for CFO and finance leadership review.
tags:
- finance
- forecasting
- sap
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: finance-planning
port: 8080
tools:
- name: consolidate-quarterly-forecast
description: Given a fiscal quarter identifier, SAP cost center hierarchy, and Power BI dataset ID, extract actuals and forecast data from SAP S/4HANA and trigger a Power BI refresh. Use during quarterly planning cycles, budget reviews, and CFO reporting preparation.
inputParameters:
- name: fiscal_quarter
in: body
type: string
description: Fiscal quarter to consolidate (e.g., Q2-2026).
- name: powerbi_dataset_id
in: body
type: string
description: Power BI dataset ID for the consolidated finance forecast.
- name: powerbi_workspace_id
in: body
type: string
description: Power BI workspace ID containing the forecast dataset.
steps:
- name: get-sap-actuals
type: call
call: sap-finance.get-cost-center-data
with:
fiscal_period: '{{fiscal_quarter}}'
- name: refresh-powerbi
type: call
call: powerbi-finance.trigger-refresh
with:
workspace_id: '{{powerbi_workspace_id}}'
dataset_id: '{{powerbi_dataset_id}}'
consumes:
- type: http
namespace: sap-finance
baseUri: https://mastercard-s4.sap.com/sap/opu/odata/sap/FAR_ACDOCA_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-center-data
path: /AcdocaItems
operations:
- name: get-cost-center-data
method: GET
- type: http
namespace: powerbi-finance
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refreshes
path: /groups/{workspace_id}/datasets/{dataset_id}/refreshes
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Identifies target merchants in Salesforce, distributes NPS surveys via HubSpot, and aggregates results in Snowflake.
naftiko: '0.5'
info:
label: Salesforce NPS Survey Distribution Pipeline
description: Identifies target merchants in Salesforce, distributes NPS surveys via HubSpot, and aggregates results in Snowflake.
tags:
- merchant-management
- salesforce
- hubspot
- snowflake
capability:
exposes:
- type: mcp
namespace: nps-survey
port: 8080
tools:
- name: distribute-nps-survey
description: Distribute NPS surveys to merchants and track responses.
inputParameters:
- name: segment
in: body
type: string
description: Merchant segment to survey.
steps:
- name: get-merchants
type: call
call: salesforce-api.get-accounts
with:
segment: '{{segment}}'
- name: send-surveys
type: call
call: hubspot-api.create-campaign
with:
name: 'NPS Survey: {{segment}}'
contacts: '{{get-merchants.email_list}}'
- name: setup-tracking
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO surveys.nps_campaigns (segment, merchant_count, campaign_id) VALUES ('{{segment}}', {{get-merchants.count}}, '{{send-surveys.id}}')
consumes:
- type: http
namespace: salesforce-api
baseUri: https://mastercard.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: get-accounts
method: GET
- type: http
namespace: hubspot-api
baseUri: https://api.hubapi.com/marketing/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
Checks the health and deployment status of APIs managed through MuleSoft Anypoint Platform.
naftiko: '0.5'
info:
label: MuleSoft API Health Check
description: Checks the health and deployment status of APIs managed through MuleSoft Anypoint Platform.
tags:
- api-management
- mulesoft
capability:
exposes:
- type: mcp
namespace: mulesoft
port: 8080
tools:
- name: check-api-health
description: Retrieve health status for a MuleSoft-managed API.
inputParameters:
- name: api_id
in: body
type: string
description: MuleSoft API identifier.
call: mulesoft-api.get-status
with:
api_id: '{{api_id}}'
consumes:
- type: http
namespace: mulesoft-api
baseUri: https://anypoint.mulesoft.com/apimanager/api/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: apis
path: /organizations/mastercard/environments/production/apis/{{api_id}}
inputParameters:
- name: api_id
in: path
operations:
- name: get-status
method: GET
Monitors API usage in MuleSoft, enforces rate limits for high-traffic merchants, and notifies account managers via Salesforce.
naftiko: '0.5'
info:
label: MuleSoft API Rate Limiting Enforcement
description: Monitors API usage in MuleSoft, enforces rate limits for high-traffic merchants, and notifies account managers via Salesforce.
tags:
- api-management
- mulesoft
- datadog
- salesforce
capability:
exposes:
- type: mcp
namespace: rate-limiting
port: 8080
tools:
- name: enforce-rate-limits
description: Monitor and enforce API rate limits for merchants.
inputParameters:
- name: api_id
in: body
type: string
description: MuleSoft API identifier.
steps:
- name: check-usage
type: call
call: datadog-api.query-metrics
with:
query: mulesoft.api.requests{api_id:{{api_id}}}
- name: update-policy
type: call
call: mulesoft-api.update-policy
with:
api_id: '{{api_id}}'
rate_limit: '{{check-usage.recommended_limit}}'
- name: notify-account-mgr
type: call
call: salesforce-api.create-task
with:
subject: 'Rate limit updated: API {{api_id}}'
description: 'Current usage: {{check-usage.value}} req/min. New limit: {{check-usage.recommended_limit}}.'
consumes:
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: mulesoft-api
baseUri: https://anypoint.mulesoft.com/apimanager/api/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: policies
path: /organizations/mastercard/apis/{{api_id}}/policies
inputParameters:
- name: api_id
in: path
operations:
- name: update-policy
method: POST
- type: http
namespace: salesforce-api
baseUri: https://mastercard.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
Monitors GitHub Dependabot alerts, prioritizes via Checkmarx scan, and creates remediation tickets in Jira.
naftiko: '0.5'
info:
label: GitHub Security Advisory Response Pipeline
description: Monitors GitHub Dependabot alerts, prioritizes via Checkmarx scan, and creates remediation tickets in Jira.
tags:
- security
- github
- checkmarx
- jira
capability:
exposes:
- type: mcp
namespace: security-advisory
port: 8080
tools:
- name: respond-to-advisory
description: Respond to GitHub security advisories with prioritized remediation.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository.
steps:
- name: get-alerts
type: call
call: github-api.list-dependabot-alerts
with:
repo: '{{repo}}'
- name: run-scan
type: call
call: checkmarx-api.create-scan
with:
project: '{{repo}}'
- name: create-tickets
type: call
call: jira-api.create-issue
with:
project: SECURITY
summary: 'Dependabot alerts: {{repo}}'
description: 'Critical: {{get-alerts.critical}}. High: {{get-alerts.high}}. Checkmarx findings: {{run-scan.vulnerability_count}}.'
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: alerts
path: /repos/mastercard/{{repo}}/dependabot/alerts
inputParameters:
- name: repo
in: path
operations:
- name: list-dependabot-alerts
method: GET
- type: http
namespace: checkmarx-api
baseUri: https://checkmarx.mastercard.com/cxrestapi
authentication:
type: bearer
token: $secrets.checkmarx_token
resources:
- name: scans
path: /sast/scans
operations:
- name: create-scan
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Monitors payment processing latency SLOs in Datadog, detects breaches in Snowflake, and escalates via PagerDuty.
naftiko: '0.5'
info:
label: Datadog Payment Latency SLO Monitor
description: Monitors payment processing latency SLOs in Datadog, detects breaches in Snowflake, and escalates via PagerDuty.
tags:
- monitoring
- datadog
- snowflake
- pagerduty
capability:
exposes:
- type: mcp
namespace: payment-slo
port: 8080
tools:
- name: monitor-payment-slo
description: Monitor payment latency SLOs and escalate breaches.
inputParameters:
- name: service
in: body
type: string
description: Payment service name.
steps:
- name: check-slo
type: call
call: datadog-api.get-slo
with:
service: '{{service}}'
- name: check-history
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM monitoring.slo_history WHERE service = '{{service}}' AND breached = true
- name: escalate
type: call
call: pagerduty-api.create-event
with:
routing_key: $secrets.pagerduty_routing_key
summary: 'SLO breach: {{service}}. Current: {{check-slo.value}}. Target: {{check-slo.target}}.'
consumes:
- type: http
namespace: datadog-api
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: get-slo
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: pagerduty-api
baseUri: https://events.pagerduty.com/v2
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: events
path: /enqueue
operations:
- name: create-event
method: POST
Aggregates KPIs from Snowflake, refreshes Power BI datasets, and sends executive summaries via Microsoft Outlook.
naftiko: '0.5'
info:
label: Power BI Executive KPI Refresh Pipeline
description: Aggregates KPIs from Snowflake, refreshes Power BI datasets, and sends executive summaries via Microsoft Outlook.
tags:
- reporting
- snowflake
- power-bi
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: exec-kpi
port: 8080
tools:
- name: refresh-executive-kpis
description: Refresh executive KPI dashboards and distribute summaries.
inputParameters:
- name: period
in: body
type: string
description: Reporting period (e.g. weekly, monthly).
steps:
- name: aggregate-kpis
type: call
call: snowflake-api.run-query
with:
query: CALL reporting.aggregate_executive_kpis('{{period}}')
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: executive-kpis
- name: send-summary
type: call
call: outlook-api.send-mail
with:
to: executive-team@mastercard.com
subject: 'Executive KPI Summary: {{period}}'
body: 'KPI dashboard refreshed. Transaction volume: {{aggregate-kpis.total_volume}}. Revenue: {{aggregate-kpis.revenue}}.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
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-api
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
Tracks regulatory changes in Confluence, assesses impact in Snowflake, and creates compliance tasks in Jira.
naftiko: '0.5'
info:
label: Regulatory Change Impact Assessment Workflow
description: Tracks regulatory changes in Confluence, assesses impact in Snowflake, and creates compliance tasks in Jira.
tags:
- compliance
- confluence
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: reg-change
port: 8080
tools:
- name: assess-regulatory-change
description: Assess the impact of a regulatory change on payment operations.
inputParameters:
- name: regulation_id
in: body
type: string
description: Regulation reference identifier.
steps:
- name: get-regulation
type: call
call: confluence-api.get-page
with:
page_id: '{{regulation_id}}'
- name: assess-impact
type: call
call: snowflake-api.run-query
with:
query: CALL compliance.assess_regulation_impact('{{regulation_id}}')
- name: create-tasks
type: call
call: jira-api.create-issue
with:
project: COMPLIANCE
summary: 'Regulatory change: {{get-regulation.title}}'
description: 'Affected systems: {{assess-impact.system_count}}. Deadline: {{assess-impact.deadline}}.'
consumes:
- type: http
namespace: confluence-api
baseUri: https://mastercard.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Runs data quality checks on Redshift payment tables, logs results in Snowflake, and alerts data teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Redshift Data Quality Validation Pipeline
description: Runs data quality checks on Redshift payment tables, logs results in Snowflake, and alerts data teams via Microsoft Teams.
tags:
- data-quality
- amazon-redshift
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: redshift-dq
port: 8080
tools:
- name: validate-redshift-data
description: Run data quality checks on Redshift and alert on failures.
inputParameters:
- name: table_name
in: body
type: string
description: Redshift table to validate.
steps:
- name: run-checks
type: call
call: redshift-api.execute-statement
with:
query: SELECT COUNT(*) as nulls FROM {{table_name}} WHERE primary_key IS NULL
- name: log-results
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO data_quality.checks (table_name, null_count) VALUES ('{{table_name}}', {{run-checks.nulls}})
- name: alert-team
type: call
call: msteams-api.post-message
with:
team_id: data-engineering
channel_id: quality-alerts
message: 'Data quality check: {{table_name}}. Null PKs: {{run-checks.nulls}}.'
consumes:
- type: http
namespace: redshift-api
baseUri: https://redshift-data.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: statements
path: /
operations:
- name: execute-statement
method: POST
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves dispute details from Salesforce, analyzes transaction history in Snowflake, and updates the resolution in ServiceNow.
naftiko: '0.5'
info:
label: Transaction Dispute Resolution Workflow
description: Retrieves dispute details from Salesforce, analyzes transaction history in Snowflake, and updates the resolution in ServiceNow.
tags:
- disputes
- salesforce
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: dispute-resolution
port: 8080
tools:
- name: resolve-transaction-dispute
description: Investigate and resolve a payment transaction dispute.
inputParameters:
- name: dispute_id
in: body
type: string
description: Salesforce dispute case ID.
steps:
- name: get-dispute
type: call
call: salesforce-api.get-case
with:
case_id: '{{dispute_id}}'
- name: analyze-history
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM payments.transaction_history WHERE transaction_id = '{{get-dispute.transaction_id}}'
- name: update-resolution
type: call
call: servicenow-api.create-incident
with:
short_description: 'Dispute resolution: {{dispute_id}}'
description: 'Transaction: {{get-dispute.transaction_id}}. Amount: {{get-dispute.amount}}. History records: {{analyze-history.count}}.'
category: dispute_resolution
consumes:
- type: http
namespace: salesforce-api
baseUri: https://mastercard.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: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Pulls GitHub Copilot adoption metrics, stores them in Snowflake, and generates adoption dashboards in Power BI.
naftiko: '0.5'
info:
label: GitHub Copilot Usage Reporting Pipeline
description: Pulls GitHub Copilot adoption metrics, stores them in Snowflake, and generates adoption dashboards in Power BI.
tags:
- developer-tools
- github-copilot
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: copilot-usage
port: 8080
tools:
- name: report-copilot-usage
description: Generate GitHub Copilot adoption reports.
inputParameters:
- name: org
in: body
type: string
description: GitHub organization name.
steps:
- name: get-usage
type: call
call: github-api.get-copilot-usage
with:
org: '{{org}}'
- name: store-metrics
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO devtools.copilot_usage (org, active_users, suggestions_accepted) VALUES ('{{org}}', {{get-usage.active_users}}, {{get-usage.suggestions_accepted}})
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: copilot-adoption
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: copilot
path: /orgs/{{org}}/copilot/usage
inputParameters:
- name: org
in: path
operations:
- name: get-copilot-usage
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Queries Palo Alto Networks for active firewall policy rules on payment network segments and posts a compliance summary to the security operations Teams channel.
naftiko: '0.5'
info:
label: Palo Alto Networks Security Policy Audit
description: Queries Palo Alto Networks for active firewall policy rules on payment network segments and posts a compliance summary to the security operations Teams channel.
tags:
- security
- network
- palo-alto
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: audit-firewall-policies
description: Given a Palo Alto Networks firewall hostname and a Teams channel ID, retrieve all active security policy rules for the specified device group and post a summary of any permissive or non-compliant rules to the security operations channel. Use for PCI-DSS compliance audits and quarterly firewall rule reviews.
inputParameters:
- name: firewall_hostname
in: body
type: string
description: The Palo Alto Networks Panorama or NGFW hostname to audit.
- name: device_group
in: body
type: string
description: The Panorama device group or vsys scope to audit.
- name: security_channel_id
in: body
type: string
description: Teams channel ID for the security operations team.
steps:
- name: get-policies
type: call
call: paloalto.get-security-rules
with:
device_group: '{{device_group}}'
- name: post-audit-summary
type: call
call: msteams-netsec.post-channel-message
with:
channel_id: '{{security_channel_id}}'
text: 'Firewall Policy Audit for {{firewall_hostname}} ({{device_group}}): {{get-policies.rule_count}} rules retrieved. Review complete — check for permissive rules flagged in output.'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.mastercard.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: security-rules
path: /Objects/SecurityRules
operations:
- name: get-security-rules
method: GET
- type: http
namespace: msteams-netsec
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Extracts diversity metrics from Workday, stores in Snowflake, and generates executive reports in Power BI.
naftiko: '0.5'
info:
label: Workday Diversity Metrics Reporting Pipeline
description: Extracts diversity metrics from Workday, stores in Snowflake, and generates executive reports in Power BI.
tags:
- hr
- workday
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: diversity-reporting
port: 8080
tools:
- name: generate-diversity-report
description: Generate diversity and inclusion metrics report.
inputParameters:
- name: quarter
in: body
type: string
description: Reporting quarter.
steps:
- name: get-metrics
type: call
call: workday-api.get-diversity-data
with:
quarter: '{{quarter}}'
- name: store-data
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO hr.diversity_metrics (quarter, total, diverse_pct) VALUES ('{{quarter}}', {{get-metrics.total}}, {{get-metrics.diverse_pct}})
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: diversity-metrics
consumes:
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: diversity
path: /mastercard/analytics/diversity
operations:
- name: get-diversity-data
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Pulls sprint status across all engineering squads from Jira and publishes a delivery digest to the technology leadership Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Delivery Digest
description: Pulls sprint status across all engineering squads from Jira and publishes a delivery digest to the technology leadership Teams channel.
tags:
- devops
- jira
- sprint
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: delivery-reporting
port: 8080
tools:
- name: digest-sprint-delivery
description: Given a Jira board ID and active sprint ID, retrieve all in-progress, blocked, and completed issues and post a delivery digest to the technology leadership Teams channel. Use for weekly engineering all-hands, sprint reviews, and executive delivery reporting.
inputParameters:
- name: board_id
in: body
type: integer
description: The Jira board ID for the engineering squad.
- name: sprint_id
in: body
type: integer
description: The active sprint ID to report on.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID to post the sprint digest to.
steps:
- name: get-sprint-issues
type: call
call: jira-boards.get-sprint-issues
with:
board_id: '{{board_id}}'
sprint_id: '{{sprint_id}}'
- name: post-digest
type: call
call: msteams-delivery.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Sprint Digest — Board {{board_id}} Sprint {{sprint_id}}: {{get-sprint-issues.in_progress_count}} in progress, {{get-sprint-issues.blocked_count}} blocked, {{get-sprint-issues.done_count}} done.'
consumes:
- type: http
namespace: jira-boards
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprint-issues
path: /board/{board_id}/sprint/{sprint_id}/issue
inputParameters:
- name: board_id
in: path
- name: sprint_id
in: path
operations:
- name: get-sprint-issues
method: GET
- type: http
namespace: msteams-delivery
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves the current status of all Datadog monitors tagged to a specific payment service for use in operational health checks and status pages.
naftiko: '0.5'
info:
label: Datadog Infrastructure Monitor Status Lookup
description: Retrieves the current status of all Datadog monitors tagged to a specific payment service for use in operational health checks and status pages.
tags:
- observability
- datadog
- monitoring
- payments
- infrastructure
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-service-monitor-status
description: Given a Datadog service tag, retrieve all monitors associated with that service and their current alert states. Use for real-time health checks of payment processing services, authorization systems, and network infrastructure.
inputParameters:
- name: service_tag
in: body
type: string
description: Datadog service tag to filter monitors (e.g., service:authorization, service:clearing).
call: datadog.get-monitors
with:
tags: '{{service_tag}}'
outputParameters:
- name: monitors
type: array
mapping: $.monitors
- name: alerting_count
type: number
mapping: $.counts.Alert
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
operations:
- name: get-monitors
method: GET
When a Salesforce opportunity reaches Closed Won, creates a Jira project or epic for delivery and notifies the assigned solutions team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Opportunity Sync to Jira
description: When a Salesforce opportunity reaches Closed Won, creates a Jira project or epic for delivery and notifies the assigned solutions team via Microsoft Teams.
tags:
- crm
- sales
- salesforce
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sales-delivery
port: 8080
tools:
- name: sync-opportunity-to-delivery
description: Given a Salesforce opportunity ID that has reached Closed Won stage, create a corresponding Jira epic for the delivery team and notify the solutions engineering Teams channel. Invoke when a financial institution or merchant deal closes in Salesforce.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID that has reached Closed Won.
- name: delivery_team_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the delivery team notification.
steps:
- name: get-opportunity
type: call
call: salesforce-opps.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-epic
type: call
call: jira-delivery.create-issue
with:
project_key: DEL
issuetype: Epic
summary: 'Delivery: {{get-opportunity.account_name}} — {{get-opportunity.name}}'
description: 'Salesforce Opportunity: {{opportunity_id}}
Account: {{get-opportunity.account_name}}
Contract Value: {{get-opportunity.amount}}
Close Date: {{get-opportunity.close_date}}'
- name: notify-team
type: call
call: msteams-delivery.post-channel-message
with:
channel_id: '{{delivery_team_channel_id}}'
text: 'New deal closed: {{get-opportunity.account_name}} — {{get-opportunity.name}} (${{get-opportunity.amount}}). Jira epic: {{create-epic.key}}'
consumes:
- type: http
namespace: salesforce-opps
baseUri: https://mastercard.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{opportunity_id}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: jira-delivery
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: 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-delivery
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a CrowdStrike Falcon detection alert fires, creates a ServiceNow security incident, notifies the SOC team via Teams, and logs the detection in Datadog.
naftiko: '0.5'
info:
label: CrowdStrike Threat Detection Alert Handler
description: When a CrowdStrike Falcon detection alert fires, creates a ServiceNow security incident, notifies the SOC team via Teams, and logs the detection in Datadog.
tags:
- security
- crowdstrike
- servicenow
- datadog
- microsoft-teams
- threat-detection
capability:
exposes:
- type: mcp
namespace: soc-ops
port: 8080
tools:
- name: handle-threat-detection
description: Given a CrowdStrike Falcon detection ID, severity, and affected hostname, retrieve the full detection context, create a ServiceNow security incident, post a Datadog security event, and alert the SOC Teams channel. Invoke immediately on any CrowdStrike detection at medium severity or above.
inputParameters:
- name: detection_id
in: body
type: string
description: CrowdStrike Falcon detection ID.
- name: severity
in: body
type: string
description: 'Detection severity: critical, high, medium.'
- name: affected_host
in: body
type: string
description: Hostname of the affected endpoint.
- name: tactic
in: body
type: string
description: MITRE ATT&CK tactic associated with the detection.
steps:
- name: get-detection
type: call
call: crowdstrike.get-detection
with:
detection_id: '{{detection_id}}'
- name: create-security-incident
type: call
call: servicenow-soc.create-incident
with:
short_description: '[{{severity}}] CrowdStrike detection on {{affected_host}} — {{tactic}}'
category: security_incident
urgency: '1'
- name: post-datadog-event
type: call
call: datadog-soc.create-event
with:
title: 'CrowdStrike Detection: {{affected_host}}'
text: 'Detection {{detection_id}} | Severity: {{severity}} | Tactic: {{tactic}} | ServiceNow: {{create-security-incident.number}}'
alert_type: error
- name: alert-soc
type: call
call: msteams-soc.post-channel-message
with:
channel_id: security-operations-center
text: 'THREAT DETECTION: {{affected_host}} | Severity: {{severity}} | Tactic: {{tactic}} | CrowdStrike: {{detection_id}} | ServiceNow: {{create-security-incident.number}}'
consumes:
- type: http
namespace: crowdstrike
baseUri: https://api.crowdstrike.com
authentication:
type: bearer
token: $secrets.crowdstrike_token
resources:
- name: detections
path: /detects/entities/detect/v2
operations:
- name: get-detection
method: GET
- type: http
namespace: servicenow-soc
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: 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-soc
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-soc
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Analyzes transaction patterns in Snowflake, detects fraud via Databricks ML models, and creates investigation cases in ServiceNow.
naftiko: '0.5'
info:
label: Payment Fraud Detection and Alerting Pipeline
description: Analyzes transaction patterns in Snowflake, detects fraud via Databricks ML models, and creates investigation cases in ServiceNow.
tags:
- fraud
- snowflake
- azure-databricks
- servicenow
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: detect-payment-fraud
description: Analyze transactions for fraud patterns and create investigation cases.
inputParameters:
- name: merchant_id
in: body
type: string
description: Merchant identifier.
- name: time_window
in: body
type: string
description: Analysis time window (e.g. last_24h).
steps:
- name: get-transactions
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM payments.transactions WHERE merchant_id = '{{merchant_id}}' AND created_at > DATEADD(hour, -24, CURRENT_TIMESTAMP())
- name: run-model
type: call
call: databricks-api.run-job
with:
job_id: fraud-detection-model
parameters: merchant_id={{merchant_id}}
- name: create-case
type: call
call: servicenow-api.create-incident
with:
short_description: 'Fraud alert: merchant {{merchant_id}}'
description: 'Transactions analyzed: {{get-transactions.count}}. Fraud score: {{run-model.score}}. Window: {{time_window}}.'
category: fraud_investigation
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: databricks-api
baseUri: https://mastercard.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: servicenow-api
baseUri: https://mastercard.service-now.com/api/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 submits a time-off request in Workday, notifies their manager via Teams with request details and a direct Workday approval link.
naftiko: '0.5'
info:
label: Workday Time-Off Request Approval Notifier
description: When an employee submits a time-off request in Workday, notifies their manager via Teams with request details and a direct Workday approval link.
tags:
- hr
- workday
- time-off
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: pto-approvals
port: 8080
tools:
- name: notify-pto-approver
description: Given a Workday employee ID, leave type, start date, and end date, submit a leave request in Workday and notify the manager via Teams for approval. Use when an employee requests vacation, personal, or sick leave.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID of the employee requesting leave.
- name: leave_type
in: body
type: string
description: 'Leave type: VACATION, SICK, or PERSONAL.'
- name: start_date
in: body
type: string
description: First day of the leave period in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: Last day of the leave period in YYYY-MM-DD format.
steps:
- name: get-worker
type: call
call: workday-pto.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: create-leave
type: call
call: workday-pto.create-leave-request
with:
worker_id: '{{workday_employee_id}}'
leave_type: '{{leave_type}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: notify-manager
type: call
call: msteams-pto.send-message
with:
recipient_upn: '{{get-worker.manager_email}}'
text: 'Leave approval required: {{get-worker.full_name}} has requested {{leave_type}} from {{start_date}} to {{end_date}}. Request: {{create-leave.request_id}}. Approve in Workday.'
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: workers
path: /mastercard/workers/{worker_id}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- name: leave-requests
path: /mastercard/workers/{worker_id}/leaveRequests
inputParameters:
- name: worker_id
in: path
operations:
- name: create-leave-request
method: POST
- type: http
namespace: msteams-pto
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
Triggers a Net Promoter Score survey campaign in Salesforce Marketing Cloud for a cohort of financial institution contacts and logs the campaign event in Salesforce CRM.
naftiko: '0.5'
info:
label: Salesforce NPS Campaign Trigger
description: Triggers a Net Promoter Score survey campaign in Salesforce Marketing Cloud for a cohort of financial institution contacts and logs the campaign event in Salesforce CRM.
tags:
- crm
- marketing
- salesforce
- nps
- customer-success
capability:
exposes:
- type: mcp
namespace: nps-campaigns
port: 8080
tools:
- name: trigger-nps-campaign
description: Given a Salesforce campaign ID containing a financial institution contact cohort, trigger the NPS survey journey in Salesforce Marketing Cloud and update the campaign record with the launch timestamp. Use for quarterly relationship NPS surveys with issuing banks and merchant partners.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Salesforce campaign ID whose members will receive the NPS survey.
- name: survey_journey_name
in: body
type: string
description: The Salesforce Marketing Cloud journey name for the NPS survey.
steps:
- name: get-campaign
type: call
call: salesforce-nps.get-campaign
with:
campaign_id: '{{campaign_id}}'
- name: trigger-journey
type: call
call: sfmc-nps.trigger-journey
with:
journey_name: '{{survey_journey_name}}'
campaign_id: '{{campaign_id}}'
- name: update-campaign
type: call
call: salesforce-nps.update-campaign
with:
campaign_id: '{{campaign_id}}'
status: Active
consumes:
- type: http
namespace: salesforce-nps
baseUri: https://mastercard.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
- name: update-campaign
method: PATCH
- type: http
namespace: sfmc-nps
baseUri: https://mc.mastercard.com/interaction/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: journeys
path: /interactions/contactEvents
operations:
- name: trigger-journey
method: POST
Checks the status of Databricks model serving endpoints for payment fraud and risk models, and alerts the data science team via Teams if any endpoints are degraded.
naftiko: '0.5'
info:
label: Databricks ML Model Deployment Monitor
description: Checks the status of Databricks model serving endpoints for payment fraud and risk models, and alerts the data science team via Teams if any endpoints are degraded.
tags:
- ai
- data
- databricks
- microsoft-teams
- ml-operations
- payments
capability:
exposes:
- type: mcp
namespace: mlops
port: 8080
tools:
- name: monitor-model-endpoints
description: Given an Azure Databricks workspace URL and a model serving endpoint name, retrieve the endpoint health status and alert the data science Teams channel if the endpoint is degraded or unavailable. Use for continuous monitoring of payment fraud and risk scoring models in production.
inputParameters:
- name: databricks_host
in: body
type: string
description: The Azure Databricks workspace hostname (e.g., adb-1234567890.12.azuredatabricks.net).
- name: endpoint_name
in: body
type: string
description: The Databricks model serving endpoint name to check.
- name: data_science_channel_id
in: body
type: string
description: Teams channel ID for the data science team alert.
steps:
- name: get-endpoint-status
type: call
call: databricks.get-serving-endpoint
with:
endpoint_name: '{{endpoint_name}}'
- name: alert-if-degraded
type: call
call: msteams-mlops.post-channel-message
with:
channel_id: '{{data_science_channel_id}}'
text: 'Model Endpoint Alert: {{endpoint_name}} status is {{get-endpoint-status.state}}. Please investigate model serving health in Databricks workspace {{databricks_host}}.'
consumes:
- type: http
namespace: databricks
baseUri: https://adb-0000000000.0.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: serving-endpoints
path: /serving-endpoints/{name}
inputParameters:
- name: name
in: path
operations:
- name: get-serving-endpoint
method: GET
- type: http
namespace: msteams-mlops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Detects overdue Zendesk tickets, escalates to Salesforce account owners, and posts alerts to Microsoft Teams.
naftiko: '0.5'
info:
label: Zendesk Merchant Support Escalation Pipeline
description: Detects overdue Zendesk tickets, escalates to Salesforce account owners, and posts alerts to Microsoft Teams.
tags:
- support
- zendesk
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: support-escalation
port: 8080
tools:
- name: escalate-support-tickets
description: Escalate overdue merchant support tickets.
inputParameters:
- name: sla_hours
in: body
type: string
description: SLA threshold in hours.
steps:
- name: get-overdue
type: call
call: zendesk-api.search-tickets
with:
query: status:open created<{{sla_hours}}hours
- name: notify-owner
type: call
call: salesforce-api.create-task
with:
subject: 'Escalation: {{get-overdue.count}} overdue tickets'
- name: post-alert
type: call
call: msteams-api.post-message
with:
team_id: merchant-support
channel_id: escalations
message: '{{get-overdue.count}} tickets exceeded {{sla_hours}}h SLA.'
consumes:
- type: http
namespace: zendesk-api
baseUri: https://mastercard.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: salesforce-api
baseUri: https://mastercard.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Checks the last refresh status of a Power BI dataset used for payment network executive reporting.
naftiko: '0.5'
info:
label: Power BI Report Refresh Status
description: Checks the last refresh status of a Power BI dataset used for payment network executive reporting.
tags:
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: powerbi
port: 8080
tools:
- name: get-refresh-status
description: Retrieve the last refresh status for a Power BI dataset.
inputParameters:
- name: dataset_id
in: body
type: string
description: Power BI dataset identifier.
call: powerbi-api.get-refresh-history
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: powerbi-api
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: get-refresh-history
method: GET
Checks scheduled Snowflake task execution health for transaction analytics pipelines and creates a ServiceNow incident if critical tasks have failed.
naftiko: '0.5'
info:
label: Snowflake Transaction Analytics Pipeline Monitor
description: Checks scheduled Snowflake task execution health for transaction analytics pipelines and creates a ServiceNow incident if critical tasks have failed.
tags:
- data
- analytics
- snowflake
- servicenow
- monitoring
- payments
capability:
exposes:
- type: mcp
namespace: analytics-ops
port: 8080
tools:
- name: monitor-transaction-pipeline
description: Given a Snowflake database and schema hosting transaction analytics tasks, check for failed or overdue tasks and automatically open a ServiceNow incident if failures are detected. Use for daily monitoring of payment transaction data pipelines.
inputParameters:
- name: snowflake_database
in: body
type: string
description: The Snowflake database containing the transaction analytics tasks.
- name: snowflake_schema
in: body
type: string
description: The Snowflake schema to check for task failures.
steps:
- name: get-task-status
type: call
call: snowflake.get-task-history
with:
database: '{{snowflake_database}}'
schema: '{{snowflake_schema}}'
- name: create-incident
type: call
call: servicenow-analytics.create-incident
with:
short_description: 'Snowflake pipeline failure: {{snowflake_database}}.{{snowflake_schema}}'
category: data_pipeline
urgency: '2'
consumes:
- type: http
namespace: snowflake
baseUri: https://mastercard.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: get-task-history
method: GET
- type: http
namespace: servicenow-analytics
baseUri: https://mastercard.service-now.com/api/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 security event logs from Splunk for a specified time range and source to support fraud investigation.
naftiko: '0.5'
info:
label: Splunk Security Event Lookup
description: Retrieves security event logs from Splunk for a specified time range and source to support fraud investigation.
tags:
- security
- splunk
capability:
exposes:
- type: mcp
namespace: splunk-security
port: 8080
tools:
- name: get-security-events
description: Search Splunk for security events by source and time range.
inputParameters:
- name: source
in: body
type: string
description: Event source identifier.
- name: time_range
in: body
type: string
description: Time range (e.g. last_1h, last_24h).
call: splunk-api.search-events
with:
source: '{{source}}'
time_range: '{{time_range}}'
consumes:
- type: http
namespace: splunk-api
baseUri: https://splunk.mastercard.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search-events
method: POST
Retrieves account activity data from Salesforce and updates each financial institution account record with a calculated health score based on recent transaction volumes and engagement.
naftiko: '0.5'
info:
label: Salesforce Account Health Score Update
description: Retrieves account activity data from Salesforce and updates each financial institution account record with a calculated health score based on recent transaction volumes and engagement.
tags:
- crm
- sales
- salesforce
- account-management
capability:
exposes:
- type: mcp
namespace: account-intelligence
port: 8080
tools:
- name: update-account-health-score
description: Given a Salesforce account ID, retrieve the account's recent activity metrics, calculate a health score, and update the account record. Use for quarterly account reviews, renewal risk identification, and sales prioritization for financial institution and merchant accounts.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID to calculate and update health score for.
steps:
- name: get-account
type: call
call: salesforce-accounts.get-account
with:
account_id: '{{account_id}}'
- name: update-health-score
type: call
call: salesforce-accounts.update-account
with:
account_id: '{{account_id}}'
health_score_last_calculated: '2026-03-20'
consumes:
- type: http
namespace: salesforce-accounts
baseUri: https://mastercard.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
Retrieves employee certification and compliance training records from Workday for regulatory audit support.
naftiko: '0.5'
info:
label: Workday Employee Certification Lookup
description: Retrieves employee certification and compliance training records from Workday for regulatory audit support.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: workday-certs
port: 8080
tools:
- name: get-certifications
description: Look up an employee's certifications and training records.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID.
call: workday-api.get-certifications
with:
worker_id: '{{worker_id}}'
consumes:
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: certifications
path: /mastercard/workers/{{worker_id}}/certifications
inputParameters:
- name: worker_id
in: path
operations:
- name: get-certifications
method: GET
Retrieves SLO compliance data for all payment processing monitors from Datadog and publishes a weekly summary to the engineering leadership Teams channel.
naftiko: '0.5'
info:
label: Datadog SLO Compliance Weekly Report
description: Retrieves SLO compliance data for all payment processing monitors from Datadog and publishes a weekly summary to the engineering leadership Teams channel.
tags:
- observability
- datadog
- slo
- reporting
- microsoft-teams
- payments
capability:
exposes:
- type: mcp
namespace: slo-compliance
port: 8080
tools:
- name: publish-slo-compliance-report
description: Given a Datadog SLO tag filter and a Teams channel ID, retrieve all SLO statuses for the past 7 days and post a compliance summary. Use for weekly engineering reliability reviews and payment network SLA reporting to leadership.
inputParameters:
- name: slo_tag_filter
in: body
type: string
description: Datadog tag filter for SLOs to include (e.g., service:payments, env:production).
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the engineering leadership SLO digest.
steps:
- name: get-slo-status
type: call
call: datadog-slos.get-slos
with:
tags_query: '{{slo_tag_filter}}'
- name: post-report
type: call
call: msteams-slos.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Weekly SLO Compliance Report: {{get-slo-status.compliant_count}} SLOs meeting target, {{get-slo-status.breached_count}} SLOs breaching targets. Filter: {{slo_tag_filter}}.'
consumes:
- type: http
namespace: datadog-slos
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: get-slos
method: GET
- type: http
namespace: msteams-slos
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Scans VMware VMs for compliance, logs findings in Snowflake, and creates remediation tasks in Jira.
naftiko: '0.5'
info:
label: VMware VM Compliance Scan Pipeline
description: Scans VMware VMs for compliance, logs findings in Snowflake, and creates remediation tasks in Jira.
tags:
- infrastructure
- vmware
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: vm-compliance
port: 8080
tools:
- name: scan-vm-compliance
description: Scan VMware VMs for security and compliance issues.
inputParameters:
- name: datacenter
in: body
type: string
description: VMware datacenter name.
steps:
- name: scan-vms
type: call
call: vmware-api.get-compliance
with:
datacenter: '{{datacenter}}'
- name: log-findings
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO compliance.vm_scans (datacenter, non_compliant) VALUES ('{{datacenter}}', {{scan-vms.non_compliant_count}})
- name: create-tasks
type: call
call: jira-api.create-issue
with:
project: INFRA
summary: 'VM compliance: {{datacenter}}'
description: 'Non-compliant VMs: {{scan-vms.non_compliant_count}}.'
consumes:
- type: http
namespace: vmware-api
baseUri: https://vcenter.mastercard.com/api
authentication:
type: bearer
token: $secrets.vmware_token
resources:
- name: compliance
path: /vcenter/vm
operations:
- name: get-compliance
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Identifies expiring partner agreements in Salesforce, creates renewal tasks in Jira, and sends notifications via Microsoft Outlook.
naftiko: '0.5'
info:
label: Salesforce Partner Agreement Renewal Pipeline
description: Identifies expiring partner agreements in Salesforce, creates renewal tasks in Jira, and sends notifications via Microsoft Outlook.
tags:
- partner-management
- salesforce
- jira
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: agreement-renewal
port: 8080
tools:
- name: process-agreement-renewals
description: Identify and process expiring partner agreements.
inputParameters:
- name: days_until_expiry
in: body
type: string
description: Days before expiry to trigger renewal.
steps:
- name: get-expiring
type: call
call: salesforce-api.get-agreements
with:
days: '{{days_until_expiry}}'
- name: create-task
type: call
call: jira-api.create-issue
with:
project: PARTNERS
summary: 'Agreement renewal: {{get-expiring.top.partner_name}}'
description: 'Expires: {{get-expiring.top.expiry_date}}. Value: {{get-expiring.top.annual_value}}.'
- name: notify-partner
type: call
call: outlook-api.send-mail
with:
to: '{{get-expiring.top.contact_email}}'
subject: 'Agreement Renewal: {{get-expiring.top.partner_name}}'
body: Your partnership agreement expires on {{get-expiring.top.expiry_date}}. Please contact your account manager.
consumes:
- type: http
namespace: salesforce-api
baseUri: https://mastercard.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: agreements
path: /sobjects/Contract
operations:
- name: get-agreements
method: GET
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: outlook-api
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
Detects Datadog synthetic test failures, creates PagerDuty incidents, and tracks resolution in Jira.
naftiko: '0.5'
info:
label: Datadog Synthetic Test Failure Handler
description: Detects Datadog synthetic test failures, creates PagerDuty incidents, and tracks resolution in Jira.
tags:
- monitoring
- datadog
- pagerduty
- jira
capability:
exposes:
- type: mcp
namespace: synthetic-failure
port: 8080
tools:
- name: handle-synthetic-failure
description: Respond to Datadog synthetic test failures.
inputParameters:
- name: test_id
in: body
type: string
description: Datadog synthetic test ID.
steps:
- name: get-results
type: call
call: datadog-api.get-test-results
with:
test_id: '{{test_id}}'
- name: alert-oncall
type: call
call: pagerduty-api.create-event
with:
routing_key: $secrets.pagerduty_routing_key
summary: 'Synthetic test failure: {{test_id}}. Location: {{get-results.failing_location}}.'
- name: track-issue
type: call
call: jira-api.create-issue
with:
project: PLATFORM
summary: 'Synthetic failure: {{test_id}}'
description: 'Failing location: {{get-results.failing_location}}. Response time: {{get-results.response_time_ms}}ms.'
consumes:
- type: http
namespace: datadog-api
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: synthetics
path: /synthetics/tests/{{test_id}}/results
inputParameters:
- name: test_id
in: path
operations:
- name: get-test-results
method: GET
- type: http
namespace: pagerduty-api
baseUri: https://events.pagerduty.com/v2
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: events
path: /enqueue
operations:
- name: create-event
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Extracts resolved ServiceNow incidents, creates knowledge articles in Confluence, and notifies support teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Confluence Knowledge Article Creation Pipeline
description: Extracts resolved ServiceNow incidents, creates knowledge articles in Confluence, and notifies support teams via Microsoft Teams.
tags:
- knowledge-management
- servicenow
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: kb-creation
port: 8080
tools:
- name: create-knowledge-article
description: Convert resolved incidents into knowledge base articles.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number.
steps:
- name: get-incident
type: call
call: servicenow-api.get-incident
with:
incident_number: '{{incident_number}}'
- name: create-article
type: call
call: confluence-api.create-page
with:
space: KB
title: 'KB: {{get-incident.short_description}}'
body: 'Problem: {{get-incident.description}}. Resolution: {{get-incident.close_notes}}.'
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: support
channel_id: knowledge-base
message: 'New KB article: {{get-incident.short_description}}. Link: {{create-article.url}}.'
consumes:
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: get-incident
method: GET
- type: http
namespace: confluence-api
baseUri: https://mastercard.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Reconciles settlement files from Snowflake, detects discrepancies, and creates resolution tickets in ServiceNow.
naftiko: '0.5'
info:
label: Transaction Settlement Reconciliation Pipeline
description: Reconciles settlement files from Snowflake, detects discrepancies, and creates resolution tickets in ServiceNow.
tags:
- settlements
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: settlement-recon
port: 8080
tools:
- name: reconcile-settlements
description: Reconcile payment settlements and flag discrepancies.
inputParameters:
- name: settlement_date
in: body
type: string
description: Settlement date YYYY-MM-DD.
steps:
- name: run-recon
type: call
call: snowflake-api.run-query
with:
query: CALL settlements.reconcile('{{settlement_date}}')
- name: create-ticket
type: call
call: servicenow-api.create-incident
with:
short_description: 'Settlement recon: {{settlement_date}}'
description: 'Breaks: {{run-recon.break_count}}. Total amount: {{run-recon.break_amount}}.'
- name: notify-ops
type: call
call: msteams-api.post-message
with:
team_id: settlement-ops
channel_id: reconciliation
message: 'Settlement recon for {{settlement_date}}: {{run-recon.break_count}} breaks totaling {{run-recon.break_amount}}.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Detects payroll discrepancies between ADP and Workday, flags issues in ServiceNow, and notifies HR via Microsoft Teams.
naftiko: '0.5'
info:
label: ADP Payroll Discrepancy Handler
description: Detects payroll discrepancies between ADP and Workday, flags issues in ServiceNow, and notifies HR via Microsoft Teams.
tags:
- hr
- adp
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: payroll-discrepancy
port: 8080
tools:
- name: handle-payroll-discrepancy
description: Detect and escalate payroll discrepancies.
inputParameters:
- name: pay_period
in: body
type: string
description: Pay period identifier.
steps:
- name: get-adp-data
type: call
call: adp-api.get-payroll
with:
pay_period: '{{pay_period}}'
- name: get-workday-data
type: call
call: workday-api.get-payroll
with:
pay_period: '{{pay_period}}'
- name: create-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'Payroll discrepancy: {{pay_period}}'
description: 'ADP total: {{get-adp-data.total}}. Workday total: {{get-workday-data.total}}.'
category: payroll
consumes:
- type: http
namespace: adp-api
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
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: payroll
path: /mastercard/payroll
operations:
- name: get-payroll
method: GET
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Reviews user access in Okta, compares against Workday employment status, and revokes access for terminated employees.
naftiko: '0.5'
info:
label: Okta Access Review and Revocation Pipeline
description: Reviews user access in Okta, compares against Workday employment status, and revokes access for terminated employees.
tags:
- identity
- okta
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: review-and-revoke-access
description: Review Okta access against employment status and revoke as needed.
inputParameters:
- name: department
in: body
type: string
description: Department to audit.
steps:
- name: get-okta-users
type: call
call: okta-api.list-users
with:
department: '{{department}}'
- name: check-workday
type: call
call: workday-api.list-active-workers
with:
department: '{{department}}'
- name: log-revocations
type: call
call: servicenow-api.create-incident
with:
short_description: 'Access review: {{department}}'
description: 'Okta users: {{get-okta-users.count}}. Active workers: {{check-workday.count}}.'
category: access_management
consumes:
- type: http
namespace: okta-api
baseUri: https://mastercard.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users
operations:
- name: list-users
method: GET
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /mastercard/workers
operations:
- name: list-active-workers
method: GET
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/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 vendor invoices from SAP, validates against purchase orders in Snowflake, and routes approvals via ServiceNow.
naftiko: '0.5'
info:
label: SAP Vendor Invoice Processing Pipeline
description: Retrieves vendor invoices from SAP, validates against purchase orders in Snowflake, and routes approvals via ServiceNow.
tags:
- procurement
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: invoice-processing
port: 8080
tools:
- name: process-vendor-invoice
description: Validate and route vendor invoices for approval.
inputParameters:
- name: invoice_id
in: body
type: string
description: SAP invoice identifier.
steps:
- name: get-invoice
type: call
call: sap-api.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: validate-po
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM procurement.purchase_orders WHERE po_number = '{{get-invoice.po_number}}'
- name: route-approval
type: call
call: servicenow-api.create-request
with:
short_description: 'Invoice approval: {{invoice_id}}'
description: 'Vendor: {{get-invoice.vendor}}. Amount: {{get-invoice.amount}}. PO: {{get-invoice.po_number}}.'
consumes:
- type: http
namespace: sap-api
baseUri: https://sap.mastercard.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: invoices
path: /API_SUPPLIER_INVOICE_PROCESS_SRV/A_SupplierInvoice('{{invoice_id}}')
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.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 configuration and invocation metrics for an AWS Lambda function used in payment processing microservices.
naftiko: '0.5'
info:
label: AWS Lambda Function Status Check
description: Retrieves configuration and invocation metrics for an AWS Lambda function used in payment processing microservices.
tags:
- serverless
- aws-lambda
capability:
exposes:
- type: mcp
namespace: lambda
port: 8080
tools:
- name: get-function-status
description: Fetch the configuration and last invocation status of a Lambda function.
inputParameters:
- name: function_name
in: body
type: string
description: Lambda function name.
call: lambda-api.get-function
with:
function_name: '{{function_name}}'
consumes:
- type: http
namespace: lambda-api
baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: functions
path: /functions/{{function_name}}
inputParameters:
- name: function_name
in: path
operations:
- name: get-function
method: GET
Verifies that branch protection rules are properly configured on a GitHub repository for payment platform codebases.
naftiko: '0.5'
info:
label: GitHub Repository Branch Protection Check
description: Verifies that branch protection rules are properly configured on a GitHub repository for payment platform codebases.
tags:
- security
- github
capability:
exposes:
- type: mcp
namespace: github-branch
port: 8080
tools:
- name: check-branch-protection
description: Verify branch protection rules on a GitHub repository.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository name.
- name: branch
in: body
type: string
description: Branch name to check.
call: github-api.get-branch-protection
with:
repo: '{{repo}}'
branch: '{{branch}}'
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: branches
path: /repos/mastercard/{{repo}}/branches/{{branch}}/protection
inputParameters:
- name: repo
in: path
- name: branch
in: path
operations:
- name: get-branch-protection
method: GET
Launches performance review cycles in Workday, sends reminders via Microsoft Teams, and tracks completion in Jira.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Orchestrator
description: Launches performance review cycles in Workday, sends reminders via Microsoft Teams, and tracks completion in Jira.
tags:
- hr
- workday
- microsoft-teams
- jira
capability:
exposes:
- type: mcp
namespace: perf-review
port: 8080
tools:
- name: launch-review-cycle
description: Launch and track a performance review cycle.
inputParameters:
- name: cycle_name
in: body
type: string
description: Review cycle name.
- name: department
in: body
type: string
description: Department to review.
steps:
- name: launch-cycle
type: call
call: workday-api.create-review-cycle
with:
name: '{{cycle_name}}'
department: '{{department}}'
- name: send-reminders
type: call
call: msteams-api.post-message
with:
team_id: hr-team
channel_id: performance
message: 'Performance review cycle launched: {{cycle_name}} for {{department}}. Eligible: {{launch-cycle.eligible_count}}.'
- name: track-progress
type: call
call: jira-api.create-issue
with:
project: HR
summary: 'Performance review: {{department}} - {{cycle_name}}'
description: 'Eligible: {{launch-cycle.eligible_count}}. Deadline: {{launch-cycle.deadline}}.'
consumes:
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: reviews
path: /mastercard/performance/reviews
operations:
- name: create-review-cycle
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Fetches API call metrics and error rates from Azure API Management for payment gateway monitoring.
naftiko: '0.5'
info:
label: Azure API Gateway Metrics Lookup
description: Fetches API call metrics and error rates from Azure API Management for payment gateway monitoring.
tags:
- api-management
- microsoft-azure
capability:
exposes:
- type: mcp
namespace: azure-apim
port: 8080
tools:
- name: get-api-metrics
description: Retrieve API metrics from Azure API Management.
inputParameters:
- name: api_id
in: body
type: string
description: Azure APIM API identifier.
call: apim-api.get-metrics
with:
api_id: '{{api_id}}'
consumes:
- type: http
namespace: apim-api
baseUri: https://management.azure.com/subscriptions
authentication:
type: bearer
token: $secrets.azure_management_token
resources:
- name: metrics
path: /resourceGroups/mc-prod/providers/Microsoft.ApiManagement/service/mc-apim/apis/{{api_id}}/diagnostics
inputParameters:
- name: api_id
in: path
operations:
- name: get-metrics
method: GET
Checks the execution status of an Azure Databricks job to verify that payment analytics pipelines completed successfully.
naftiko: '0.5'
info:
label: Azure Databricks Job Status Check
description: Checks the execution status of an Azure Databricks job to verify that payment analytics pipelines completed successfully.
tags:
- data-engineering
- azure-databricks
capability:
exposes:
- type: mcp
namespace: databricks
port: 8080
tools:
- name: get-job-status
description: Fetch the status of a Databricks job run.
inputParameters:
- name: run_id
in: body
type: string
description: Databricks job run identifier.
call: databricks-api.get-run
with:
run_id: '{{run_id}}'
consumes:
- type: http
namespace: databricks-api
baseUri: https://mastercard.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: runs
path: /jobs/runs/get?run_id={{run_id}}
inputParameters:
- name: run_id
in: query
operations:
- name: get-run
method: GET
Posts an alert message to a Microsoft Teams channel for payment network operational notifications.
naftiko: '0.5'
info:
label: Microsoft Teams Alert Post
description: Posts an alert message to a Microsoft Teams channel for payment network operational notifications.
tags:
- communication
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: msteams
port: 8080
tools:
- name: post-alert
description: Send an alert to a Teams channel.
inputParameters:
- name: team_id
in: body
type: string
description: Teams team identifier.
- name: channel_id
in: body
type: string
description: Teams channel identifier.
- name: message
in: body
type: string
description: Alert message text.
call: msteams-api.post-message
with:
team_id: '{{team_id}}'
channel_id: '{{channel_id}}'
message: '{{message}}'
consumes:
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Triggers a Postman collection test run to validate payment API endpoints and returns pass/fail results.
naftiko: '0.5'
info:
label: Postman API Collection Test Run
description: Triggers a Postman collection test run to validate payment API endpoints and returns pass/fail results.
tags:
- api-testing
- postman
capability:
exposes:
- type: mcp
namespace: postman
port: 8080
tools:
- name: run-collection-tests
description: Trigger a Postman collection run and retrieve results.
inputParameters:
- name: collection_id
in: body
type: string
description: Postman collection identifier.
call: postman-api.run-collection
with:
collection_id: '{{collection_id}}'
consumes:
- type: http
namespace: postman-api
baseUri: https://api.getpostman.com
authentication:
type: apikey
key: X-API-Key
value: $secrets.postman_api_key
placement: header
resources:
- name: collections
path: /collections/{{collection_id}}/runs
inputParameters:
- name: collection_id
in: path
operations:
- name: run-collection
method: POST
Processes project intake requests from Airtable, creates Jira epics, and notifies project managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Airtable Project Intake to Jira Pipeline
description: Processes project intake requests from Airtable, creates Jira epics, and notifies project managers via Microsoft Teams.
tags:
- project-management
- airtable
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: project-intake
port: 8080
tools:
- name: process-project-intake
description: Convert Airtable project requests into Jira epics.
inputParameters:
- name: record_id
in: body
type: string
description: Airtable record identifier.
steps:
- name: get-request
type: call
call: airtable-api.get-record
with:
record_id: '{{record_id}}'
- name: create-epic
type: call
call: jira-api.create-issue
with:
project: PMO
summary: '{{get-request.project_name}}'
description: 'Requester: {{get-request.requester}}. Priority: {{get-request.priority}}. Budget: {{get-request.budget}}.'
issuetype: Epic
- name: notify-pm
type: call
call: msteams-api.post-message
with:
team_id: project-management
channel_id: intake
message: 'New project: {{get-request.project_name}}. Epic: {{create-epic.key}}.'
consumes:
- type: http
namespace: airtable-api
baseUri: https://api.airtable.com/v0
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /appXXXXXX/Project%20Intake/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Retrieves weekly LinkedIn company page engagement metrics for Mastercard and posts a brand performance digest to the marketing leadership Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Performance Digest
description: Retrieves weekly LinkedIn company page engagement metrics for Mastercard and posts a brand performance digest to the marketing leadership Teams channel.
tags:
- marketing
- linkedin
- social-media
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-reporting
port: 8080
tools:
- name: digest-linkedin-brand-performance
description: Given a LinkedIn organization ID and a Teams channel ID, retrieve the latest company page follower growth, post impressions, and engagement rate, and publish a digest to the marketing leadership channel. Use for weekly brand health reviews and talent marketing reporting.
inputParameters:
- name: linkedin_org_id
in: body
type: string
description: LinkedIn organization URN ID for the Mastercard company page.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the marketing leadership digest.
steps:
- name: get-page-stats
type: call
call: linkedin.get-organization-stats
with:
organization_id: '{{linkedin_org_id}}'
- name: post-digest
type: call
call: msteams-brand.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: 'LinkedIn Brand Digest: Followers: {{get-page-stats.follower_count}} | Impressions: {{get-page-stats.impressions}} | Engagement Rate: {{get-page-stats.engagement_rate}}%'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: organization-stats
path: /organizationalEntityShareStatistics
operations:
- name: get-organization-stats
method: GET
- type: http
namespace: msteams-brand
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves current headcount by business unit and grade from Workday for use in workforce planning, finance forecasting, and executive reporting.
naftiko: '0.5'
info:
label: Workday Headcount and Payroll Snapshot
description: Retrieves current headcount by business unit and grade from Workday for use in workforce planning, finance forecasting, and executive reporting.
tags:
- hr
- finance
- workday
- headcount
- reporting
capability:
exposes:
- type: mcp
namespace: workforce-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Exports current headcount from Workday by business unit, grade, and location. Returns totals and breakdown for use in finance and HR reporting.
call: workday-hc.headcount-export
outputParameters:
- name: total_headcount
type: number
mapping: $.total
- name: by_business_unit
type: array
mapping: $.business_units
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: headcount
path: /mastercard/workers/export
operations:
- name: headcount-export
method: GET
Triggers a GitHub Actions deployment, runs Postman API tests, and logs the deployment in ServiceNow.
naftiko: '0.5'
info:
label: GitHub Actions Payment API Deployment
description: Triggers a GitHub Actions deployment, runs Postman API tests, and logs the deployment in ServiceNow.
tags:
- cicd
- github-actions
- postman
- servicenow
capability:
exposes:
- type: mcp
namespace: api-deployment
port: 8080
tools:
- name: deploy-payment-api
description: Deploy a payment API with automated testing and change management.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository.
- name: version
in: body
type: string
description: Version tag.
steps:
- name: trigger-deploy
type: call
call: github-api.dispatch-workflow
with:
repo: '{{repo}}'
workflow: deploy.yml
ref: v{{version}}
- name: run-tests
type: call
call: postman-api.run-collection
with:
collection_id: payment-api-smoke-tests
- name: log-deployment
type: call
call: servicenow-api.create-change
with:
short_description: 'API deployment: {{repo}} v{{version}}'
description: 'Tests passed: {{run-tests.passed}}. Failed: {{run-tests.failed}}.'
consumes:
- type: http
namespace: github-api
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /repos/mastercard/{{repo}}/actions/workflows/{{workflow}}/dispatches
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: dispatch-workflow
method: POST
- type: http
namespace: postman-api
baseUri: https://api.getpostman.com
authentication:
type: apikey
key: X-API-Key
value: $secrets.postman_api_key
placement: header
resources:
- name: collections
path: /collections/{{collection_id}}/runs
inputParameters:
- name: collection_id
in: path
operations:
- name: run-collection
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.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
Analyzes transaction volume trends in Snowflake, forecasts capacity needs in Databricks, and creates scaling tickets in Jira.
naftiko: '0.5'
info:
label: Payment Network Capacity Planning Pipeline
description: Analyzes transaction volume trends in Snowflake, forecasts capacity needs in Databricks, and creates scaling tickets in Jira.
tags:
- capacity-planning
- snowflake
- azure-databricks
- jira
capability:
exposes:
- type: mcp
namespace: capacity-planning
port: 8080
tools:
- name: plan-network-capacity
description: Forecast payment network capacity needs and create scaling plans.
inputParameters:
- name: region
in: body
type: string
description: Network region.
- name: forecast_days
in: body
type: string
description: Forecast horizon in days.
steps:
- name: get-trends
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM network.volume_trends WHERE region = '{{region}}'
- name: run-forecast
type: call
call: databricks-api.run-job
with:
job_id: capacity-forecast
parameters: region={{region}},days={{forecast_days}}
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: INFRA
summary: 'Capacity planning: {{region}}'
description: 'Forecast: {{run-forecast.peak_tps}}. Current: {{get-trends.current_tps}}. Headroom: {{run-forecast.headroom_pct}}%.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: databricks-api
baseUri: https://mastercard.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: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Executes a query against Amazon Redshift to retrieve payment transaction data for analytics and reporting.
naftiko: '0.5'
info:
label: Amazon Redshift Query Execution
description: Executes a query against Amazon Redshift to retrieve payment transaction data for analytics and reporting.
tags:
- data-warehouse
- amazon-redshift
capability:
exposes:
- type: mcp
namespace: redshift
port: 8080
tools:
- name: execute-query
description: Run a SQL query against the Redshift payment data warehouse.
inputParameters:
- name: query
in: body
type: string
description: SQL query to execute.
call: redshift-api.execute-statement
with:
query: '{{query}}'
consumes:
- type: http
namespace: redshift-api
baseUri: https://redshift-data.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: statements
path: /
operations:
- name: execute-statement
method: POST
Queries fraud-related logs from Splunk, correlates with transaction data in Snowflake, and creates investigation tickets in Jira.
naftiko: '0.5'
info:
label: Splunk Fraud Investigation Pipeline
description: Queries fraud-related logs from Splunk, correlates with transaction data in Snowflake, and creates investigation tickets in Jira.
tags:
- fraud
- splunk
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: fraud-investigation
port: 8080
tools:
- name: investigate-fraud-event
description: Investigate a fraud event using log correlation and transaction analysis.
inputParameters:
- name: alert_id
in: body
type: string
description: Splunk alert identifier.
steps:
- name: get-logs
type: call
call: splunk-api.search-events
with:
alert_id: '{{alert_id}}'
- name: correlate-transactions
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM payments.transactions WHERE alert_id = '{{alert_id}}'
- name: create-investigation
type: call
call: jira-api.create-issue
with:
project: FRAUD
summary: 'Fraud investigation: {{alert_id}}'
description: 'Log events: {{get-logs.count}}. Transactions: {{correlate-transactions.count}}.'
consumes:
- type: http
namespace: splunk-api
baseUri: https://splunk.mastercard.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search-events
method: POST
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
When an Azure spending anomaly is detected in a subscription, creates a ServiceNow change request and alerts the FinOps team via Teams.
naftiko: '0.5'
info:
label: Azure Cloud Cost Anomaly Responder
description: When an Azure spending anomaly is detected in a subscription, creates a ServiceNow change request and alerts the FinOps team via Teams.
tags:
- cloud
- finops
- azure
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cloud-cost-anomaly
description: Given an Azure subscription ID, anomalous spend amount, and responsible service, open a ServiceNow change request and alert the FinOps Teams channel. Invoke when Azure Cost Management flags an unexpected spend increase in payment processing or data platform subscriptions.
inputParameters:
- name: subscription_id
in: body
type: string
description: Azure subscription ID where the cost anomaly was detected.
- name: anomaly_amount
in: body
type: number
description: Anomalous spend amount in USD above the expected baseline.
- name: service_name
in: body
type: string
description: Azure service or resource group causing the anomaly.
steps:
- name: create-change
type: call
call: servicenow-cost.create-change
with:
short_description: 'Azure cost anomaly: {{service_name}} — ${{anomaly_amount}} above baseline'
category: cloud_cost
- name: alert-finops
type: call
call: msteams-finops.post-channel-message
with:
channel_id: finops-alerts
text: 'Cost Anomaly: Azure {{service_name}} in {{subscription_id}} is ${{anomaly_amount}} over budget. ServiceNow: {{create-change.number}}'
consumes:
- type: http
namespace: servicenow-cost
baseUri: https://mastercard.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-finops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Queries Snowflake for aggregate transaction volume metrics by region and time period for payment network analytics.
naftiko: '0.5'
info:
label: Snowflake Transaction Volume Query
description: Queries Snowflake for aggregate transaction volume metrics by region and time period for payment network analytics.
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: transaction-analytics
port: 8080
tools:
- name: get-transaction-volume
description: Query aggregate transaction volumes from Snowflake.
inputParameters:
- name: region
in: body
type: string
description: Geographic region code.
- name: date
in: body
type: string
description: Query date YYYY-MM-DD.
call: snowflake-api.run-query
with:
region: '{{region}}'
date: '{{date}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
Triggers a Terraform Cloud workspace run to provision new payment processing infrastructure, logs a ServiceNow change record, and notifies the infrastructure team via Teams.
naftiko: '0.5'
info:
label: Terraform Cloud Infrastructure Provisioning
description: Triggers a Terraform Cloud workspace run to provision new payment processing infrastructure, logs a ServiceNow change record, and notifies the infrastructure team via Teams.
tags:
- cloud
- infrastructure
- terraform
- servicenow
- microsoft-teams
- provisioning
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: provision-payment-infrastructure
description: Given a Terraform Cloud workspace ID and environment target, trigger a Terraform run for payment infrastructure provisioning, create a ServiceNow change record, and notify the infrastructure team. Use when scaling payment processing capacity or deploying new regions.
inputParameters:
- name: workspace_id
in: body
type: string
description: Terraform Cloud workspace ID for the infrastructure configuration.
- name: environment
in: body
type: string
description: 'Target environment: dev, staging, or production.'
- name: region
in: body
type: string
description: Target cloud region for the infrastructure deployment.
steps:
- name: trigger-run
type: call
call: terraform.create-run
with:
workspace_id: '{{workspace_id}}'
message: Provisioning payment infrastructure in {{region}} ({{environment}})
- name: create-change
type: call
call: servicenow-infra.create-change
with:
short_description: 'Infrastructure provisioning: {{region}} — {{environment}}'
category: cloud_provisioning
- name: notify-infra
type: call
call: msteams-infra.post-channel-message
with:
channel_id: infrastructure-deployments
text: 'Terraform run triggered for {{environment}} in {{region}}. Change: {{create-change.number}}. Run ID: {{trigger-run.run_id}}'
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /runs
operations:
- name: create-run
method: POST
- type: http
namespace: servicenow-infra
baseUri: https://mastercard.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-infra
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Extracts firewall rules from Palo Alto Networks, validates against compliance policies in Snowflake, and reports violations in ServiceNow.
naftiko: '0.5'
info:
label: Palo Alto Firewall Rule Audit Pipeline
description: Extracts firewall rules from Palo Alto Networks, validates against compliance policies in Snowflake, and reports violations in ServiceNow.
tags:
- security
- palo-alto-networks
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: firewall-audit
port: 8080
tools:
- name: audit-firewall-rules
description: Audit Palo Alto firewall rules against compliance policies.
inputParameters:
- name: firewall_id
in: body
type: string
description: Palo Alto firewall identifier.
steps:
- name: get-rules
type: call
call: paloalto-api.get-security-rules
with:
firewall_id: '{{firewall_id}}'
- name: check-compliance
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM security.firewall_policy_violations WHERE firewall_id = '{{firewall_id}}'
- name: report-violations
type: call
call: servicenow-api.create-incident
with:
short_description: 'Firewall audit: {{firewall_id}}'
description: 'Rules: {{get-rules.count}}. Violations: {{check-compliance.count}}.'
category: security_compliance
consumes:
- type: http
namespace: paloalto-api
baseUri: https://panorama.mastercard.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: rules
path: /Policies/SecurityRules
operations:
- name: get-security-rules
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Triggers a canary deployment via Harness, monitors error rates in Datadog, and rolls back or promotes based on results.
naftiko: '0.5'
info:
label: Harness Deployment Canary Pipeline
description: Triggers a canary deployment via Harness, monitors error rates in Datadog, and rolls back or promotes based on results.
tags:
- cicd
- harness
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: canary-deploy
port: 8080
tools:
- name: run-canary-deployment
description: Execute a canary deployment with automated validation.
inputParameters:
- name: service_name
in: body
type: string
description: Harness service name.
- name: artifact_version
in: body
type: string
description: Artifact version to deploy.
steps:
- name: trigger-canary
type: call
call: harness-api.trigger-pipeline
with:
service: '{{service_name}}'
version: '{{artifact_version}}'
- name: verify-health
type: call
call: datadog-api.query-metrics
with:
query: avg(last_5m):avg:http.error_rate{service:{{service_name}},version:{{artifact_version}}}
- name: log-deployment
type: call
call: servicenow-api.create-change
with:
short_description: 'Canary deploy: {{service_name}} v{{artifact_version}}'
description: 'Error rate: {{verify-health.value}}%. Pipeline: {{trigger-canary.id}}.'
consumes:
- type: http
namespace: harness-api
baseUri: https://app.harness.io/gateway/api
authentication:
type: apikey
key: x-api-key
value: $secrets.harness_api_key
placement: header
resources:
- name: pipelines
path: /pipelines/execute
operations:
- name: trigger-pipeline
method: POST
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: servicenow-api
baseUri: https://mastercard.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
Fetches completed Figma designs, creates implementation tickets in Jira, and notifies engineering via Microsoft Teams.
naftiko: '0.5'
info:
label: Figma Design to Jira Handoff Pipeline
description: Fetches completed Figma designs, creates implementation tickets in Jira, and notifies engineering via Microsoft Teams.
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: design-handoff
port: 8080
tools:
- name: handoff-design-to-engineering
description: Create engineering tickets from completed design files.
inputParameters:
- name: file_key
in: body
type: string
description: Figma file key.
- name: project
in: body
type: string
description: Jira project key.
steps:
- name: get-design
type: call
call: figma-api.get-file
with:
file_key: '{{file_key}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: '{{project}}'
summary: 'Implement: {{get-design.name}}'
description: 'Figma: https://figma.com/file/{{file_key}}. Last modified: {{get-design.last_modified}}.'
- name: notify-eng
type: call
call: msteams-api.post-message
with:
team_id: engineering
channel_id: design-handoffs
message: 'New design handoff: {{get-design.name}}. Jira: {{create-ticket.key}}.'
consumes:
- type: http
namespace: figma-api
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
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Scans Box for documents exceeding retention policies, archives expired files, and logs actions in ServiceNow.
naftiko: '0.5'
info:
label: Box Document Retention Policy Pipeline
description: Scans Box for documents exceeding retention policies, archives expired files, and logs actions in ServiceNow.
tags:
- document-management
- box
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: document-retention
port: 8080
tools:
- name: enforce-retention-policy
description: Enforce document retention policies on Box files.
inputParameters:
- name: folder_id
in: body
type: string
description: Box folder identifier.
steps:
- name: scan-files
type: call
call: box-api.list-files
with:
folder_id: '{{folder_id}}'
- name: check-retention
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM compliance.retention_policies WHERE folder_id = '{{folder_id}}'
- name: log-actions
type: call
call: servicenow-api.create-incident
with:
short_description: 'Retention policy: folder {{folder_id}}'
description: 'Files scanned: {{scan-files.count}}. Expired: {{check-retention.expired_count}}.'
consumes:
- type: http
namespace: box-api
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: list-files
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Searches Confluence for payment network policy and procedure documents by keyword.
naftiko: '0.5'
info:
label: Confluence Policy Document Search
description: Searches Confluence for payment network policy and procedure documents by keyword.
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: search-policies
description: Search Confluence for policy documents by keyword.
inputParameters:
- name: query
in: body
type: string
description: Search keyword or phrase.
call: confluence-api.search
with:
query: '{{query}}'
consumes:
- type: http
namespace: confluence-api
baseUri: https://mastercard.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: search
path: /content/search
operations:
- name: search
method: GET
Triggers model retraining in Databricks, validates accuracy metrics in Snowflake, and notifies the data science team via Microsoft Teams.
naftiko: '0.5'
info:
label: Databricks ML Model Retraining Pipeline
description: Triggers model retraining in Databricks, validates accuracy metrics in Snowflake, and notifies the data science team via Microsoft Teams.
tags:
- ml-ops
- azure-databricks
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-retraining
port: 8080
tools:
- name: retrain-fraud-model
description: Retrain a fraud detection model and validate its performance.
inputParameters:
- name: model_name
in: body
type: string
description: ML model name.
steps:
- name: trigger-training
type: call
call: databricks-api.run-job
with:
job_id: retrain-{{model_name}}
- name: validate-metrics
type: call
call: snowflake-api.run-query
with:
query: SELECT accuracy, precision, recall FROM ml.model_metrics WHERE model = '{{model_name}}' ORDER BY trained_at DESC LIMIT 1
- name: notify-team
type: call
call: msteams-api.post-message
with:
team_id: data-science
channel_id: ml-ops
message: 'Model {{model_name}} retrained. Accuracy: {{validate-metrics.accuracy}}. Precision: {{validate-metrics.precision}}.'
consumes:
- type: http
namespace: databricks-api
baseUri: https://mastercard.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: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Monitors SageMaker inference endpoint health, detects drift in Datadog, and creates retraining tickets in Jira.
naftiko: '0.5'
info:
label: Amazon SageMaker Model Endpoint Monitor
description: Monitors SageMaker inference endpoint health, detects drift in Datadog, and creates retraining tickets in Jira.
tags:
- ml-ops
- amazon-sagemaker
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: sagemaker-monitor
port: 8080
tools:
- name: monitor-sagemaker-endpoint
description: Monitor a SageMaker model endpoint for drift and degradation.
inputParameters:
- name: endpoint_name
in: body
type: string
description: SageMaker endpoint name.
steps:
- name: check-health
type: call
call: sagemaker-api.describe-endpoint
with:
endpoint_name: '{{endpoint_name}}'
- name: check-drift
type: call
call: datadog-api.query-metrics
with:
query: sagemaker.endpoint.model_latency{endpoint:{{endpoint_name}}}
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: MLOPS
summary: 'Model drift: {{endpoint_name}}'
description: 'Status: {{check-health.status}}. Latency: {{check-drift.value}}ms.'
consumes:
- type: http
namespace: sagemaker-api
baseUri: https://api.sagemaker.us-east-1.amazonaws.com
authentication:
type: apikey
key: Authorization
value: $secrets.aws_sig_v4
placement: header
resources:
- name: endpoints
path: /
operations:
- name: describe-endpoint
method: POST
- type: http
namespace: datadog-api
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
operations:
- name: query-metrics
method: GET
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Extracts merchant performance from Snowflake, generates review reports in Power BI, and creates review tasks in Jira.
naftiko: '0.5'
info:
label: Quarterly Merchant Review Automation
description: Extracts merchant performance from Snowflake, generates review reports in Power BI, and creates review tasks in Jira.
tags:
- merchant-management
- snowflake
- power-bi
- jira
capability:
exposes:
- type: mcp
namespace: merchant-review
port: 8080
tools:
- name: generate-quarterly-review
description: Automate quarterly merchant performance reviews.
inputParameters:
- name: quarter
in: body
type: string
description: Quarter (e.g. Q1-2026).
- name: region
in: body
type: string
description: Region code.
steps:
- name: get-performance
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM merchants.quarterly_performance WHERE quarter = '{{quarter}}' AND region = '{{region}}'
- name: refresh-report
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: merchant-review-{{region}}
- name: create-reviews
type: call
call: jira-api.create-issue
with:
project: MERCHANTS
summary: 'Quarterly review: {{region}} {{quarter}}'
description: 'Merchants reviewed: {{get-performance.count}}. Top performer: {{get-performance.top.name}}.'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi-api
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: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Pulls employer brand metrics from LinkedIn, stores in Snowflake, and creates recruitment insights in Confluence.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Analytics Pipeline
description: Pulls employer brand metrics from LinkedIn, stores in Snowflake, and creates recruitment insights in Confluence.
tags:
- recruiting
- linkedin
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: employer-brand
port: 8080
tools:
- name: analyze-employer-brand
description: Analyze employer brand performance and generate insights.
inputParameters:
- name: date_range
in: body
type: string
description: Date range for analysis.
steps:
- name: get-metrics
type: call
call: linkedin-api.get-brand-metrics
with:
date_range: '{{date_range}}'
- name: store-data
type: call
call: snowflake-api.run-query
with:
query: INSERT INTO hr.employer_brand (impressions, followers, apply_rate) VALUES ({{get-metrics.impressions}}, {{get-metrics.followers}}, {{get-metrics.apply_rate}})
- name: publish-insights
type: call
call: confluence-api.create-page
with:
space: HR
title: 'Employer Brand Report: {{date_range}}'
body: 'Impressions: {{get-metrics.impressions}}. Followers: {{get-metrics.followers}}. Apply rate: {{get-metrics.apply_rate}}%.'
consumes:
- type: http
namespace: linkedin-api
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: analytics
path: /organizationalEntityShareStatistics
operations:
- name: get-brand-metrics
method: GET
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: confluence-api
baseUri: https://mastercard.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Creates a new job requisition in Workday, assigns it to a recruiter, and notifies the hiring manager via Teams with details and a Workday link.
naftiko: '0.5'
info:
label: Workday Recruitment Requisition Opener
description: Creates a new job requisition in Workday, assigns it to a recruiter, and notifies the hiring manager via Teams with details and a Workday link.
tags:
- hr
- recruiting
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: talent-ops
port: 8080
tools:
- name: open-job-requisition
description: Given a job title, business unit, grade level, and hiring manager UPN, create a new job requisition in Workday and notify the hiring manager via Teams. Use when a new headcount is approved or a backfill is needed across Mastercard technology and business units.
inputParameters:
- name: job_title
in: body
type: string
description: Title of the role to be hired.
- name: business_unit
in: body
type: string
description: Mastercard business unit the role belongs to.
- name: grade_level
in: body
type: string
description: Compensation grade level for the role.
- name: hiring_manager_upn
in: body
type: string
description: UPN of the hiring manager sponsoring the requisition.
steps:
- name: create-req
type: call
call: workday-talent.create-requisition
with:
job_title: '{{job_title}}'
business_unit: '{{business_unit}}'
grade_level: '{{grade_level}}'
hiring_manager: '{{hiring_manager_upn}}'
- name: notify-hiring-manager
type: call
call: msteams-talent.send-message
with:
recipient_upn: '{{hiring_manager_upn}}'
text: 'Job requisition opened in Workday: {{job_title}} ({{business_unit}}, {{grade_level}}). Req ID: {{create-req.requisition_id}}. Talent acquisition will reach out shortly.'
consumes:
- type: http
namespace: workday-talent
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: requisitions
path: /mastercard/jobRequisitions
operations:
- name: create-requisition
method: POST
- type: http
namespace: msteams-talent
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
Retrieves merchant account details from Salesforce for payment network relationship management.
naftiko: '0.5'
info:
label: Salesforce Merchant Account Lookup
description: Retrieves merchant account details from Salesforce for payment network relationship management.
tags:
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce-merchant
port: 8080
tools:
- name: get-merchant-account
description: Look up a merchant account in Salesforce by ID.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account identifier.
call: salesforce-api.get-account
with:
account_id: '{{account_id}}'
consumes:
- type: http
namespace: salesforce-api
baseUri: https://mastercard.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
Audits MFA enrollment status in Okta, identifies non-compliant users via Workday, and sends enforcement notices via Microsoft Teams.
naftiko: '0.5'
info:
label: Okta MFA Enrollment Enforcement Pipeline
description: Audits MFA enrollment status in Okta, identifies non-compliant users via Workday, and sends enforcement notices via Microsoft Teams.
tags:
- security
- okta
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mfa-enforcement
port: 8080
tools:
- name: enforce-mfa-enrollment
description: Audit and enforce MFA enrollment across the organization.
inputParameters:
- name: department
in: body
type: string
description: Department to audit.
steps:
- name: get-enrollment
type: call
call: okta-api.get-mfa-status
with:
department: '{{department}}'
- name: get-employees
type: call
call: workday-api.list-workers
with:
department: '{{department}}'
- name: send-notice
type: call
call: msteams-api.post-message
with:
team_id: security-team
channel_id: mfa-compliance
message: 'MFA audit: {{department}}. Enrolled: {{get-enrollment.enrolled_count}}/{{get-employees.count}}. Non-compliant: {{get-enrollment.non_compliant_count}}.'
consumes:
- type: http
namespace: okta-api
baseUri: https://mastercard.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: factors
path: /users
operations:
- name: get-mfa-status
method: GET
- type: http
namespace: workday-api
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /mastercard/workers
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_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: post-message
method: POST
Detects infrastructure drift in Terraform Cloud, triggers remediation runs, and logs changes in ServiceNow.
naftiko: '0.5'
info:
label: Terraform Infrastructure Drift Remediation
description: Detects infrastructure drift in Terraform Cloud, triggers remediation runs, and logs changes in ServiceNow.
tags:
- infrastructure
- terraform
- servicenow
- jira
capability:
exposes:
- type: mcp
namespace: terraform-drift
port: 8080
tools:
- name: remediate-drift
description: Detect and remediate Terraform infrastructure drift.
inputParameters:
- name: workspace
in: body
type: string
description: Terraform workspace name.
steps:
- name: detect-drift
type: call
call: terraform-api.plan-run
with:
workspace: '{{workspace}}'
- name: apply-fix
type: call
call: terraform-api.apply-run
with:
run_id: '{{detect-drift.id}}'
- name: log-change
type: call
call: servicenow-api.create-change
with:
short_description: 'Terraform drift remediation: {{workspace}}'
description: 'Resources drifted: {{detect-drift.resource_changes}}. Run ID: {{detect-drift.id}}.'
consumes:
- type: http
namespace: terraform-api
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /workspaces/{{workspace}}/runs
inputParameters:
- name: workspace
in: path
operations:
- name: plan-run
method: POST
- name: apply-run
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.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
Collects completed Jira issues for a release, generates formatted release notes in Confluence, and notifies stakeholders via Microsoft Outlook.
naftiko: '0.5'
info:
label: Jira to Confluence Release Notes Generator
description: Collects completed Jira issues for a release, generates formatted release notes in Confluence, and notifies stakeholders via Microsoft Outlook.
tags:
- documentation
- jira
- confluence
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: release-notes
port: 8080
tools:
- name: generate-release-notes
description: Generate and publish release notes from Jira issues.
inputParameters:
- name: fix_version
in: body
type: string
description: Jira fix version.
- name: project
in: body
type: string
description: Jira project key.
steps:
- name: get-issues
type: call
call: jira-api.search-issues
with:
jql: project={{project}} AND fixVersion={{fix_version}} AND status=Done
- name: create-notes
type: call
call: confluence-api.create-page
with:
space: RELEASES
title: 'Release Notes: {{project}} {{fix_version}}'
body: 'Issues completed: {{get-issues.total}}. Features: {{get-issues.feature_count}}. Bugs fixed: {{get-issues.bug_count}}.'
- name: notify-stakeholders
type: call
call: outlook-api.send-mail
with:
to: stakeholders@mastercard.com
subject: 'Release Notes: {{project}} {{fix_version}}'
body: 'Release notes published: {{create-notes.url}}. {{get-issues.total}} issues completed.'
consumes:
- type: http
namespace: jira-api
baseUri: https://mastercard.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_password
resources:
- name: search
path: /search
operations:
- name: search-issues
method: GET
- type: http
namespace: confluence-api
baseUri: https://mastercard.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_password
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
- type: http
namespace: outlook-api
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
Calculates merchant risk scores in Snowflake, updates Salesforce records, and flags high-risk merchants in ServiceNow.
naftiko: '0.5'
info:
label: Merchant Risk Scoring Pipeline
description: Calculates merchant risk scores in Snowflake, updates Salesforce records, and flags high-risk merchants in ServiceNow.
tags:
- risk
- snowflake
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: merchant-risk
port: 8080
tools:
- name: score-merchant-risk
description: Calculate and update merchant risk scores.
inputParameters:
- name: merchant_id
in: body
type: string
description: Merchant identifier.
steps:
- name: calculate-score
type: call
call: snowflake-api.run-query
with:
query: CALL risk.calculate_merchant_score('{{merchant_id}}')
- name: update-crm
type: call
call: salesforce-api.update-account
with:
account_id: '{{merchant_id}}'
risk_score: '{{calculate-score.score}}'
- name: flag-high-risk
type: call
call: servicenow-api.create-incident
with:
short_description: 'High-risk merchant: {{merchant_id}}'
description: 'Risk score: {{calculate-score.score}}. Factors: {{calculate-score.top_factors}}.'
category: merchant_risk
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce-api
baseUri: https://mastercard.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: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Submits a technology change request in ServiceNow for payment network changes and notifies the Change Advisory Board via Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Management Submission
description: Submits a technology change request in ServiceNow for payment network changes and notifies the Change Advisory Board via Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: submit-network-change
description: Given a change title, description, risk level, and implementation window, create a ServiceNow change request for a payment network change and notify the CAB channel in Teams. Use for planned maintenance, configuration changes, and software releases on payment processing systems.
inputParameters:
- name: change_title
in: body
type: string
description: Short title of the change request.
- name: change_description
in: body
type: string
description: Full description of the change, risk, and rollback plan.
- name: risk_level
in: body
type: string
description: 'Change risk level: low, medium, or high.'
- name: implementation_window
in: body
type: string
description: Planned implementation date/time window in ISO 8601 format.
steps:
- name: create-change
type: call
call: servicenow-changes.create-change
with:
short_description: '{{change_title}}'
description: '{{change_description}}'
risk: '{{risk_level}}'
start_date: '{{implementation_window}}'
- name: notify-cab
type: call
call: msteams-cab.post-channel-message
with:
channel_id: change-advisory-board
text: 'New change request: {{create-change.number}} — {{change_title}} | Risk: {{risk_level}} | Window: {{implementation_window}} | Review in ServiceNow.'
consumes:
- type: http
namespace: servicenow-changes
baseUri: https://mastercard.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-cab
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Analyzes cross-border payment flows in Snowflake, detects anomalies in Databricks, and publishes insights to Power BI.
naftiko: '0.5'
info:
label: Snowflake Cross-Border Transaction Analytics
description: Analyzes cross-border payment flows in Snowflake, detects anomalies in Databricks, and publishes insights to Power BI.
tags:
- analytics
- snowflake
- azure-databricks
- power-bi
capability:
exposes:
- type: mcp
namespace: cross-border-analytics
port: 8080
tools:
- name: analyze-cross-border-flows
description: Analyze cross-border payment patterns and detect anomalies.
inputParameters:
- name: corridor
in: body
type: string
description: Payment corridor (e.g. US-EU, US-APAC).
steps:
- name: get-flows
type: call
call: snowflake-api.run-query
with:
query: SELECT * FROM payments.cross_border_summary WHERE corridor = '{{corridor}}'
- name: detect-anomalies
type: call
call: databricks-api.run-job
with:
job_id: cross-border-anomaly
parameters: corridor={{corridor}}
- name: refresh-dashboard
type: call
call: powerbi-api.refresh-dataset
with:
dataset_id: cross-border-analytics
consumes:
- type: http
namespace: snowflake-api
baseUri: https://mastercard.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: queries
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: databricks-api
baseUri: https://mastercard.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: powerbi-api
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
Lists all GitHub organization collaborators across repositories and cross-references against active Okta users to identify stale access and flag accounts for removal.
naftiko: '0.5'
info:
label: GitHub Repository Access Quarterly Audit
description: Lists all GitHub organization collaborators across repositories and cross-references against active Okta users to identify stale access and flag accounts for removal.
tags:
- security
- devops
- github
- okta
- access-audit
- compliance
capability:
exposes:
- type: mcp
namespace: repo-access-audit
port: 8080
tools:
- name: audit-github-access
description: Given a GitHub organization name, retrieve all repository collaborators and cross-reference with active Okta users to identify any deprovisioned or external accounts still holding repository access. Use for quarterly PCI-DSS access reviews and security compliance audits.
inputParameters:
- name: github_org
in: body
type: string
description: GitHub organization name to audit (e.g., Mastercard).
- name: repository
in: body
type: string
description: Repository name to check for stale collaborator access.
steps:
- name: get-collaborators
type: call
call: github-access.get-repo-collaborators
with:
org: '{{github_org}}'
repo: '{{repository}}'
- name: list-active-users
type: call
call: okta-access.list-active-users
with:
filter: status eq ACTIVE
consumes:
- type: http
namespace: github-access
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: collaborators
path: /repos/{owner}/{repo}/collaborators
inputParameters:
- name: owner
in: path
- name: repo
in: path
operations:
- name: get-repo-collaborators
method: GET
- type: http
namespace: okta-access
baseUri: https://mastercard.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users
operations:
- name: list-active-users
method: GET
Retrieves static application security testing results from Checkmarx for payment application code review.
naftiko: '0.5'
info:
label: Checkmarx Security Scan Results
description: Retrieves static application security testing results from Checkmarx for payment application code review.
tags:
- security
- checkmarx
capability:
exposes:
- type: mcp
namespace: checkmarx
port: 8080
tools:
- name: get-scan-results
description: Fetch SAST scan results for a Checkmarx project.
inputParameters:
- name: project_id
in: body
type: string
description: Checkmarx project identifier.
call: checkmarx-api.get-results
with:
project_id: '{{project_id}}'
consumes:
- type: http
namespace: checkmarx-api
baseUri: https://checkmarx.mastercard.com/cxrestapi
authentication:
type: bearer
token: $secrets.checkmarx_token
resources:
- name: results
path: /projects/{{project_id}}/results
inputParameters:
- name: project_id
in: path
operations:
- name: get-results
method: GET
Retrieves a submitted SAP Concur expense report and notifies the approver via Teams with a summary and direct approval link.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Approval Flow
description: Retrieves a submitted SAP Concur expense report and notifies the approver via Teams with a summary and direct approval link.
tags:
- finance
- expense-management
- sap-concur
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: notify-expense-approver
description: Given a SAP Concur expense report ID and approver UPN, retrieve the report details and send the approver a Teams notification with a cost summary and direct link to review. Use when an employee submits a travel or business expense report requiring manager approval.
inputParameters:
- name: expense_report_id
in: body
type: string
description: The SAP Concur expense report ID to retrieve and surface for approval.
- name: approver_upn
in: body
type: string
description: UPN of the approving manager.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{expense_report_id}}'
- name: notify-approver
type: call
call: msteams-concur.send-message
with:
recipient_upn: '{{approver_upn}}'
text: 'Expense approval needed: {{get-report.employee_name}} submitted ${{get-report.total_amount}} for {{get-report.purpose}}. Report ID: {{expense_report_id}}. Approve at: {{get-report.approval_url}}'
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: msteams-concur
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
Retrieves design file metadata from Figma for payment product UI/UX design review and versioning.
naftiko: '0.5'
info:
label: Figma Design File Lookup
description: Retrieves design file metadata from Figma for payment product UI/UX design review and versioning.
tags:
- design
- figma
capability:
exposes:
- type: mcp
namespace: figma
port: 8080
tools:
- name: get-design-file
description: Fetch metadata for a Figma design file.
inputParameters:
- name: file_key
in: body
type: string
description: Figma file key.
call: figma-api.get-file
with:
file_key: '{{file_key}}'
consumes:
- type: http
namespace: figma-api
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
When a critical Datadog alert fires on payment processing infrastructure, creates a ServiceNow P1 incident, pages the on-call engineer, and posts an alert to the network operations Teams channel.
naftiko: '0.5'
info:
label: Payment Network Incident Response
description: When a critical Datadog alert fires on payment processing infrastructure, creates a ServiceNow P1 incident, pages the on-call engineer, and posts an alert to the network operations Teams channel.
tags:
- itsm
- incident-response
- datadog
- servicenow
- microsoft-teams
- payments
capability:
exposes:
- type: mcp
namespace: network-ops
port: 8080
tools:
- name: handle-payment-network-incident
description: Given a Datadog alert for payment network infrastructure, create a ServiceNow P1 incident, assign it to the on-call payments SRE team, and alert the NOC Teams channel. Invoke immediately when any payment processing or authorization service alert fires.
inputParameters:
- name: monitor_name
in: body
type: string
description: The Datadog monitor name that triggered the alert.
- name: severity
in: body
type: string
description: 'Alert severity level: critical or high.'
- name: affected_service
in: body
type: string
description: The payment service or network component affected.
- name: alert_url
in: body
type: string
description: Direct URL to the Datadog alert event.
steps:
- name: create-incident
type: call
call: servicenow-p1.create-incident
with:
short_description: '[P1] Payment network alert: {{monitor_name}} — {{affected_service}}'
urgency: '1'
category: payment_infrastructure
assigned_group: Payments_SRE
- name: post-noc-alert
type: call
call: msteams-noc.post-channel-message
with:
channel_id: network-operations-center
text: 'PAYMENT NETWORK INCIDENT {{create-incident.number}}: {{monitor_name}} | Service: {{affected_service}} | Severity: {{severity}} | Alert: {{alert_url}}'
consumes:
- type: http
namespace: servicenow-p1
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-noc
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{team_id}/channels/{channel_id}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Detects Databricks job failures, restarts pipelines, and creates incident tickets in ServiceNow.
naftiko: '0.5'
info:
label: Databricks ETL Pipeline Failure Handler
description: Detects Databricks job failures, restarts pipelines, and creates incident tickets in ServiceNow.
tags:
- data-engineering
- azure-databricks
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: etl-failure
port: 8080
tools:
- name: handle-etl-failure
description: Detect, restart, and track Databricks ETL pipeline failures.
inputParameters:
- name: job_id
in: body
type: string
description: Databricks job identifier.
steps:
- name: get-status
type: call
call: databricks-api.get-run
with:
job_id: '{{job_id}}'
- name: restart-job
type: call
call: databricks-api.run-job
with:
job_id: '{{job_id}}'
- name: create-incident
type: call
call: servicenow-api.create-incident
with:
short_description: 'ETL failure: job {{job_id}}'
description: 'Status: {{get-status.state}}. Error: {{get-status.error}}. Restarted: {{restart-job.run_id}}.'
consumes:
- type: http
namespace: databricks-api
baseUri: https://mastercard.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/runs/get
operations:
- name: get-run
method: GET
- name: run-job
method: POST
- type: http
namespace: servicenow-api
baseUri: https://mastercard.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Checks the health and node status of an Azure Kubernetes Service cluster hosting payment microservices.
naftiko: '0.5'
info:
label: Azure Kubernetes Cluster Health Check
description: Checks the health and node status of an Azure Kubernetes Service cluster hosting payment microservices.
tags:
- infrastructure
- azure-kubernetes-service
capability:
exposes:
- type: mcp
namespace: aks
port: 8080
tools:
- name: check-cluster-health
description: Retrieve the health status of an AKS cluster.
inputParameters:
- name: cluster_name
in: body
type: string
description: AKS cluster name.
call: aks-api.get-cluster
with:
cluster_name: '{{cluster_name}}'
consumes:
- type: http
namespace: aks-api
baseUri: https://management.azure.com/subscriptions
authentication:
type: bearer
token: $secrets.azure_management_token
resources:
- name: clusters
path: /resourceGroups/mc-prod/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}
inputParameters:
- name: cluster_name
in: path
operations:
- name: get-cluster
method: GET
Checks the health of the Moody's analytics platform by querying Datadog for key infrastructure metrics including CPU, memory, and error rates.
naftiko: '0.5'
info:
label: Datadog Analytics Platform Health Check
description: Checks the health of the Moody's analytics platform by querying Datadog for key infrastructure metrics including CPU, memory, and error rates.
tags:
- monitoring
- infrastructure
- datadog
capability:
exposes:
- type: mcp
namespace: platform-health
port: 8080
tools:
- name: check-platform-health
description: Retrieve analytics platform health metrics from Datadog.
inputParameters:
- name: service_name
in: body
type: string
description: The service name to check.
call: datadog.get-metrics
with:
service_name: '{{service_name}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
header: DD-API-KEY
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /query?query=avg:system.cpu.user{service:{{service_name}}}
inputParameters:
- name: service_name
in: query
operations:
- name: get-metrics
method: GET
Generates economic forecast dashboards by pulling macroeconomic data from Snowflake, refreshing Power BI visualizations, uploading commentary to Confluence, and notifying the economics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Economic Forecast Dashboard Pipeline
description: Generates economic forecast dashboards by pulling macroeconomic data from Snowflake, refreshing Power BI visualizations, uploading commentary to Confluence, and notifying the economics team via Microsoft Teams.
tags:
- research
- economics
- snowflake
- power-bi
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: economic-forecasts
port: 8080
tools:
- name: generate-economic-forecast
description: Given a region and forecast type, generate the economic forecast dashboard.
inputParameters:
- name: region
in: body
type: string
description: The geographic region.
- name: forecast_type
in: body
type: string
description: Forecast type (gdp, inflation, unemployment, rates).
steps:
- name: pull-macro-data
type: call
call: snowflake.execute-query
with:
region: '{{region}}'
forecast_type: '{{forecast_type}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: economic-forecast-dataset
- name: publish-commentary
type: call
call: confluence.create-page
with:
space_key: ECON
title: 'Economic Forecast: {{region}} - {{forecast_type}}'
body: '{{region}} {{forecast_type}} forecast updated with {{pull-macro-data.rowCount}} data points.'
- name: notify-economics
type: call
call: msteams.post-message
with:
team_id: economics-team
channel_id: forecasts
message: 'Economic forecast for {{region}} ({{forecast_type}}) updated. Dashboard refreshed. Commentary: {{publish-commentary._links.webui}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: confluence
baseUri: https://moodys.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-message
method: POST
Queries the debt maturity profile for an issuer from Snowflake, returning outstanding amounts by maturity bucket and currency.
naftiko: '0.5'
info:
label: Debt Maturity Profile Query
description: Queries the debt maturity profile for an issuer from Snowflake, returning outstanding amounts by maturity bucket and currency.
tags:
- fixed-income
- maturity
- snowflake
capability:
exposes:
- type: mcp
namespace: debt-maturity
port: 8080
tools:
- name: get-maturity-profile
description: Retrieve debt maturity profile by issuer ID.
inputParameters:
- name: issuer_id
in: body
type: string
description: The issuer identifier.
call: snowflake.get-maturity-profile
with:
issuer_id: '{{issuer_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-maturity-profile
method: POST
Retrieves a company's risk assessment score from the analytics platform, including probability of default, loss given default, and credit score.
naftiko: '0.5'
info:
label: Risk Assessment Score Retrieval
description: Retrieves a company's risk assessment score from the analytics platform, including probability of default, loss given default, and credit score.
tags:
- risk-analytics
- credit-risk
- snowflake
capability:
exposes:
- type: mcp
namespace: risk-scores
port: 8080
tools:
- name: get-risk-score
description: Look up a risk assessment score by company identifier. Returns PD, LGD, and composite score.
inputParameters:
- name: company_id
in: body
type: string
description: The company identifier.
call: snowflake.get-risk-score
with:
company_id: '{{company_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-risk-score
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 15
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Computes ESG scores by pulling environmental, social, and governance data from Snowflake, running scoring models in Databricks, updating Salesforce records, and publishing results to Confluence.
naftiko: '0.5'
info:
label: ESG Score Computation Pipeline
description: Computes ESG scores by pulling environmental, social, and governance data from Snowflake, running scoring models in Databricks, updating Salesforce records, and publishing results to Confluence.
tags:
- risk-analytics
- esg
- snowflake
- databricks
- salesforce
- confluence
capability:
exposes:
- type: mcp
namespace: esg-scoring
port: 8080
tools:
- name: compute-esg-score
description: Given an entity ID, compute comprehensive ESG scores.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: assessment_year
in: body
type: string
description: The assessment year.
steps:
- name: pull-esg-data
type: call
call: snowflake.execute-query
with:
entity_id: '{{entity_id}}'
year: '{{assessment_year}}'
- name: run-scoring-model
type: call
call: databricks.invoke-model
with:
endpoint_name: esg-scoring-model
entity_id: '{{entity_id}}'
- name: store-scores
type: call
call: salesforce.update-esg-score
with:
entity_id: '{{entity_id}}'
e_score: '{{run-scoring-model.environmental_score}}'
s_score: '{{run-scoring-model.social_score}}'
g_score: '{{run-scoring-model.governance_score}}'
- name: publish-assessment
type: call
call: confluence.create-page
with:
space_key: ESG
title: 'ESG Assessment: {{entity_id}} - {{assessment_year}}'
body: 'E: {{run-scoring-model.environmental_score}}, S: {{run-scoring-model.social_score}}, G: {{run-scoring-model.governance_score}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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: databricks
baseUri: https://moodys.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-serving
path: /serving-endpoints/{{endpoint_name}}/invocations
inputParameters:
- name: endpoint_name
in: path
operations:
- name: invoke-model
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: esg-scores
path: /sobjects/ESG_Score__c/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: update-esg-score
method: PATCH
- type: http
namespace: confluence
baseUri: https://moodys.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 operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 14
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Generates a portfolio concentration report by querying Snowflake for sector and geography exposure, then storing the report in SharePoint and notifying the portfolio team via Microsoft Teams.
naftiko: '0.5'
info:
label: Credit Portfolio Concentration Report
description: Generates a portfolio concentration report by querying Snowflake for sector and geography exposure, then storing the report in SharePoint and notifying the portfolio team via Microsoft Teams.
tags:
- portfolio
- concentration
- snowflake
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: portfolio-concentration
port: 8080
tools:
- name: generate-concentration-report
description: Given a portfolio ID, generate sector and geography concentration analysis.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio identifier.
- name: as_of_date
in: body
type: string
description: The as-of date in YYYY-MM-DD format.
steps:
- name: pull-exposure-data
type: call
call: snowflake.execute-query
with:
portfolio_id: '{{portfolio_id}}'
as_of_date: '{{as_of_date}}'
- name: store-report
type: call
call: sharepoint.create-folder
with:
site_id: analytics_site
folder_path: Concentration/{{portfolio_id}}/{{as_of_date}}
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: portfolio-team
channel_id: reports
message: 'Concentration report ready for portfolio {{portfolio_id}} as of {{as_of_date}}. Location: {{store-report.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 10
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Retrieves the current credit rating for an entity by identifier from the Moody's ratings database, returning rating, outlook, and last action date.
naftiko: '0.5'
info:
label: Credit Rating Lookup
description: Retrieves the current credit rating for an entity by identifier from the Moody's ratings database, returning rating, outlook, and last action date.
tags:
- credit-ratings
- ratings
- salesforce
capability:
exposes:
- type: mcp
namespace: credit-ratings
port: 8080
tools:
- name: get-credit-rating
description: Look up a credit rating by entity identifier. Returns current rating, outlook, and last rating action.
inputParameters:
- name: entity_id
in: body
type: string
description: The Moody's entity identifier.
call: salesforce.get-rating
with:
entity_id: '{{entity_id}}'
outputParameters:
- name: rating
type: string
mapping: $.records[0].Current_Rating__c
- name: outlook
type: string
mapping: $.records[0].Rating_Outlook__c
- name: last_action_date
type: string
mapping: $.records[0].Last_Action_Date__c
consumes:
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: ratings
path: /query/?q=SELECT+Current_Rating__c,Rating_Outlook__c,Last_Action_Date__c+FROM+Credit_Rating__c+WHERE+Entity_ID__c='{{entity_id}}'
inputParameters:
- name: entity_id
in: query
operations:
- name: get-rating
method: GET
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 11
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 9
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- box
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-9
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 13
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Retrieves compensation benchmarking data from Workday for a specified job family and location, returning salary ranges and market comparisons.
naftiko: '0.5'
info:
label: Workday Compensation Benchmarking
description: Retrieves compensation benchmarking data from Workday for a specified job family and location, returning salary ranges and market comparisons.
tags:
- hr
- compensation
- workday
capability:
exposes:
- type: mcp
namespace: compensation-benchmark
port: 8080
tools:
- name: get-comp-benchmark
description: Look up compensation benchmarks by job family and location.
inputParameters:
- name: job_family
in: body
type: string
description: The job family group.
- name: location
in: body
type: string
description: The location code.
call: workday.get-compensation
with:
job_family: '{{job_family}}'
location: '{{location}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/moodys
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation
path: /compensation?jobFamily={{job_family}}&location={{location}}
inputParameters:
- name: job_family
in: query
- name: location
in: query
operations:
- name: get-compensation
method: GET
Retrieves counterparty credit exposure data from Snowflake, returning gross and net exposure, collateral held, and exposure-at-default.
naftiko: '0.5'
info:
label: Counterparty Exposure Lookup
description: Retrieves counterparty credit exposure data from Snowflake, returning gross and net exposure, collateral held, and exposure-at-default.
tags:
- credit-risk
- counterparty
- snowflake
capability:
exposes:
- type: mcp
namespace: counterparty-exposure
port: 8080
tools:
- name: get-counterparty-exposure
description: Look up counterparty exposure by counterparty ID.
inputParameters:
- name: counterparty_id
in: body
type: string
description: The counterparty identifier.
call: snowflake.get-exposure
with:
counterparty_id: '{{counterparty_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-exposure
method: POST
Checks the status of a deployed ML model endpoint in Databricks used for credit risk scoring and default prediction.
naftiko: '0.5'
info:
label: Databricks Model Endpoint Status
description: Checks the status of a deployed ML model endpoint in Databricks used for credit risk scoring and default prediction.
tags:
- risk-analytics
- databricks
- machine-learning
capability:
exposes:
- type: mcp
namespace: ml-models
port: 8080
tools:
- name: get-model-status
description: Check the status of a Databricks model serving endpoint.
inputParameters:
- name: endpoint_name
in: body
type: string
description: The model serving endpoint name.
call: databricks.get-endpoint
with:
endpoint_name: '{{endpoint_name}}'
consumes:
- type: http
namespace: databricks
baseUri: https://moodys.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: endpoints
path: /serving-endpoints/{{endpoint_name}}
inputParameters:
- name: endpoint_name
in: path
operations:
- name: get-endpoint
method: GET
Generates sector outlook reports by querying industry data from Snowflake, pulling rating distribution from Salesforce, creating the report in Confluence, and distributing via SharePoint and Microsoft Teams.
naftiko: '0.5'
info:
label: Sector Outlook Report Pipeline
description: Generates sector outlook reports by querying industry data from Snowflake, pulling rating distribution from Salesforce, creating the report in Confluence, and distributing via SharePoint and Microsoft Teams.
tags:
- research
- sector-outlook
- snowflake
- salesforce
- confluence
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sector-outlook
port: 8080
tools:
- name: generate-sector-outlook
description: Given a sector and period, generate a comprehensive sector outlook report.
inputParameters:
- name: sector
in: body
type: string
description: The sector name.
- name: outlook_period
in: body
type: string
description: The outlook period (e.g., 2026-H2).
steps:
- name: pull-industry-data
type: call
call: snowflake.execute-query
with:
sector: '{{sector}}'
period: '{{outlook_period}}'
- name: get-rating-distribution
type: call
call: salesforce.get-sector-ratings
with:
sector: '{{sector}}'
- name: create-report
type: call
call: confluence.create-page
with:
space_key: RESEARCH
title: 'Sector Outlook: {{sector}} - {{outlook_period}}'
body: 'Sector: {{sector}}. Entities: {{pull-industry-data.rowCount}}. Rating distribution: {{get-rating-distribution.distribution}}.'
- name: upload-data
type: call
call: sharepoint.create-folder
with:
site_id: research_site
folder_path: SectorOutlooks/{{sector}}/{{outlook_period}}
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: research-team
channel_id: sector-outlook
message: 'Sector outlook for {{sector}} ({{outlook_period}}) published. Report: {{create-report._links.webui}}. Data: {{upload-data.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sector-ratings
path: /query/?q=SELECT+Current_Rating__c,COUNT(Id)+FROM+Credit_Rating__c+WHERE+Sector__c='{{sector}}'+GROUP+BY+Current_Rating__c
inputParameters:
- name: sector
in: query
operations:
- name: get-sector-ratings
method: GET
- type: http
namespace: confluence
baseUri: https://moodys.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 12
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 8
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-8
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://moodys-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 a credit rating action by updating the rating in Salesforce, publishing the research note to Confluence, distributing market data via Bloomberg, and notifying the ratings team via Microsoft Teams.
naftiko: '0.5'
info:
label: Rating Action Publication Workflow
description: Orchestrates a credit rating action by updating the rating in Salesforce, publishing the research note to Confluence, distributing market data via Bloomberg, and notifying the ratings team via Microsoft Teams.
tags:
- credit-ratings
- publication
- salesforce
- confluence
- bloomberg-enterprise-data
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: rating-actions
port: 8080
tools:
- name: publish-rating-action
description: Given an entity and new rating, update all systems and publish the action.
inputParameters:
- name: entity_id
in: body
type: string
description: The rated entity identifier.
- name: new_rating
in: body
type: string
description: The new credit rating.
- name: outlook
in: body
type: string
description: The rating outlook (stable, positive, negative).
- name: rationale
in: body
type: string
description: Brief rationale for the rating action.
steps:
- name: update-rating
type: call
call: salesforce.update-rating
with:
entity_id: '{{entity_id}}'
new_rating: '{{new_rating}}'
outlook: '{{outlook}}'
- name: publish-research-note
type: call
call: confluence.create-page
with:
space_key: RATINGS
title: 'Rating Action: {{entity_id}} - {{new_rating}}'
body: 'Rating changed to {{new_rating}} with {{outlook}} outlook. Rationale: {{rationale}}.'
- name: distribute-data
type: call
call: bloomberg.publish-rating
with:
entity_id: '{{entity_id}}'
rating: '{{new_rating}}'
outlook: '{{outlook}}'
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: ratings-team
channel_id: rating-actions
message: 'Rating action published: {{entity_id}} -> {{new_rating}} ({{outlook}}). Research note: {{publish-research-note._links.webui}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: ratings
path: /sobjects/Credit_Rating__c/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: update-rating
method: PATCH
- type: http
namespace: confluence
baseUri: https://moodys.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: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: rating-feed
path: /ratings/publish
operations:
- name: publish-rating
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 5
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 27
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- slack
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-27
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#financial-services'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 33
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- box
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-33
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 32
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-32
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://moodys-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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 26
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-26
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://moodys.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 4
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 6
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 30
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- jira
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-30
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FINA
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 24
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-24
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: financial-services.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 18
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- jira
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-18
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FINA
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Executes a credit risk model by pulling financial data from Snowflake, running the model in Databricks, storing results in Salesforce, and notifying the analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Credit Risk Model Execution Pipeline
description: Executes a credit risk model by pulling financial data from Snowflake, running the model in Databricks, storing results in Salesforce, and notifying the analytics team via Microsoft Teams.
tags:
- risk-analytics
- credit-risk
- snowflake
- databricks
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-modeling
port: 8080
tools:
- name: run-credit-risk-model
description: Given a portfolio ID, execute the credit risk model pipeline.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio identifier.
- name: model_version
in: body
type: string
description: The model version to execute.
steps:
- name: pull-financial-data
type: call
call: snowflake.execute-query
with:
portfolio_id: '{{portfolio_id}}'
- name: run-model
type: call
call: databricks.invoke-model
with:
endpoint_name: credit-risk-model-{{model_version}}
portfolio_id: '{{portfolio_id}}'
- name: store-results
type: call
call: salesforce.update-risk-scores
with:
portfolio_id: '{{portfolio_id}}'
model_version: '{{model_version}}'
results: '{{run-model.predictions}}'
- name: notify-analytics
type: call
call: msteams.post-message
with:
team_id: analytics-team
channel_id: risk-models
message: Credit risk model v{{model_version}} executed for portfolio {{portfolio_id}}. {{pull-financial-data.rowCount}} entities scored. Results stored in Salesforce.
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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: databricks
baseUri: https://moodys.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-serving
path: /serving-endpoints/{{endpoint_name}}/invocations
inputParameters:
- name: endpoint_name
in: path
operations:
- name: invoke-model
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: risk-scores
path: /services/apexrest/risk/scores
operations:
- name: update-risk-scores
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Delivers client data feeds by extracting data from Snowflake, packaging it according to client specifications, uploading to the client's designated endpoint, and logging the delivery in Salesforce and ServiceNow.
naftiko: '0.5'
info:
label: Client Data Delivery Pipeline
description: Delivers client data feeds by extracting data from Snowflake, packaging it according to client specifications, uploading to the client's designated endpoint, and logging the delivery in Salesforce and ServiceNow.
tags:
- data
- data-delivery
- snowflake
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: data-delivery
port: 8080
tools:
- name: deliver-client-data
description: Given a client ID and data product, extract, package, and deliver the data feed.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce client account ID.
- name: data_product
in: body
type: string
description: The data product name.
- name: delivery_date
in: body
type: string
description: The delivery date in YYYY-MM-DD format.
steps:
- name: extract-data
type: call
call: snowflake.execute-query
with:
client_id: '{{client_id}}'
data_product: '{{data_product}}'
delivery_date: '{{delivery_date}}'
- name: log-in-salesforce
type: call
call: salesforce.create-delivery-log
with:
client_id: '{{client_id}}'
data_product: '{{data_product}}'
delivery_date: '{{delivery_date}}'
record_count: '{{extract-data.rowCount}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Data delivery: {{data_product}} for {{client_id}}'
category: data_delivery
description: Delivered {{extract-data.rowCount}} records of {{data_product}} to client {{client_id}} on {{delivery_date}}.
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: delivery-logs
path: /sobjects/Data_Delivery__c
operations:
- name: create-delivery-log
method: POST
- type: http
namespace: servicenow
baseUri: https://moodys.service-now.com/api/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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 19
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- teams
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-19
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: financial-services
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 25
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-25
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 31
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- teams
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-31
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: financial-services
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira implementation task, and notifies the change advisory board via Microsoft Teams.
naftiko: '0.5'
info:
label: IT Change Request Pipeline
description: Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira implementation task, and notifies the change advisory board via Microsoft Teams.
tags:
- it-service
- change-management
- servicenow
- confluence
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: submit-change-request
description: Given change details, create a ServiceNow change, link docs, and notify the CAB.
inputParameters:
- name: change_summary
in: body
type: string
description: Summary of the change.
- name: change_type
in: body
type: string
description: Type of change.
- name: doc_page_id
in: body
type: string
description: Confluence page ID.
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: '{{change_summary}}'
type: '{{change_type}}'
- name: get-doc
type: call
call: confluence.get-page
with:
page_id: '{{doc_page_id}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: ITOPS
summary: 'Implement: {{change_summary}}'
description: 'Change: {{create-change.number}}. Docs: {{get-doc._links.webui}}.'
issue_type: Task
- name: notify-cab
type: call
call: msteams.post-message
with:
team_id: it-team
channel_id: change-advisory
message: 'Change request {{create-change.number}}: {{change_summary}}. Type: {{change_type}}. Jira: {{create-task.key}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://moodys.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://moodys.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 7
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 3
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 35
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-35
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 21
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- box
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-21
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Retrieves structured finance deal details from Salesforce by deal ID, returning tranche structure, collateral type, and deal status.
naftiko: '0.5'
info:
label: Structured Finance Deal Tracker
description: Retrieves structured finance deal details from Salesforce by deal ID, returning tranche structure, collateral type, and deal status.
tags:
- structured-finance
- salesforce
capability:
exposes:
- type: mcp
namespace: structured-finance
port: 8080
tools:
- name: get-sf-deal-details
description: Look up structured finance deal by deal ID.
inputParameters:
- name: deal_id
in: body
type: string
description: The deal identifier.
call: salesforce.get-sf-deal
with:
deal_id: '{{deal_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: deals
path: /query/?q=SELECT+Deal_Name__c,Tranche_Structure__c,Collateral_Type__c,Status__c+FROM+SF_Deal__c+WHERE+Deal_ID__c='{{deal_id}}'
inputParameters:
- name: deal_id
in: query
operations:
- name: get-sf-deal
method: GET
Submits a batch of entities to a Databricks credit scoring model endpoint and returns predicted default probabilities and risk tiers.
naftiko: '0.5'
info:
label: Databricks Credit Model Scoring
description: Submits a batch of entities to a Databricks credit scoring model endpoint and returns predicted default probabilities and risk tiers.
tags:
- machine-learning
- credit-scoring
- databricks
capability:
exposes:
- type: mcp
namespace: credit-model
port: 8080
tools:
- name: score-entities
description: Submit entity batch to credit scoring model.
inputParameters:
- name: model_name
in: body
type: string
description: The model name.
- name: entity_ids
in: body
type: string
description: Comma-separated entity IDs to score.
call: databricks.invoke-model
with:
model_name: '{{model_name}}'
entity_ids: '{{entity_ids}}'
consumes:
- type: http
namespace: databricks
baseUri: https://moodys.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: serving-endpoints
path: /serving-endpoints/{{model_name}}/invocations
inputParameters:
- name: model_name
in: path
operations:
- name: invoke-model
method: POST
Searches Moody's research reports by keyword, sector, or entity from the Confluence knowledge base, returning matching report titles and links.
naftiko: '0.5'
info:
label: Research Report Search
description: Searches Moody's research reports by keyword, sector, or entity from the Confluence knowledge base, returning matching report titles and links.
tags:
- research
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: research-reports
port: 8080
tools:
- name: search-research-reports
description: Search research reports by keyword. Returns report titles, authors, and URLs.
inputParameters:
- name: query
in: body
type: string
description: Search keyword or phrase.
call: confluence.search-content
with:
query: '{{query}}'
consumes:
- type: http
namespace: confluence
baseUri: https://moodys.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: content
path: /content/search?cql=text~'{{query}}'+and+space=RESEARCH
inputParameters:
- name: query
in: query
operations:
- name: search-content
method: GET
Retrieves pending travel approval requests for credit analysts from SAP Concur, returning trip details, estimated cost, and approval status.
naftiko: '0.5'
info:
label: SAP Concur Analyst Travel Approval
description: Retrieves pending travel approval requests for credit analysts from SAP Concur, returning trip details, estimated cost, and approval status.
tags:
- travel
- expense
- sap-concur
capability:
exposes:
- type: mcp
namespace: travel-approvals
port: 8080
tools:
- name: get-travel-requests
description: Retrieve pending travel requests for an analyst.
inputParameters:
- name: analyst_id
in: body
type: string
description: The analyst employee ID.
call: concur.get-travel-requests
with:
analyst_id: '{{analyst_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: travel-requests
path: /travelrequest/requests?owner={{analyst_id}}&status=PENDING
inputParameters:
- name: analyst_id
in: query
operations:
- name: get-travel-requests
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 20
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-20
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://moodys-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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 34
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-34
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://moodys.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 2
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 22
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-22
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://moodys.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Fetches current bond spread data for an issuer from Bloomberg Enterprise Data, returning option-adjusted spread, Z-spread, and benchmark yield.
naftiko: '0.5'
info:
label: Bond Spread Lookup
description: Fetches current bond spread data for an issuer from Bloomberg Enterprise Data, returning option-adjusted spread, Z-spread, and benchmark yield.
tags:
- fixed-income
- spreads
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: bond-spreads
port: 8080
tools:
- name: get-bond-spread
description: Look up bond spread data by issuer identifier.
inputParameters:
- name: issuer_id
in: body
type: string
description: The issuer identifier.
call: bloomberg.get-spread
with:
issuer_id: '{{issuer_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: spreads
path: /spreads?identifier={{issuer_id}}
inputParameters:
- name: issuer_id
in: query
operations:
- name: get-spread
method: GET
Searches the Moody's methodology knowledge base in Confluence for rating methodology documents by keyword, returning titles, authors, and publication dates.
naftiko: '0.5'
info:
label: Confluence Methodology Document Search
description: Searches the Moody's methodology knowledge base in Confluence for rating methodology documents by keyword, returning titles, authors, and publication dates.
tags:
- methodology
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: methodology-docs
port: 8080
tools:
- name: search-methodologies
description: Search methodology documents by keyword.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: confluence.search-methodologies
with:
keyword: '{{keyword}}'
consumes:
- type: http
namespace: confluence
baseUri: https://moodys.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: methodology-content
path: /content/search?cql=text~'{{keyword}}'+and+space=METHODOLOGY
inputParameters:
- name: keyword
in: query
operations:
- name: search-methodologies
method: GET
Executes a parameterized query against the Snowflake data warehouse for financial statement data, credit metrics, and economic indicators.
naftiko: '0.5'
info:
label: Snowflake Financial Data Query
description: Executes a parameterized query against the Snowflake data warehouse for financial statement data, credit metrics, and economic indicators.
tags:
- data
- snowflake
- financial-data
capability:
exposes:
- type: mcp
namespace: financial-data
port: 8080
tools:
- name: query-financial-data
description: Query Snowflake for financial data by entity and metric type.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: metric_type
in: body
type: string
description: The metric type (e.g., financials, credit_metrics, economic).
call: snowflake.execute-query
with:
entity_id: '{{entity_id}}'
metric_type: '{{metric_type}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 23
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-23
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Monitors rated issuers for credit events by querying market data from Bloomberg, checking financial triggers in Snowflake, creating a surveillance case in ServiceNow, and alerting the ratings team via Microsoft Teams.
naftiko: '0.5'
info:
label: Issuer Surveillance Alert Pipeline
description: Monitors rated issuers for credit events by querying market data from Bloomberg, checking financial triggers in Snowflake, creating a surveillance case in ServiceNow, and alerting the ratings team via Microsoft Teams.
tags:
- credit-ratings
- surveillance
- bloomberg-enterprise-data
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: issuer-surveillance
port: 8080
tools:
- name: check-issuer-surveillance
description: Given an entity ID, check for credit event triggers and alert if needed.
inputParameters:
- name: entity_id
in: body
type: string
description: The rated entity identifier.
- name: trigger_type
in: body
type: string
description: Type of trigger to check (spread_widening, downgrade_trigger, covenant_breach).
steps:
- name: get-market-signals
type: call
call: bloomberg.get-pricing
with:
identifier: '{{entity_id}}'
identifier_type: ENTITY
- name: check-financial-triggers
type: call
call: snowflake.execute-query
with:
entity_id: '{{entity_id}}'
trigger_type: '{{trigger_type}}'
- name: create-surveillance-case
type: call
call: servicenow.create-incident
with:
short_description: 'Surveillance alert: {{entity_id}} - {{trigger_type}}'
category: issuer_surveillance
description: 'Trigger: {{trigger_type}}. Market signal: {{get-market-signals.spread}}. Financial check: {{check-financial-triggers.trigger_status}}.'
- name: alert-ratings-team
type: call
call: msteams.post-message
with:
team_id: ratings-team
channel_id: surveillance
message: 'SURVEILLANCE ALERT: {{entity_id}} triggered {{trigger_type}}. Case: {{create-surveillance-case.number}}. Spread: {{get-market-signals.spread}}.'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: pricing
path: /pricing?identifier={{identifier}}&identifierType={{identifier_type}}
inputParameters:
- name: identifier
in: query
- name: identifier_type
in: query
operations:
- name: get-pricing
method: GET
- type: http
namespace: snowflake
baseUri: https://moodys.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://moodys.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 1
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Publishes a research report by creating the document in Confluence, uploading supporting data to SharePoint, updating the Salesforce research catalog, and notifying subscribers via Microsoft Teams.
naftiko: '0.5'
info:
label: Research Report Publishing Pipeline
description: Publishes a research report by creating the document in Confluence, uploading supporting data to SharePoint, updating the Salesforce research catalog, and notifying subscribers via Microsoft Teams.
tags:
- research
- publication
- confluence
- sharepoint
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: research-publishing
port: 8080
tools:
- name: publish-research-report
description: Given report details, publish across Confluence, SharePoint, and Salesforce, then notify subscribers.
inputParameters:
- name: report_title
in: body
type: string
description: The research report title.
- name: sector
in: body
type: string
description: The sector covered.
- name: analyst_id
in: body
type: string
description: The lead analyst's employee ID.
- name: report_type
in: body
type: string
description: Type of report (sector_update, issuer_comment, methodology).
steps:
- name: create-report-page
type: call
call: confluence.create-page
with:
space_key: RESEARCH
title: '{{report_title}}'
body: 'Sector: {{sector}}. Type: {{report_type}}. Analyst: {{analyst_id}}.'
- name: upload-data
type: call
call: sharepoint.create-folder
with:
site_id: research_site
folder_path: Reports/{{sector}}/{{report_title}}
- name: update-catalog
type: call
call: salesforce.create-research-entry
with:
title: '{{report_title}}'
sector: '{{sector}}'
analyst_id: '{{analyst_id}}'
type: '{{report_type}}'
url: '{{create-report-page._links.webui}}'
- name: notify-subscribers
type: call
call: msteams.post-message
with:
team_id: research-team
channel_id: publications
message: 'New research report: {{report_title}} ({{sector}} - {{report_type}}). Read: {{create-report-page._links.webui}}.'
consumes:
- type: http
namespace: confluence
baseUri: https://moodys.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: 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: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: research-entries
path: /sobjects/Research_Report__c
operations:
- name: create-research-entry
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 12
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-12
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: financial-services.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Prepares regulatory compliance filings by extracting compliance data from Snowflake, generating filing documents in SharePoint, creating a review task in Jira, and notifying the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Compliance Filing Workflow
description: Prepares regulatory compliance filings by extracting compliance data from Snowflake, generating filing documents in SharePoint, creating a review task in Jira, and notifying the compliance team via Microsoft Teams.
tags:
- compliance
- regulatory
- snowflake
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-compliance
port: 8080
tools:
- name: prepare-compliance-filing
description: Given a filing type and period, extract data, generate documents, and route for review.
inputParameters:
- name: filing_type
in: body
type: string
description: The regulatory filing type (e.g., SEC, ESMA, annual_report).
- name: reporting_period
in: body
type: string
description: The reporting period.
steps:
- name: extract-compliance-data
type: call
call: snowflake.execute-query
with:
filing_type: '{{filing_type}}'
period: '{{reporting_period}}'
- name: generate-filing-docs
type: call
call: sharepoint.create-folder
with:
site_id: compliance_site
folder_path: Filings/{{filing_type}}/{{reporting_period}}
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: COMP
summary: 'Compliance filing: {{filing_type}} - {{reporting_period}}'
description: 'Data extracted: {{extract-compliance-data.rowCount}} records. Docs: {{generate-filing-docs.webUrl}}.'
issue_type: Task
- name: notify-compliance
type: call
call: msteams.post-message
with:
team_id: compliance-team
channel_id: filings
message: 'Compliance filing {{filing_type}} for {{reporting_period}} ready for review. Jira: {{create-review-task.key}}. Docs: {{generate-filing-docs.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves current market data for a financial instrument from Bloomberg Enterprise Data, including price, yield, and spread.
naftiko: '0.5'
info:
label: Bloomberg Market Data Fetch
description: Retrieves current market data for a financial instrument from Bloomberg Enterprise Data, including price, yield, and spread.
tags:
- data
- market-data
- bloomberg-enterprise-data
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-market-data
description: Fetch current market data for a security by ISIN or Bloomberg ticker.
inputParameters:
- name: identifier
in: body
type: string
description: The ISIN or Bloomberg ticker.
- name: identifier_type
in: body
type: string
description: Type of identifier (ISIN, TICKER).
call: bloomberg.get-pricing
with:
identifier: '{{identifier}}'
identifier_type: '{{identifier_type}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: pricing
path: /pricing?identifier={{identifier}}&identifierType={{identifier_type}}
inputParameters:
- name: identifier
in: query
- name: identifier_type
in: query
operations:
- name: get-pricing
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 13
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-13
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.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 historical default probability trends for an entity from Snowflake, returning monthly PD values over a specified lookback window.
naftiko: '0.5'
info:
label: Default Probability Trend Query
description: Retrieves historical default probability trends for an entity from Snowflake, returning monthly PD values over a specified lookback window.
tags:
- credit-risk
- default-probability
- snowflake
capability:
exposes:
- type: mcp
namespace: default-trends
port: 8080
tools:
- name: get-default-trend
description: Retrieve default probability trend by entity ID and lookback months.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: months
in: body
type: string
description: Number of months to look back.
call: snowflake.get-pd-trend
with:
entity_id: '{{entity_id}}'
months: '{{months}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-pd-trend
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 11
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-11
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Retrieves a travel expense report status from SAP Concur for analyst and research team travel.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Status
description: Retrieves a travel expense report status from SAP Concur for analyst and research team travel.
tags:
- finance
- sap-concur
capability:
exposes:
- type: mcp
namespace: travel-expense
port: 8080
tools:
- name: get-expense-report
description: Look up a SAP Concur expense report by report ID.
inputParameters:
- name: report_id
in: body
type: string
description: The Concur expense report ID.
call: concur.get-report
with:
report_id: '{{report_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
Retrieves issuer financial statements from the Salesforce CRM, returning revenue, EBITDA, total debt, and net income for a specified fiscal year.
naftiko: '0.5'
info:
label: Issuer Financial Statement Retrieval
description: Retrieves issuer financial statements from the Salesforce CRM, returning revenue, EBITDA, total debt, and net income for a specified fiscal year.
tags:
- financials
- issuer
- salesforce
capability:
exposes:
- type: mcp
namespace: issuer-financials
port: 8080
tools:
- name: get-issuer-financials
description: Retrieve financial statements by issuer ID and fiscal year.
inputParameters:
- name: issuer_id
in: body
type: string
description: The Salesforce issuer account ID.
- name: fiscal_year
in: body
type: string
description: The fiscal year.
call: salesforce.get-financials
with:
issuer_id: '{{issuer_id}}'
fiscal_year: '{{fiscal_year}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: financials
path: /query/?q=SELECT+Revenue__c,EBITDA__c,Total_Debt__c,Net_Income__c+FROM+Financial_Statement__c+WHERE+Issuer_ID__c='{{issuer_id}}'+AND+Fiscal_Year__c='{{fiscal_year}}'
inputParameters:
- name: issuer_id
in: query
- name: fiscal_year
in: query
operations:
- name: get-financials
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 10
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-10
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://moodys.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Conducts an industry default study by extracting default history from Snowflake, generating documentation in Confluence, creating a Jira task for peer review, and notifying the credit research team via Microsoft Teams.
naftiko: '0.5'
info:
label: Industry Default Study Pipeline
description: Conducts an industry default study by extracting default history from Snowflake, generating documentation in Confluence, creating a Jira task for peer review, and notifying the credit research team via Microsoft Teams.
tags:
- default-study
- research
- snowflake
- confluence
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: default-study
port: 8080
tools:
- name: run-default-study
description: Given a sector and period, run a default study and route for review.
inputParameters:
- name: sector
in: body
type: string
description: The industry sector.
- name: period
in: body
type: string
description: The study period (e.g., 2020-2025).
steps:
- name: extract-defaults
type: call
call: snowflake.execute-query
with:
sector: '{{sector}}'
period: '{{period}}'
- name: publish-study
type: call
call: confluence.create-page
with:
space: RESEARCH
title: 'Default Study: {{sector}} ({{period}})'
- name: create-review-task
type: call
call: jira.create-issue
with:
project: RESEARCH
summary: 'Review default study: {{sector}} ({{period}})'
issue_type: Task
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: credit-research
channel_id: studies
message: 'Default study published: {{sector}} ({{period}}). {{extract-defaults.rowCount}} events. Review: {{create-review-task.key}}. Read: {{publish-study._links.webui}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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: confluence
baseUri: https://moodys.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: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 28
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-28
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FINANC
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://moodys.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 14
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-14
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://moodys.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Runs portfolio stress tests by loading scenario parameters from Snowflake, executing models in Databricks, storing results in Salesforce, uploading reports to SharePoint, and notifying the risk team via Microsoft Teams.
naftiko: '0.5'
info:
label: Portfolio Stress Testing Pipeline
description: Runs portfolio stress tests by loading scenario parameters from Snowflake, executing models in Databricks, storing results in Salesforce, uploading reports to SharePoint, and notifying the risk team via Microsoft Teams.
tags:
- risk-analytics
- stress-testing
- snowflake
- databricks
- salesforce
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: stress-testing
port: 8080
tools:
- name: run-stress-test
description: Given a portfolio and stress scenario, execute the full stress testing pipeline.
inputParameters:
- name: portfolio_id
in: body
type: string
description: The portfolio identifier.
- name: scenario_name
in: body
type: string
description: The stress scenario name (e.g., recession, rate_shock, geopolitical).
steps:
- name: load-scenario
type: call
call: snowflake.execute-query
with:
scenario_name: '{{scenario_name}}'
portfolio_id: '{{portfolio_id}}'
- name: execute-stress-model
type: call
call: databricks.invoke-model
with:
endpoint_name: stress-test-model
portfolio_id: '{{portfolio_id}}'
scenario: '{{scenario_name}}'
- name: store-results
type: call
call: salesforce.create-stress-result
with:
portfolio_id: '{{portfolio_id}}'
scenario: '{{scenario_name}}'
results: '{{execute-stress-model.predictions}}'
- name: upload-report
type: call
call: sharepoint.create-folder
with:
site_id: risk_site
folder_path: StressTests/{{portfolio_id}}/{{scenario_name}}
- name: notify-risk-team
type: call
call: msteams.post-message
with:
team_id: risk-team
channel_id: stress-tests
message: 'Stress test complete: {{scenario_name}} on portfolio {{portfolio_id}}. Results: {{upload-report.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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: databricks
baseUri: https://moodys.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-serving
path: /serving-endpoints/{{endpoint_name}}/invocations
inputParameters:
- name: endpoint_name
in: path
operations:
- name: invoke-model
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: stress-results
path: /sobjects/Stress_Test_Result__c
operations:
- name: create-stress-result
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Queries the rating migration matrix from Snowflake for a specified time horizon, returning transition probabilities between rating categories.
naftiko: '0.5'
info:
label: Rating Migration Matrix Query
description: Queries the rating migration matrix from Snowflake for a specified time horizon, returning transition probabilities between rating categories.
tags:
- ratings
- migration
- snowflake
capability:
exposes:
- type: mcp
namespace: rating-migration
port: 8080
tools:
- name: get-migration-matrix
description: Retrieve rating migration matrix for a given time horizon.
inputParameters:
- name: horizon_years
in: body
type: string
description: The time horizon in years.
- name: asset_class
in: body
type: string
description: The asset class (corporate, sovereign, structured).
call: snowflake.get-migration
with:
horizon_years: '{{horizon_years}}'
asset_class: '{{asset_class}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-migration
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 15
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- slack
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-15
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#financial-services'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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 financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 29
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-29
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Retrieves operational data for Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 9
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 17
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-17
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Triggers a ratings calculation pipeline in Azure DevOps and returns the run ID and status.
naftiko: '0.5'
info:
label: Azure DevOps Ratings Pipeline Trigger
description: Triggers a ratings calculation pipeline in Azure DevOps and returns the run ID and status.
tags:
- ci-cd
- ratings
- azure-devops
capability:
exposes:
- type: mcp
namespace: ratings-pipeline
port: 8080
tools:
- name: trigger-ratings-pipeline
description: Trigger the ratings calculation pipeline for a given entity set.
inputParameters:
- name: pipeline_id
in: body
type: string
description: The Azure DevOps pipeline ID.
- name: entity_set
in: body
type: string
description: The entity set to process.
call: azuredevops.run-pipeline
with:
pipeline_id: '{{pipeline_id}}'
entity_set: '{{entity_set}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/moodys
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: pipelines
path: /ratings/_apis/pipelines/{{pipeline_id}}/runs?api-version=7.0
inputParameters:
- name: pipeline_id
in: path
operations:
- name: run-pipeline
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 16
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-16
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FINANC
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://moodys.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 Moodys financial-services workflows.
naftiko: '0.5'
info:
label: Moodys Data Lookup 8
description: Retrieves operational data for Moodys financial-services workflows.
tags:
- financial-services
- operations
capability:
exposes:
- type: mcp
namespace: moodys-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Moodys financial-services workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: moodys-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: moodys-data
baseUri: https://api.moodys.com/data/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 5
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-5
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-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: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Fetches an employee profile from Workday by worker ID, including department, title, manager, and location.
naftiko: '0.5'
info:
label: Workday Employee Profile
description: Fetches an employee profile from Workday by worker ID, including department, title, manager, and location.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-employee
port: 8080
tools:
- name: get-employee-profile
description: Retrieve a Workday employee profile by worker ID.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID.
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 4
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-4
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FINANC
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://moodys.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Onboards new analytics clients by creating accounts in Salesforce, provisioning data access in Snowflake, setting up a ServiceNow support profile, and sending welcome communications via Microsoft Teams and Outlook.
naftiko: '0.5'
info:
label: Client Onboarding Pipeline
description: Onboards new analytics clients by creating accounts in Salesforce, provisioning data access in Snowflake, setting up a ServiceNow support profile, and sending welcome communications via Microsoft Teams and Outlook.
tags:
- data
- client-onboarding
- salesforce
- snowflake
- servicenow
- microsoft-teams
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: client-onboarding
port: 8080
tools:
- name: onboard-analytics-client
description: Given client details, set up accounts, provision access, and send welcome communications.
inputParameters:
- name: client_name
in: body
type: string
description: The client company name.
- name: contact_email
in: body
type: string
description: The primary contact email.
- name: data_products
in: body
type: string
description: Comma-separated list of subscribed data products.
steps:
- name: create-account
type: call
call: salesforce.create-account
with:
name: '{{client_name}}'
contact_email: '{{contact_email}}'
products: '{{data_products}}'
- name: provision-access
type: call
call: snowflake.execute-query
with:
client_id: '{{create-account.id}}'
data_products: '{{data_products}}'
- name: create-support-profile
type: call
call: servicenow.create-incident
with:
short_description: 'New client onboarding: {{client_name}}'
category: client_onboarding
description: 'New client {{client_name}}. Products: {{data_products}}. Account: {{create-account.id}}.'
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: client-success-team
channel_id: onboarding
message: 'New client onboarded: {{client_name}}. Products: {{data_products}}. Salesforce: {{create-account.id}}.'
- name: send-welcome
type: call
call: outlook.send-mail
with:
recipient: '{{contact_email}}'
subject: Welcome to Moody's Analytics
body: 'Welcome {{client_name}}! Your data products ({{data_products}}) are now active. Support case: {{create-support-profile.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://moodys.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: snowflake
baseUri: https://moodys.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://moodys.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/onboarding@moodys.com/sendMail
operations:
- name: send-mail
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 6
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- jira
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-6
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FINA
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Monitors covenant compliance for leveraged loans by pulling covenant test results from Snowflake, checking breach status, logging findings in Salesforce, and alerting the credit surveillance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Covenant Compliance Monitoring Pipeline
description: Monitors covenant compliance for leveraged loans by pulling covenant test results from Snowflake, checking breach status, logging findings in Salesforce, and alerting the credit surveillance team via Microsoft Teams.
tags:
- covenants
- surveillance
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: covenant-monitoring
port: 8080
tools:
- name: check-covenant-compliance
description: Given a deal ID, check covenant compliance and escalate breaches.
inputParameters:
- name: deal_id
in: body
type: string
description: The deal identifier.
- name: test_date
in: body
type: string
description: The covenant test date.
steps:
- name: pull-covenant-data
type: call
call: snowflake.execute-query
with:
deal_id: '{{deal_id}}'
test_date: '{{test_date}}'
- name: log-results
type: call
call: salesforce.create-covenant-log
with:
deal_id: '{{deal_id}}'
test_date: '{{test_date}}'
status: '{{pull-covenant-data.compliance_status}}'
- name: alert-surveillance
type: call
call: msteams.post-message
with:
team_id: surveillance-team
channel_id: covenants
message: 'Covenant test for deal {{deal_id}} on {{test_date}}: {{pull-covenant-data.compliance_status}}. {{pull-covenant-data.breach_count}} breaches detected.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: covenant-logs
path: /sobjects/Covenant_Log__c
operations:
- name: create-covenant-log
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 7
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- teams
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-7
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: financial-services
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 3
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- slack
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-3
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#financial-services'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_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
Manages rating methodology updates by creating the methodology document in Confluence, uploading supporting analysis to SharePoint, creating review tasks in Jira, and notifying the methodology committee via Microsoft Teams.
naftiko: '0.5'
info:
label: Methodology Update Workflow
description: Manages rating methodology updates by creating the methodology document in Confluence, uploading supporting analysis to SharePoint, creating review tasks in Jira, and notifying the methodology committee via Microsoft Teams.
tags:
- credit-ratings
- methodology
- confluence
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: methodology-updates
port: 8080
tools:
- name: initiate-methodology-update
description: Given methodology details, create documents, route for review, and notify committee.
inputParameters:
- name: methodology_name
in: body
type: string
description: The methodology name.
- name: sector
in: body
type: string
description: The sector the methodology applies to.
- name: change_summary
in: body
type: string
description: Summary of proposed changes.
steps:
- name: create-methodology-doc
type: call
call: confluence.create-page
with:
space_key: METHODOLOGY
title: 'Update: {{methodology_name}}'
body: 'Sector: {{sector}}. Proposed changes: {{change_summary}}.'
- name: upload-analysis
type: call
call: sharepoint.create-folder
with:
site_id: methodology_site
folder_path: Updates/{{methodology_name}}
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: METH
summary: 'Methodology review: {{methodology_name}}'
description: '{{change_summary}}. Doc: {{create-methodology-doc._links.webui}}. Analysis: {{upload-analysis.webUrl}}.'
issue_type: Task
- name: notify-committee
type: call
call: msteams.post-message
with:
team_id: methodology-committee
channel_id: updates
message: 'Methodology update proposed: {{methodology_name}} ({{sector}}). Review: {{create-review-task.key}}. Doc: {{create-methodology-doc._links.webui}}.'
consumes:
- type: http
namespace: confluence
baseUri: https://moodys.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: 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: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Analyzes recovery rates for a sector by extracting historical default and recovery data from Snowflake, generating a report in SharePoint, logging results in Salesforce, and alerting the research team via Microsoft Teams.
naftiko: '0.5'
info:
label: Recovery Rate Analysis Pipeline
description: Analyzes recovery rates for a sector by extracting historical default and recovery data from Snowflake, generating a report in SharePoint, logging results in Salesforce, and alerting the research team via Microsoft Teams.
tags:
- recovery-rates
- analytics
- snowflake
- sharepoint
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recovery-analysis
port: 8080
tools:
- name: analyze-recovery-rates
description: Given a sector and time period, analyze historical recovery rates.
inputParameters:
- name: sector
in: body
type: string
description: The industry sector.
- name: start_year
in: body
type: string
description: The start year.
- name: end_year
in: body
type: string
description: The end year.
steps:
- name: extract-recovery-data
type: call
call: snowflake.execute-query
with:
sector: '{{sector}}'
start_year: '{{start_year}}'
end_year: '{{end_year}}'
- name: create-report-folder
type: call
call: sharepoint.create-folder
with:
site_id: research_site
folder_path: Recovery/{{sector}}/{{start_year}}-{{end_year}}
- name: log-analysis
type: call
call: salesforce.create-analysis-record
with:
sector: '{{sector}}'
record_count: '{{extract-recovery-data.rowCount}}'
- name: notify-research
type: call
call: msteams.post-message
with:
team_id: research-team
channel_id: recovery
message: 'Recovery rate analysis complete for {{sector}} ({{start_year}}-{{end_year}}). {{extract-recovery-data.rowCount}} defaults analyzed. Report: {{create-report-folder.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: analysis-records
path: /sobjects/Analysis_Record__c
operations:
- name: create-analysis-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Assesses climate risk exposure for an entity by querying physical and transition risk scores from Snowflake, returning climate VaR, carbon intensity, and stranded asset probability.
naftiko: '0.5'
info:
label: Climate Risk Exposure Assessment
description: Assesses climate risk exposure for an entity by querying physical and transition risk scores from Snowflake, returning climate VaR, carbon intensity, and stranded asset probability.
tags:
- esg
- climate-risk
- snowflake
capability:
exposes:
- type: mcp
namespace: climate-risk
port: 8080
tools:
- name: get-climate-risk
description: Retrieve climate risk exposure by entity ID.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: snowflake.get-climate-risk
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-climate-risk
method: POST
Retrieves sovereign credit risk indicators from Snowflake by country code, returning sovereign rating, GDP trend, debt-to-GDP ratio, and political risk score.
naftiko: '0.5'
info:
label: Sovereign Credit Risk Analysis
description: Retrieves sovereign credit risk indicators from Snowflake by country code, returning sovereign rating, GDP trend, debt-to-GDP ratio, and political risk score.
tags:
- credit-risk
- sovereign
- snowflake
capability:
exposes:
- type: mcp
namespace: sovereign-risk
port: 8080
tools:
- name: get-sovereign-risk
description: Look up sovereign credit risk indicators by country code.
inputParameters:
- name: country_code
in: body
type: string
description: The ISO country code.
call: snowflake.get-sovereign-risk
with:
country_code: '{{country_code}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-sovereign-risk
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 2
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-2
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://moodys.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Triggers a refresh of the credit analytics Power BI dashboard and returns the refresh status.
naftiko: '0.5'
info:
label: Power BI Credit Dashboard Data Sync
description: Triggers a refresh of the credit analytics Power BI dashboard and returns the refresh status.
tags:
- analytics
- dashboard
- power-bi
capability:
exposes:
- type: mcp
namespace: credit-dashboard
port: 8080
tools:
- name: refresh-credit-dashboard
description: Trigger a Power BI dashboard refresh by dataset ID.
inputParameters:
- name: dataset_id
in: body
type: string
description: The 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
Reviews entities on the credit watchlist by pulling latest financials from Snowflake, fetching current rating from Salesforce, creating a Jira review task, and alerting the ratings committee via Microsoft Teams.
naftiko: '0.5'
info:
label: Watchlist Entity Review Pipeline
description: Reviews entities on the credit watchlist by pulling latest financials from Snowflake, fetching current rating from Salesforce, creating a Jira review task, and alerting the ratings committee via Microsoft Teams.
tags:
- watchlist
- ratings
- snowflake
- salesforce
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: watchlist-review
port: 8080
tools:
- name: review-watchlist-entity
description: Given an entity ID, pull financials, check rating, and route for committee review.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
steps:
- name: pull-financials
type: call
call: snowflake.execute-query
with:
entity_id: '{{entity_id}}'
- name: get-current-rating
type: call
call: salesforce.get-rating
with:
entity_id: '{{entity_id}}'
- name: create-review-task
type: call
call: jira.create-issue
with:
project: RATINGS
summary: 'Watchlist review: {{entity_id}} (current: {{get-current-rating.Current_Rating__c}})'
issue_type: Task
- name: alert-committee
type: call
call: msteams.post-message
with:
team_id: ratings-committee
channel_id: watchlist
message: 'Watchlist review initiated for {{entity_id}}. Current rating: {{get-current-rating.Current_Rating__c}}. Jira: {{create-review-task.key}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://moodys.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://moodys.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: ratings
path: /query/?q=SELECT+Current_Rating__c,Rating_Outlook__c+FROM+Credit_Rating__c+WHERE+Entity_ID__c='{{entity_id}}'
inputParameters:
- name: entity_id
in: query
operations:
- name: get-rating
method: GET
- type: http
namespace: jira
baseUri: https://moodys.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
naftiko: '0.5'
info:
label: Moodys Workflow 1
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
tags:
- financial-services
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: financial-services
port: 8080
tools:
- name: moodys-workflow-1
description: Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: moodys-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: moodys-ops
baseUri: https://api.moodys.com/operations/v1
authentication:
type: bearer
token: $secrets.moodys_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://moodys.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 Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 8
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 34
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-34
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://nasdaq.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 20
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-20
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://nasdaq-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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 21
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- box
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-21
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 35
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-35
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 9
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Retrieves regulatory document metadata from SharePoint by folder path, returning document names, last modified dates, and version history.
naftiko: '0.5'
info:
label: SharePoint Regulatory Document Archive
description: Retrieves regulatory document metadata from SharePoint by folder path, returning document names, last modified dates, and version history.
tags:
- regulatory
- document-management
- sharepoint
capability:
exposes:
- type: mcp
namespace: regulatory-docs
port: 8080
tools:
- name: list-regulatory-docs
description: List regulatory documents in a SharePoint folder.
inputParameters:
- name: folder_path
in: body
type: string
description: The SharePoint folder path.
call: sharepoint.list-documents
with:
folder_path: '{{folder_path}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /regulatory_site/drive/root:/{{folder_path}}:/children
inputParameters:
- name: folder_path
in: path
operations:
- name: list-documents
method: GET
Checks a listed company's compliance with Nasdaq listing standards by querying financial metrics from Snowflake and returning compliance status for each requirement.
naftiko: '0.5'
info:
label: Listing Standards Compliance Check
description: Checks a listed company's compliance with Nasdaq listing standards by querying financial metrics from Snowflake and returning compliance status for each requirement.
tags:
- listing
- compliance
- snowflake
capability:
exposes:
- type: mcp
namespace: listing-compliance
port: 8080
tools:
- name: check-listing-compliance
description: Check listing standards compliance by company ticker.
inputParameters:
- name: ticker
in: body
type: string
description: The listed company ticker.
call: snowflake.check-compliance
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: check-compliance
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 23
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-23
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 14
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Retrieves the current composition of a Nasdaq index from Snowflake, returning constituent tickers, weights, and sector classifications.
naftiko: '0.5'
info:
label: Index Composition Lookup
description: Retrieves the current composition of a Nasdaq index from Snowflake, returning constituent tickers, weights, and sector classifications.
tags:
- indices
- market-data
- snowflake
capability:
exposes:
- type: mcp
namespace: index-composition
port: 8080
tools:
- name: get-index-composition
description: Look up index constituents by index name.
inputParameters:
- name: index_name
in: body
type: string
description: The index name (e.g., NASDAQ-100, NASDAQ Composite).
call: snowflake.get-index-composition
with:
index_name: '{{index_name}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-index-composition
method: POST
Retrieves corporate actions events from Snowflake for a security, including dividends, splits, mergers, and spin-offs.
naftiko: '0.5'
info:
label: Corporate Actions Event Lookup
description: Retrieves corporate actions events from Snowflake for a security, including dividends, splits, mergers, and spin-offs.
tags:
- corporate-actions
- market-data
- snowflake
capability:
exposes:
- type: mcp
namespace: corporate-actions
port: 8080
tools:
- name: get-corporate-actions
description: Look up corporate actions for a security by ticker and date range.
inputParameters:
- name: ticker
in: body
type: string
description: The security ticker symbol.
- name: start_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
call: snowflake.get-corporate-actions
with:
ticker: '{{ticker}}'
start_date: '{{start_date}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-corporate-actions
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 15
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 22
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-22
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://nasdaq.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Retrieves real-time order book depth for a security from Snowflake, returning top-of-book bid/ask levels, depth at each price level, and aggregate volume.
naftiko: '0.5'
info:
label: Order Book Depth Lookup
description: Retrieves real-time order book depth for a security from Snowflake, returning top-of-book bid/ask levels, depth at each price level, and aggregate volume.
tags:
- market-data
- order-book
- snowflake
capability:
exposes:
- type: mcp
namespace: order-book
port: 8080
tools:
- name: get-order-book
description: Look up order book depth by ticker symbol.
inputParameters:
- name: ticker
in: body
type: string
description: The security ticker symbol.
call: snowflake.get-order-book
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-order-book
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 26
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-26
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 32
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-32
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://nasdaq-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
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 11
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Prepares and submits regulatory filings by extracting filing data from Snowflake, generating documents in SharePoint, creating a ServiceNow tracking ticket, and notifying the regulatory team via Microsoft Teams.
naftiko: '0.5'
info:
label: SEC Filing Submission Pipeline
description: Prepares and submits regulatory filings by extracting filing data from Snowflake, generating documents in SharePoint, creating a ServiceNow tracking ticket, and notifying the regulatory team via Microsoft Teams.
tags:
- regulatory
- compliance
- snowflake
- sharepoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sec-filing
port: 8080
tools:
- name: prepare-sec-filing
description: Given a filing type and period, prepare and submit the SEC filing.
inputParameters:
- name: filing_type
in: body
type: string
description: The SEC filing type (e.g., 10-K, 10-Q, 8-K).
- name: reporting_period
in: body
type: string
description: The reporting period.
steps:
- name: extract-filing-data
type: call
call: snowflake.execute-query
with:
filing_type: '{{filing_type}}'
period: '{{reporting_period}}'
- name: create-filing-folder
type: call
call: sharepoint.create-folder
with:
site_id: regulatory_site
folder_path: SEC/{{filing_type}}/{{reporting_period}}
- name: create-tracking-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'SEC filing: {{filing_type}} for {{reporting_period}}'
category: regulatory
description: Filing data extracted. {{extract-filing-data.rowCount}} records.
- name: notify-regulatory
type: call
call: msteams.post-message
with:
team_id: regulatory-team
channel_id: filings
message: 'SEC {{filing_type}} filing prepared for {{reporting_period}}. Documents: {{create-filing-folder.webUrl}}. Ticket: {{create-tracking-ticket.number}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 10
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 33
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- box
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-33
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 27
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- slack
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-27
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#capital-markets'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Processes AML alerts by pulling transaction patterns from Snowflake, checking entity details in Salesforce, creating a ServiceNow case, and escalating to the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Anti-Money Laundering Alert Pipeline
description: Processes AML alerts by pulling transaction patterns from Snowflake, checking entity details in Salesforce, creating a ServiceNow case, and escalating to the compliance team via Microsoft Teams.
tags:
- compliance
- aml
- snowflake
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-alerts
port: 8080
tools:
- name: process-aml-alert
description: Given an alert ID, investigate the AML alert and escalate.
inputParameters:
- name: alert_id
in: body
type: string
description: The AML alert ID.
- name: entity_id
in: body
type: string
description: The entity under investigation.
steps:
- name: pull-transactions
type: call
call: snowflake.execute-query
with:
alert_id: '{{alert_id}}'
entity_id: '{{entity_id}}'
- name: get-entity-info
type: call
call: salesforce.get-entity
with:
entity_id: '{{entity_id}}'
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'AML investigation: Alert {{alert_id}} - {{get-entity-info.Name}}'
category: aml_compliance
description: '{{pull-transactions.rowCount}} suspicious transactions flagged.'
- name: escalate-compliance
type: call
call: msteams.post-message
with:
team_id: compliance-team
channel_id: aml-alerts
message: 'AML alert {{alert_id}} for {{get-entity-info.Name}}: {{pull-transactions.rowCount}} transactions flagged. Case: {{create-case.number}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: entities
path: /query/?q=SELECT+Name,Entity_Type__c+FROM+Account+WHERE+Entity_ID__c='{{entity_id}}'
inputParameters:
- name: entity_id
in: query
operations:
- name: get-entity
method: GET
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 19
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- teams
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-19
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: capital-markets
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 31
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- teams
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-31
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: capital-markets
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 25
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-25
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://nasdaq.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 Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 12
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 8
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-8
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://nasdaq-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
Retrieves infrastructure metrics from Datadog for trading platform monitoring including latency, throughput, and error rates.
naftiko: '0.5'
info:
label: Datadog Infrastructure Metrics
description: Retrieves infrastructure metrics from Datadog for trading platform monitoring including latency, throughput, and error rates.
tags:
- monitoring
- datadog
- trading
capability:
exposes:
- type: mcp
namespace: infra-metrics
port: 8080
tools:
- name: get-metrics
description: Query Datadog for infrastructure metrics.
inputParameters:
- name: metric_name
in: body
type: string
description: The Datadog metric name.
- name: from_ts
in: body
type: string
description: Start timestamp (epoch seconds).
- name: to_ts
in: body
type: string
description: End timestamp (epoch seconds).
call: datadog.query-metrics
with:
metric_name: '{{metric_name}}'
from_ts: '{{from_ts}}'
to_ts: '{{to_ts}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: metrics
path: /query?query={{metric_name}}&from={{from_ts}}&to={{to_ts}}
inputParameters:
- name: metric_name
in: query
- name: from_ts
in: query
- name: to_ts
in: query
operations:
- name: query-metrics
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 9
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- box
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-9
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 13
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 24
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-24
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: capital-markets.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 30
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- jira
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-30
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: CAPI
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 18
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- jira
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-18
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: CAPI
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Retrieves trade surveillance alert details by alert ID from the monitoring system, including alert type, severity, and flagged trades.
naftiko: '0.5'
info:
label: Trade Surveillance Alert Lookup
description: Retrieves trade surveillance alert details by alert ID from the monitoring system, including alert type, severity, and flagged trades.
tags:
- surveillance
- compliance
- snowflake
capability:
exposes:
- type: mcp
namespace: trade-surveillance
port: 8080
tools:
- name: get-surveillance-alert
description: Look up a trade surveillance alert by alert ID.
inputParameters:
- name: alert_id
in: body
type: string
description: The surveillance alert identifier.
call: snowflake.get-alert
with:
alert_id: '{{alert_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-alert
method: POST
Retrieves real-time market data for a security by ticker symbol, returning last price, bid/ask, volume, and market cap.
naftiko: '0.5'
info:
label: Market Data Quote Lookup
description: Retrieves real-time market data for a security by ticker symbol, returning last price, bid/ask, volume, and market cap.
tags:
- market-data
- trading
- snowflake
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-market-quote
description: Look up real-time market data for a security by ticker symbol.
inputParameters:
- name: ticker
in: body
type: string
description: The security ticker symbol.
call: snowflake.get-quote
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-quote
method: POST
Retrieves headcount summary from Workday by department, returning active employee count, open positions, and attrition rate.
naftiko: '0.5'
info:
label: Workday Headcount Report
description: Retrieves headcount summary from Workday by department, returning active employee count, open positions, and attrition rate.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-headcount
port: 8080
tools:
- name: get-headcount
description: Retrieve headcount report by department.
inputParameters:
- name: department
in: body
type: string
description: The department name.
call: workday.get-headcount
with:
department: '{{department}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/nasdaq
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: headcount
path: /headcount?department={{department}}
inputParameters:
- name: department
in: query
operations:
- name: get-headcount
method: GET
Responds to trading platform incidents by pulling system metrics from Datadog, checking logs in Splunk, creating a critical ServiceNow incident, creating a Jira task for engineering, and alerting operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Trading Platform Incident Response
description: Responds to trading platform incidents by pulling system metrics from Datadog, checking logs in Splunk, creating a critical ServiceNow incident, creating a Jira task for engineering, and alerting operations via Microsoft Teams.
tags:
- trading
- incident-response
- datadog
- splunk
- servicenow
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: platform-incidents
port: 8080
tools:
- name: respond-to-platform-incident
description: Given an incident description and affected system, orchestrate the full incident response.
inputParameters:
- name: incident_description
in: body
type: string
description: Description of the platform incident.
- name: affected_system
in: body
type: string
description: The affected trading system component.
- name: severity
in: body
type: string
description: Severity level (critical, high, medium).
steps:
- name: get-system-metrics
type: call
call: datadog.query-metrics
with:
metric_name: '{{affected_system}}.latency'
from_ts: '-3600'
to_ts: now
- name: search-logs
type: call
call: splunk.search
with:
search_query: index=trading source={{affected_system}} error
earliest_time: -1h
latest_time: now
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Platform incident: {{affected_system}} - {{severity}}'
category: platform_operations
priority: '{{severity}}'
description: '{{incident_description}}. Latency: {{get-system-metrics.avg_latency}}ms. Log hits: {{search-logs.result_count}}.'
- name: create-eng-task
type: call
call: jira.create-issue
with:
project_key: PLAT
summary: 'Platform incident: {{affected_system}}'
description: '{{incident_description}}. ServiceNow: {{create-incident.number}}.'
issue_type: Bug
- name: alert-ops
type: call
call: msteams.post-message
with:
team_id: platform-ops-team
channel_id: incidents
message: 'PLATFORM INCIDENT ({{severity}}): {{affected_system}} - {{incident_description}}. Latency: {{get-system-metrics.avg_latency}}ms. Case: {{create-incident.number}}. Jira: {{create-eng-task.key}}.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: metrics
path: /query
operations:
- name: query-metrics
method: GET
- type: http
namespace: splunk
baseUri: https://splunk.nasdaq.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /search/jobs
operations:
- name: search
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves exchange outage and maintenance records from ServiceNow, returning outage duration, affected systems, and root cause summary.
naftiko: '0.5'
info:
label: ServiceNow Exchange Outage Tracker
description: Retrieves exchange outage and maintenance records from ServiceNow, returning outage duration, affected systems, and root cause summary.
tags:
- it-service
- exchange
- servicenow
capability:
exposes:
- type: mcp
namespace: exchange-outages
port: 8080
tools:
- name: get-outage-history
description: Look up exchange outage records 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: servicenow.get-outages
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: outages
path: /table/incident?sysparm_query=category=exchange^opened_at>={{start_date}}^opened_at<={{end_date}}
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-outages
method: GET
Generates market analytics reports by querying trading data from Snowflake, enriching with Bloomberg reference data, refreshing Power BI dashboards, uploading to SharePoint, and notifying the analytics team.
naftiko: '0.5'
info:
label: Market Analytics Report Pipeline
description: Generates market analytics reports by querying trading data from Snowflake, enriching with Bloomberg reference data, refreshing Power BI dashboards, uploading to SharePoint, and notifying the analytics team.
tags:
- market-data
- analytics
- snowflake
- bloomberg-enterprise-data
- power-bi
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-analytics
port: 8080
tools:
- name: generate-market-analytics
description: Given a market segment and period, generate comprehensive market analytics.
inputParameters:
- name: market_segment
in: body
type: string
description: The market segment (equities, options, fixed_income).
- name: period
in: body
type: string
description: The analysis period.
steps:
- name: query-trading-data
type: call
call: snowflake.execute-query
with:
segment: '{{market_segment}}'
period: '{{period}}'
- name: enrich-with-reference
type: call
call: bloomberg.get-pricing
with:
identifier: '{{market_segment}}'
identifier_type: SEGMENT
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: market-analytics-dataset
- name: upload-report
type: call
call: sharepoint.create-folder
with:
site_id: analytics_site
folder_path: MarketAnalytics/{{market_segment}}/{{period}}
- name: notify-analytics
type: call
call: msteams.post-message
with:
team_id: analytics-team
channel_id: market-reports
message: 'Market analytics for {{market_segment}} ({{period}}) complete. {{query-trading-data.rowCount}} data points. Report: {{upload-report.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: pricing
path: /pricing
operations:
- name: get-pricing
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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Coordinates market trading halts by updating halt status in Snowflake, notifying listed companies via Salesforce, creating a ServiceNow incident for tracking, distributing halt notices via Bloomberg, and alerting all teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Market Halt Coordination Pipeline
description: Coordinates market trading halts by updating halt status in Snowflake, notifying listed companies via Salesforce, creating a ServiceNow incident for tracking, distributing halt notices via Bloomberg, and alerting all teams via Microsoft Teams.
tags:
- trading
- market-halt
- snowflake
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-halts
port: 8080
tools:
- name: coordinate-market-halt
description: Given a ticker and halt reason, coordinate the full market halt process.
inputParameters:
- name: ticker
in: body
type: string
description: The ticker to halt.
- name: halt_reason
in: body
type: string
description: Reason for the halt (news_pending, regulatory, volatility).
- name: halt_time
in: body
type: string
description: Halt time in ISO 8601 format.
steps:
- name: update-halt-status
type: call
call: snowflake.execute-query
with:
ticker: '{{ticker}}'
halt_reason: '{{halt_reason}}'
halt_time: '{{halt_time}}'
- name: notify-issuer
type: call
call: salesforce.create-halt-notification
with:
ticker: '{{ticker}}'
halt_reason: '{{halt_reason}}'
- name: create-tracking-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Market halt: {{ticker}} - {{halt_reason}}'
category: market_operations
priority: '1'
description: 'Trading halt for {{ticker}} at {{halt_time}}. Reason: {{halt_reason}}.'
- name: alert-all-teams
type: call
call: msteams.post-message
with:
team_id: market-ops-team
channel_id: trading-halts
message: 'TRADING HALT: {{ticker}} halted at {{halt_time}}. Reason: {{halt_reason}}. Incident: {{create-tracking-incident.number}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: halt-notifications
path: /sobjects/Halt_Notification__c
operations:
- name: create-halt-notification
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Reviews listed company compliance by pulling financial data from Snowflake, checking listing standards in Salesforce, creating a compliance review case in ServiceNow, and notifying the listings qualifications team.
naftiko: '0.5'
info:
label: Listing Compliance Review Pipeline
description: Reviews listed company compliance by pulling financial data from Snowflake, checking listing standards in Salesforce, creating a compliance review case in ServiceNow, and notifying the listings qualifications team.
tags:
- listing
- compliance
- snowflake
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: listing-compliance
port: 8080
tools:
- name: review-listing-compliance
description: Given a listed company ticker, review compliance with listing standards.
inputParameters:
- name: ticker
in: body
type: string
description: The listed company ticker.
- name: review_type
in: body
type: string
description: Type of review (annual, bid_price, market_cap).
steps:
- name: pull-financial-data
type: call
call: snowflake.execute-query
with:
ticker: '{{ticker}}'
review_type: '{{review_type}}'
- name: check-listing-standards
type: call
call: salesforce.get-listing-record
with:
ticker: '{{ticker}}'
- name: create-review-case
type: call
call: servicenow.create-incident
with:
short_description: 'Listing compliance: {{ticker}} - {{review_type}}'
category: listing_compliance
description: '{{review_type}} review for {{ticker}}. Market cap: {{pull-financial-data.market_cap}}. Bid price: {{pull-financial-data.bid_price}}.'
- name: notify-qualifications
type: call
call: msteams.post-message
with:
team_id: listings-team
channel_id: compliance-reviews
message: 'Listing compliance review: {{ticker}} ({{review_type}}). Case: {{create-review-case.number}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: listing-records
path: /query/?q=SELECT+Listing_Status__c,Standards_Met__c+FROM+Listing__c+WHERE+Ticker__c='{{ticker}}'
inputParameters:
- name: ticker
in: query
operations:
- name: get-listing-record
method: GET
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Queries trading volume analytics from Snowflake for a security or market segment, returning daily volume, VWAP, and volume distribution by session.
naftiko: '0.5'
info:
label: Trading Volume Analytics Query
description: Queries trading volume analytics from Snowflake for a security or market segment, returning daily volume, VWAP, and volume distribution by session.
tags:
- trading
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: volume-analytics
port: 8080
tools:
- name: get-volume-analytics
description: Query trading volume analytics by ticker and date range.
inputParameters:
- name: ticker
in: body
type: string
description: The security ticker symbol.
- name: date_range
in: body
type: string
description: The date range (e.g., 30d, 90d).
call: snowflake.get-volume-analytics
with:
ticker: '{{ticker}}'
date_range: '{{date_range}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-volume-analytics
method: POST
Checks the status of a company's listing application in Salesforce, returning application state, review stage, and assigned analyst.
naftiko: '0.5'
info:
label: Listing Application Status
description: Checks the status of a company's listing application in Salesforce, returning application state, review stage, and assigned analyst.
tags:
- listing
- salesforce
capability:
exposes:
- type: mcp
namespace: listing-services
port: 8080
tools:
- name: get-listing-status
description: Look up a listing application by application ID.
inputParameters:
- name: application_id
in: body
type: string
description: The listing application ID.
call: salesforce.get-application
with:
application_id: '{{application_id}}'
outputParameters:
- name: status
type: string
mapping: $.records[0].Application_Status__c
- name: review_stage
type: string
mapping: $.records[0].Review_Stage__c
- name: assigned_analyst
type: string
mapping: $.records[0].Assigned_Analyst__c
consumes:
- type: http
namespace: salesforce
baseUri: https://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: applications
path: /query/?q=SELECT+Application_Status__c,Review_Stage__c,Assigned_Analyst__c+FROM+Listing_Application__c+WHERE+Application_ID__c='{{application_id}}'
inputParameters:
- name: application_id
in: query
operations:
- name: get-application
method: GET
Retrieves short interest data for a security from Snowflake, returning shares short, days to cover, and short interest ratio.
naftiko: '0.5'
info:
label: Short Interest Data Lookup
description: Retrieves short interest data for a security from Snowflake, returning shares short, days to cover, and short interest ratio.
tags:
- market-data
- short-interest
- snowflake
capability:
exposes:
- type: mcp
namespace: short-interest
port: 8080
tools:
- name: get-short-interest
description: Look up short interest data by ticker.
inputParameters:
- name: ticker
in: body
type: string
description: The security ticker symbol.
call: snowflake.get-short-interest
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-short-interest
method: POST
Orchestrates a new IPO listing by creating the listing record in Salesforce, provisioning market data feeds in Snowflake, setting up surveillance rules, uploading regulatory docs to SharePoint, and notifying the listings team via Microsoft Teams.
naftiko: '0.5'
info:
label: IPO Listing Orchestrator
description: Orchestrates a new IPO listing by creating the listing record in Salesforce, provisioning market data feeds in Snowflake, setting up surveillance rules, uploading regulatory docs to SharePoint, and notifying the listings team via Microsoft Teams.
tags:
- listing
- ipo
- salesforce
- snowflake
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ipo-listing
port: 8080
tools:
- name: process-ipo-listing
description: Given company and listing details, orchestrate the full IPO listing setup.
inputParameters:
- name: company_name
in: body
type: string
description: The company name.
- name: ticker_symbol
in: body
type: string
description: The assigned ticker symbol.
- name: listing_date
in: body
type: string
description: The listing date in YYYY-MM-DD format.
- name: offering_price
in: body
type: string
description: The IPO offering price.
steps:
- name: create-listing-record
type: call
call: salesforce.create-listing
with:
company_name: '{{company_name}}'
ticker: '{{ticker_symbol}}'
listing_date: '{{listing_date}}'
price: '{{offering_price}}'
- name: provision-data-feeds
type: call
call: snowflake.execute-query
with:
ticker: '{{ticker_symbol}}'
listing_date: '{{listing_date}}'
- name: upload-docs
type: call
call: sharepoint.create-folder
with:
site_id: listings_site
folder_path: IPOs/{{ticker_symbol}}_{{listing_date}}
- name: notify-listings-team
type: call
call: msteams.post-message
with:
team_id: listings-team
channel_id: new-listings
message: 'IPO listing processed: {{company_name}} ({{ticker_symbol}}) on {{listing_date}} at ${{offering_price}}. Salesforce: {{create-listing-record.id}}. Docs: {{upload-docs.webUrl}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: listings
path: /sobjects/Listing__c
operations:
- name: create-listing
method: POST
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Generates a market maker performance report by pulling quoting statistics from Snowflake, creating a Jira review task, and notifying the market quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Market Maker Performance Report
description: Generates a market maker performance report by pulling quoting statistics from Snowflake, creating a Jira review task, and notifying the market quality team via Microsoft Teams.
tags:
- market-quality
- market-maker
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-maker-performance
port: 8080
tools:
- name: generate-mm-report
description: Given a market maker ID and period, generate their performance report.
inputParameters:
- name: mm_id
in: body
type: string
description: The market maker identifier.
- name: period
in: body
type: string
description: The reporting period.
steps:
- name: pull-performance-data
type: call
call: snowflake.execute-query
with:
mm_id: '{{mm_id}}'
period: '{{period}}'
- name: create-review-task
type: call
call: jira.create-issue
with:
project: MKTQUAL
summary: 'MM performance review: {{mm_id}} ({{period}})'
issue_type: Task
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: market-quality-team
channel_id: reports
message: 'Market maker {{mm_id}} performance report ({{period}}): Quoting time {{pull-performance-data.time_at_best_pct}}%. Review: {{create-review-task.key}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves private market deal information from Salesforce by deal ID, returning company name, valuation, deal stage, and investor details.
naftiko: '0.5'
info:
label: Nasdaq Private Market Deal Lookup
description: Retrieves private market deal information from Salesforce by deal ID, returning company name, valuation, deal stage, and investor details.
tags:
- private-market
- salesforce
capability:
exposes:
- type: mcp
namespace: private-market
port: 8080
tools:
- name: get-private-deal
description: Look up private market deal by deal ID.
inputParameters:
- name: deal_id
in: body
type: string
description: The private market deal ID.
call: salesforce.get-private-deal
with:
deal_id: '{{deal_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: private-deals
path: /query/?q=SELECT+Company_Name__c,Valuation__c,Stage__c,Lead_Investor__c+FROM+Private_Deal__c+WHERE+Deal_ID__c='{{deal_id}}'
inputParameters:
- name: deal_id
in: query
operations:
- name: get-private-deal
method: GET
Queries ESG data products from Snowflake for a company, returning ESG scores, controversy flags, and carbon disclosure metrics.
naftiko: '0.5'
info:
label: Nasdaq ESG Data Product Query
description: Queries ESG data products from Snowflake for a company, returning ESG scores, controversy flags, and carbon disclosure metrics.
tags:
- esg
- data-product
- snowflake
capability:
exposes:
- type: mcp
namespace: esg-data
port: 8080
tools:
- name: get-esg-data
description: Retrieve ESG data product scores by company ticker.
inputParameters:
- name: ticker
in: body
type: string
description: The company ticker symbol.
call: snowflake.get-esg-scores
with:
ticker: '{{ticker}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-esg-scores
method: POST
Triggers a refresh of the market analytics Power BI dataset and returns the refresh job status.
naftiko: '0.5'
info:
label: Power BI Market Analytics Refresh
description: Triggers a refresh of the market analytics Power BI dataset and returns the refresh job status.
tags:
- analytics
- dashboard
- power-bi
capability:
exposes:
- type: mcp
namespace: market-analytics-dashboard
port: 8080
tools:
- name: refresh-market-analytics
description: Trigger a Power BI market analytics dataset refresh.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.refresh-market-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-market-dataset
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 1
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 15
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- slack
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-15
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#capital-markets'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 29
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-29
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Triggers a deployment pipeline for the exchange platform in Azure DevOps and returns the deployment run status.
naftiko: '0.5'
info:
label: Azure DevOps Exchange Platform Deployment
description: Triggers a deployment pipeline for the exchange platform in Azure DevOps and returns the deployment run status.
tags:
- ci-cd
- exchange
- azure-devops
capability:
exposes:
- type: mcp
namespace: exchange-deployment
port: 8080
tools:
- name: trigger-exchange-deploy
description: Trigger exchange platform deployment pipeline.
inputParameters:
- name: pipeline_id
in: body
type: string
description: The Azure DevOps pipeline ID.
- name: environment
in: body
type: string
description: The target environment (staging, production).
call: azuredevops.run-pipeline
with:
pipeline_id: '{{pipeline_id}}'
environment: '{{environment}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/nasdaq
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: pipelines
path: /exchange/_apis/pipelines/{{pipeline_id}}/runs?api-version=7.0
inputParameters:
- name: pipeline_id
in: path
operations:
- name: run-pipeline
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 4
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-4
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: CAPITA
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://nasdaq.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 5
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-5
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Retrieves trading system latency metrics from Datadog, returning P50, P95, and P99 latencies for the matching engine and gateway.
naftiko: '0.5'
info:
label: Datadog Trading Latency Monitoring
description: Retrieves trading system latency metrics from Datadog, returning P50, P95, and P99 latencies for the matching engine and gateway.
tags:
- monitoring
- trading
- datadog
capability:
exposes:
- type: mcp
namespace: trading-latency
port: 8080
tools:
- name: get-trading-latency
description: Retrieve trading latency metrics from Datadog by service.
inputParameters:
- name: service_name
in: body
type: string
description: The trading service name.
call: datadog.get-latency
with:
service_name: '{{service_name}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
header: DD-API-KEY
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /query?query=avg:trace.http.request.duration{service:{{service_name}}}
inputParameters:
- name: service_name
in: query
operations:
- name: get-latency
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 28
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-28
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: CAPITA
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://nasdaq.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 14
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-14
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Analyzes fintech SaaS client usage by querying usage data from Snowflake, pulling subscription data from Salesforce, refreshing Power BI dashboards, and notifying account managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Fintech SaaS Client Usage Analytics
description: Analyzes fintech SaaS client usage by querying usage data from Snowflake, pulling subscription data from Salesforce, refreshing Power BI dashboards, and notifying account managers via Microsoft Teams.
tags:
- market-data
- analytics
- snowflake
- salesforce
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: client-usage
port: 8080
tools:
- name: analyze-client-usage
description: Given a client ID and period, analyze their SaaS product usage.
inputParameters:
- name: client_id
in: body
type: string
description: The client account ID.
- name: period
in: body
type: string
description: The analysis period.
steps:
- name: query-usage
type: call
call: snowflake.execute-query
with:
client_id: '{{client_id}}'
period: '{{period}}'
- name: get-subscription
type: call
call: salesforce.get-subscription
with:
client_id: '{{client_id}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: client-usage-dataset
- name: notify-account-mgr
type: call
call: msteams.post-message
with:
team_id: account-management
channel_id: usage-reports
message: 'Client {{client_id}} usage report ({{period}}): {{query-usage.api_calls}} API calls. Subscription: {{get-subscription.Product__c}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: subscriptions
path: /query/?q=SELECT+Product__c,Tier__c+FROM+Subscription__c+WHERE+Account_ID__c='{{client_id}}'
inputParameters:
- name: client_id
in: query
operations:
- name: get-subscription
method: GET
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 2
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Calculates listing fees for an ETF by pulling fund details from Salesforce and applying the fee schedule from Snowflake, returning annual listing fee and tier classification.
naftiko: '0.5'
info:
label: ETF Listing Fee Calculator
description: Calculates listing fees for an ETF by pulling fund details from Salesforce and applying the fee schedule from Snowflake, returning annual listing fee and tier classification.
tags:
- listing
- etf
- salesforce
- snowflake
capability:
exposes:
- type: mcp
namespace: etf-fees
port: 8080
tools:
- name: calculate-etf-fee
description: Given a fund ticker, calculate the ETF listing fee.
inputParameters:
- name: fund_ticker
in: body
type: string
description: The ETF fund ticker.
steps:
- name: get-fund-details
type: call
call: salesforce.get-fund
with:
fund_ticker: '{{fund_ticker}}'
- name: calculate-fee
type: call
call: snowflake.execute-query
with:
aum: '{{get-fund-details.AUM__c}}'
fund_ticker: '{{fund_ticker}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: funds
path: /query/?q=SELECT+AUM__c,Share_Count__c,Fund_Name__c+FROM+ETF__c+WHERE+Ticker__c='{{fund_ticker}}'
inputParameters:
- name: fund_ticker
in: query
operations:
- name: get-fund
method: GET
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 16
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-16
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: CAPITA
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://nasdaq.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 7
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- teams
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-7
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: capital-markets
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Delivers market data products to clients by extracting data from Snowflake, logging delivery in Salesforce, creating a ServiceNow ticket for tracking, and notifying the data services team via Microsoft Teams.
naftiko: '0.5'
info:
label: Market Data Product Delivery Pipeline
description: Delivers market data products to clients by extracting data from Snowflake, logging delivery in Salesforce, creating a ServiceNow ticket for tracking, and notifying the data services team via Microsoft Teams.
tags:
- market-data
- data-delivery
- snowflake
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-product-delivery
port: 8080
tools:
- name: deliver-market-data
description: Given a client and data product, extract and deliver the market data feed.
inputParameters:
- name: client_id
in: body
type: string
description: The client account ID.
- name: data_product
in: body
type: string
description: The data product name.
- name: delivery_date
in: body
type: string
description: Delivery date.
steps:
- name: extract-data
type: call
call: snowflake.execute-query
with:
client_id: '{{client_id}}'
product: '{{data_product}}'
date: '{{delivery_date}}'
- name: log-delivery
type: call
call: salesforce.create-delivery-log
with:
client_id: '{{client_id}}'
product: '{{data_product}}'
records: '{{extract-data.rowCount}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Data delivery: {{data_product}} for {{client_id}}'
category: data_delivery
description: Delivered {{extract-data.rowCount}} records of {{data_product}} to {{client_id}}.
- name: notify-team
type: call
call: msteams.post-message
with:
team_id: data-services-team
channel_id: deliveries
message: 'Market data delivered: {{data_product}} to {{client_id}}. {{extract-data.rowCount}} records. Ticket: {{create-ticket.number}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: delivery-logs
path: /sobjects/Data_Delivery__c
operations:
- name: create-delivery-log
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 6
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- jira
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-6
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: CAPI
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Retrieves reference data for a security from Bloomberg, including company name, sector, country, and market capitalization.
naftiko: '0.5'
info:
label: Bloomberg Reference Data Fetch
description: Retrieves reference data for a security from Bloomberg, including company name, sector, country, and market capitalization.
tags:
- reference-data
- bloomberg
capability:
exposes:
- type: mcp
namespace: reference-data
port: 8080
tools:
- name: get-reference-data
description: Fetch reference data by Bloomberg identifier.
inputParameters:
- name: identifier
in: body
type: string
description: The Bloomberg identifier.
call: bloomberg.get-reference
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/catalogs/bbg/datasets
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: reference
path: /reference?identifier={{identifier}}
inputParameters:
- name: identifier
in: query
operations:
- name: get-reference
method: GET
Queries historical IPO pricing data from Snowflake by sector and year, returning offering prices, first-day closes, and underwriter details.
naftiko: '0.5'
info:
label: IPO Pricing History Query
description: Queries historical IPO pricing data from Snowflake by sector and year, returning offering prices, first-day closes, and underwriter details.
tags:
- ipo
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: ipo-history
port: 8080
tools:
- name: get-ipo-history
description: Query IPO pricing history by sector and year.
inputParameters:
- name: sector
in: body
type: string
description: The industry sector.
- name: year
in: body
type: string
description: The year.
call: snowflake.get-ipo-history
with:
sector: '{{sector}}'
year: '{{year}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: get-ipo-history
method: POST
Retrieves exchange membership details from Salesforce by member firm ID, returning membership type, trading permissions, sponsored access status, and annual fee.
naftiko: '0.5'
info:
label: Exchange Membership Lookup
description: Retrieves exchange membership details from Salesforce by member firm ID, returning membership type, trading permissions, sponsored access status, and annual fee.
tags:
- membership
- exchange
- salesforce
capability:
exposes:
- type: mcp
namespace: exchange-membership
port: 8080
tools:
- name: get-membership-details
description: Look up exchange membership by member firm ID.
inputParameters:
- name: firm_id
in: body
type: string
description: The member firm identifier.
call: salesforce.get-membership
with:
firm_id: '{{firm_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: memberships
path: /query/?q=SELECT+Membership_Type__c,Trading_Permissions__c,Sponsored_Access__c,Annual_Fee__c+FROM+Member_Firm__c+WHERE+Firm_ID__c='{{firm_id}}'
inputParameters:
- name: firm_id
in: query
operations:
- name: get-membership
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 17
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-17
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 3
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Provisions market data API keys for new fintech clients by creating credentials in Snowflake, logging the provisioning in Salesforce, and notifying the integrations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Market Data API Key Provisioning
description: Provisions market data API keys for new fintech clients by creating credentials in Snowflake, logging the provisioning in Salesforce, and notifying the integrations team via Microsoft Teams.
tags:
- fintech
- provisioning
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: api-provisioning
port: 8080
tools:
- name: provision-api-key
description: Given a client ID and product tier, provision market data API access.
inputParameters:
- name: client_id
in: body
type: string
description: The client account ID.
- name: product_tier
in: body
type: string
description: The product tier (basic, professional, enterprise).
steps:
- name: create-credentials
type: call
call: snowflake.execute-query
with:
client_id: '{{client_id}}'
tier: '{{product_tier}}'
- name: log-provisioning
type: call
call: salesforce.create-provisioning-log
with:
client_id: '{{client_id}}'
tier: '{{product_tier}}'
- name: notify-integrations
type: call
call: msteams.post-message
with:
team_id: integrations-team
channel_id: provisioning
message: API key provisioned for client {{client_id}} ({{product_tier}} tier).
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.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://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: provisioning-logs
path: /sobjects/Provisioning_Log__c
operations:
- name: create-provisioning-log
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Prepares SEC regulatory filings by extracting compliance data from Snowflake, generating filing documents in SharePoint, creating a review task in Jira, and notifying the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Filing Preparation Pipeline
description: Prepares SEC regulatory filings by extracting compliance data from Snowflake, generating filing documents in SharePoint, creating a review task in Jira, and notifying the compliance team via Microsoft Teams.
tags:
- compliance
- regulatory
- snowflake
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-filing
port: 8080
tools:
- name: prepare-regulatory-filing
description: Given a filing type and period, compile data, generate documents, and route for review.
inputParameters:
- name: filing_type
in: body
type: string
description: The regulatory filing type (e.g., Form_ATS, Rule_606, annual_report).
- name: reporting_period
in: body
type: string
description: The reporting period.
steps:
- name: extract-data
type: call
call: snowflake.execute-query
with:
filing_type: '{{filing_type}}'
period: '{{reporting_period}}'
- name: create-docs
type: call
call: sharepoint.create-folder
with:
site_id: regulatory_site
folder_path: Filings/{{filing_type}}/{{reporting_period}}
- name: create-review
type: call
call: jira.create-issue
with:
project_key: COMP
summary: 'Regulatory filing: {{filing_type}} - {{reporting_period}}'
description: 'Data extracted: {{extract-data.rowCount}} records. Docs: {{create-docs.webUrl}}.'
issue_type: Task
- name: notify-compliance
type: call
call: msteams.post-message
with:
team_id: compliance-team
channel_id: filings
message: 'Regulatory filing {{filing_type}} for {{reporting_period}} ready. Jira: {{create-review.key}}. Docs: {{create-docs.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://nasdaq.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 7
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 13
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-13
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://nasdaq.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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 2
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-2
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://nasdaq.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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 3
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- slack
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-3
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#capital-markets'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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 capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 12
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-12
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: capital-markets.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_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
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 6
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Provisions a new SaaS product subscription for a client by creating the subscription in Salesforce, setting up access in Snowflake, configuring monitoring in Datadog, and sending welcome credentials via Microsoft Outlook.
naftiko: '0.5'
info:
label: Client SaaS Product Provisioning
description: Provisions a new SaaS product subscription for a client by creating the subscription in Salesforce, setting up access in Snowflake, configuring monitoring in Datadog, and sending welcome credentials via Microsoft Outlook.
tags:
- market-data
- client-onboarding
- salesforce
- snowflake
- datadog
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: saas-provisioning
port: 8080
tools:
- name: provision-saas-product
description: Given client and product details, provision full SaaS access.
inputParameters:
- name: client_id
in: body
type: string
description: The client account ID.
- name: product_name
in: body
type: string
description: The SaaS product name.
- name: contact_email
in: body
type: string
description: The client contact email.
steps:
- name: create-subscription
type: call
call: salesforce.create-subscription
with:
client_id: '{{client_id}}'
product: '{{product_name}}'
- name: provision-data-access
type: call
call: snowflake.execute-query
with:
client_id: '{{client_id}}'
product: '{{product_name}}'
- name: setup-monitoring
type: call
call: datadog.create-monitor
with:
client_id: '{{client_id}}'
product: '{{product_name}}'
- name: send-credentials
type: call
call: outlook.send-mail
with:
recipient: '{{contact_email}}'
subject: Nasdaq {{product_name}} - Access Provisioned
body: 'Your {{product_name}} subscription is active. Subscription: {{create-subscription.id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://nasdaq.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: subscriptions
path: /sobjects/Subscription__c
operations:
- name: create-subscription
method: POST
- type: http
namespace: snowflake
baseUri: https://nasdaq.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: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/onboarding@nasdaq.com/sendMail
operations:
- name: send-mail
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 4
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 10
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-10
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://nasdaq.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 1
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-1
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://nasdaq.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 the status of exchange platform enhancement requests from Jira by project and sprint, returning issue summaries, priorities, and assignees.
naftiko: '0.5'
info:
label: Jira Exchange Enhancement Tracker
description: Retrieves the status of exchange platform enhancement requests from Jira by project and sprint, returning issue summaries, priorities, and assignees.
tags:
- project-management
- exchange
- jira
capability:
exposes:
- type: mcp
namespace: exchange-enhancements
port: 8080
tools:
- name: get-enhancement-status
description: Look up exchange enhancement issues by project and sprint.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
- name: sprint_name
in: body
type: string
description: The sprint name.
call: jira.search-issues
with:
project_key: '{{project_key}}'
sprint_name: '{{sprint_name}}'
consumes:
- type: http
namespace: jira
baseUri: https://nasdaq.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search?jql=project={{project_key}}+AND+sprint='{{sprint_name}}'
inputParameters:
- name: project_key
in: query
- name: sprint_name
in: query
operations:
- name: search-issues
method: GET
Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
naftiko: '0.5'
info:
label: Nasdaq Workflow 11
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
tags:
- capital-markets
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: capital-markets
port: 8080
tools:
- name: nasdaq-workflow-11
description: Orchestrates capital-markets operations including data retrieval, processing, and automated notification for Nasdaq.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nasdaq-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: nasdaq-ops
baseUri: https://api.nasdaq.com/operations/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Retrieves operational data for Nasdaq capital-markets workflows.
naftiko: '0.5'
info:
label: Nasdaq Data Lookup 5
description: Retrieves operational data for Nasdaq capital-markets workflows.
tags:
- capital-markets
- operations
capability:
exposes:
- type: mcp
namespace: nasdaq-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Nasdaq capital-markets workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nasdaq-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nasdaq-data
baseUri: https://api.nasdaq.com/data/v1
authentication:
type: bearer
token: $secrets.nasdaq_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Retrieves a PayPal payout batch status, checks for failed items, and posts a summary report to the operations Slack channel and logs to Datadog.
naftiko: '0.5'
info:
label: Payout Batch Monitor
description: Retrieves a PayPal payout batch status, checks for failed items, and posts a summary report to the operations Slack channel and logs to Datadog.
tags:
- payouts
- monitoring
- paypal
- slack
- datadog
capability:
exposes:
- type: mcp
namespace: payout-monitoring
port: 8080
tools:
- name: monitor-payout-batch
description: Given a PayPal batch payout ID, retrieve the batch status, post a summary to Slack, and log metrics to Datadog.
inputParameters:
- name: payout_batch_id
in: body
type: string
description: The PayPal payout batch ID.
steps:
- name: get-batch
type: call
call: paypal.get-batch
with:
payout_batch_id: '{{payout_batch_id}}'
- name: notify-ops
type: call
call: slack.post-message
with:
channel: '#payout-ops'
text: 'Payout batch {{payout_batch_id}}: Status={{get-batch.batch_header.batch_status}}, Total=${{get-batch.batch_header.amount.value}}, Items={{get-batch.batch_header.payments}}'
- name: log-metric
type: call
call: datadog.submit-metric
with:
metric: paypal.payout.batch_total
type: gauge
points:
- value: '{{get-batch.batch_header.amount.value}}'
tags:
- batch_id:{{payout_batch_id}}
- status:{{get-batch.batch_header.batch_status}}
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments/payouts
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: batches
path: /{{payout_batch_id}}
inputParameters:
- name: payout_batch_id
in: path
operations:
- name: get-batch
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: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: metrics
path: /series
operations:
- name: submit-metric
method: POST
When a high-risk transaction is flagged, retrieves the payment from PayPal, opens a Jira ticket for the fraud team, and sends an alert to the risk Slack channel.
naftiko: '0.5'
info:
label: Fraud Alert Triage Pipeline
description: When a high-risk transaction is flagged, retrieves the payment from PayPal, opens a Jira ticket for the fraud team, and sends an alert to the risk Slack channel.
tags:
- fraud
- risk
- paypal
- jira
- slack
capability:
exposes:
- type: mcp
namespace: fraud-triage
port: 8080
tools:
- name: triage-fraud-alert
description: Given a flagged PayPal capture ID, retrieve payment details, create a Jira ticket for investigation, and alert the risk team on Slack.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID that triggered the fraud alert.
- name: risk_score
in: body
type: number
description: The computed risk score for this transaction.
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FRAUD
summary: High-risk transaction {{capture_id}} - ${{get-payment.amount.value}} {{get-payment.amount.currency_code}}
description: 'Payer: {{get-payment.payer.email_address}}
Risk Score: {{risk_score}}
Status: {{get-payment.status}}'
issue_type: Task
priority: High
- name: alert-slack
type: call
call: slack.post-message
with:
channel: '#fraud-alerts'
text: 'FRAUD ALERT: Capture {{capture_id}} for ${{get-payment.amount.value}} flagged with risk score {{risk_score}}. Jira: {{create-ticket.key}} - {{create-ticket.self}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: jira
baseUri: https://paypal-internal.atlassian.net/rest/api/3
authentication:
type: 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 configuration details for a specific PayPal webhook by webhook ID.
naftiko: '0.5'
info:
label: Get Notification Webhook Details
description: Retrieves configuration details for a specific PayPal webhook by webhook ID.
tags:
- webhooks
- paypal
- notifications
capability:
exposes:
- type: mcp
namespace: webhooks
port: 8080
tools:
- name: get-webhook-details
description: Look up a webhook configuration by webhook ID.
inputParameters:
- name: webhook_id
in: body
type: string
description: The PayPal webhook ID.
call: paypal.get-webhook
with:
webhook_id: '{{webhook_id}}'
outputParameters:
- name: url
type: string
mapping: $.url
- name: event_types
type: array
mapping: $.event_types
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/notifications
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: webhooks
path: /webhooks/{{webhook_id}}
inputParameters:
- name: webhook_id
in: path
operations:
- name: get-webhook
method: GET
Retrieves a PayPal vaulted payment token, checks its age, and syncs token metadata to Snowflake and notifies the security team via Slack if rotation is needed.
naftiko: '0.5'
info:
label: Vault Token Rotation and Sync
description: Retrieves a PayPal vaulted payment token, checks its age, and syncs token metadata to Snowflake and notifies the security team via Slack if rotation is needed.
tags:
- vault
- security
- paypal
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: vault-rotation
port: 8080
tools:
- name: check-vault-token
description: Given a PayPal vault token ID, retrieve metadata, log to Snowflake, and alert if rotation is needed.
inputParameters:
- name: token_id
in: body
type: string
description: The PayPal vault payment token ID.
steps:
- name: get-token
type: call
call: paypal.get-token
with:
token_id: '{{token_id}}'
- name: log-token
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.vault_token_audit (token_id, customer_id, payment_source, create_time, checked_at) VALUES ('{{token_id}}', '{{get-token.customer.id}}', '{{get-token.payment_source}}', '{{get-token.create_time}}', CURRENT_TIMESTAMP())
warehouse: SECURITY_WH
database: PAYPAL_DATA
- name: notify-security
type: call
call: slack.post-message
with:
channel: '#security-vault'
text: 'Vault token audit: {{token_id}} for customer {{get-token.customer.id}}. Created: {{get-token.create_time}}. Review for rotation policy compliance.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v3/vault/payment-tokens
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payment-tokens
path: /{{token_id}}
inputParameters:
- name: token_id
in: path
operations:
- name: get-token
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.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 regulatory transaction reports from PayPal data, formats them per jurisdiction requirements, and submits to compliance systems.
naftiko: '0.5'
info:
label: Regulatory Transaction Report Generator
description: Generates regulatory transaction reports from PayPal data, formats them per jurisdiction requirements, and submits to compliance systems.
tags:
- compliance
- paypal
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: generate-regulatory-report
description: Generate and submit jurisdiction-specific regulatory reports.
inputParameters:
- name: jurisdiction
in: body
type: string
description: The regulatory jurisdiction code.
- name: period
in: body
type: string
description: Reporting period in YYYY-Q# format.
steps:
- name: query-transactions
type: call
call: snowflake.run-query
with:
query: SELECT * FROM compliance.regulatory_transactions WHERE jurisdiction = '{{jurisdiction}}' AND period = '{{period}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site: regulatory-filings
folder: /{{jurisdiction}}/{{period}}
filename: transaction_report_{{jurisdiction}}_{{period}}.csv
- name: notify
type: call
call: slack.post-message
with:
channel: '#regulatory-compliance'
text: Regulatory report for {{jurisdiction}} period {{period}} uploaded. {{query-transactions.row_count}} transactions included.
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.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
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: files
path: /drives/root/children
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
Optimizes cross-border payment routing by checking exchange rates, selecting optimal corridors, and logging route decisions for compliance.
naftiko: '0.5'
info:
label: Cross-Border Payment Routing Optimizer
description: Optimizes cross-border payment routing by checking exchange rates, selecting optimal corridors, and logging route decisions for compliance.
tags:
- cross-border
- paypal
- snowflake
- optimization
capability:
exposes:
- type: mcp
namespace: routing-optimization
port: 8080
tools:
- name: optimize-payment-route
description: Select optimal cross-border payment corridor and log the decision.
inputParameters:
- name: source_country
in: body
type: string
description: Source country code.
- name: destination_country
in: body
type: string
description: Destination country code.
- name: amount
in: body
type: string
description: Payment amount.
steps:
- name: get-rates
type: call
call: paypal.get-exchange-rates
with:
from: '{{source_country}}'
to: '{{destination_country}}'
- name: log-routing
type: call
call: snowflake.run-query
with:
query: INSERT INTO payments.routing_decisions (source, destination, amount, rate, corridor) VALUES ('{{source_country}}', '{{destination_country}}', '{{amount}}', '{{get-rates.rate}}', '{{get-rates.corridor}}')
- name: notify
type: call
call: slack.post-message
with:
channel: '#cross-border-ops'
text: 'Route optimized: {{source_country}} -> {{destination_country}}, ${{amount}} at rate {{get-rates.rate}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: rates
path: /exchange-rates
operations:
- name: get-exchange-rates
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: slack
baseUri: 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 PayPal order for seller protection eligibility, logs the result in Snowflake, and notifies the seller via Slack.
naftiko: '0.5'
info:
label: Seller Protection Eligibility Check
description: Checks a PayPal order for seller protection eligibility, logs the result in Snowflake, and notifies the seller via Slack.
tags:
- seller-protection
- risk
- paypal
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: seller-protection
port: 8080
tools:
- name: check-seller-protection
description: Given a PayPal order ID and seller Slack channel, check protection eligibility and report results.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
- name: seller_channel
in: body
type: string
description: The seller Slack channel.
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: log-result
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.seller_protection_checks (order_id, status, protection_eligibility, checked_at) VALUES ('{{order_id}}', '{{get-order.status}}', '{{get-order.purchase_units[0].payments.captures[0].seller_protection.status}}', CURRENT_TIMESTAMP())
warehouse: RISK_WH
database: PAYPAL_DATA
- name: notify-seller
type: call
call: slack.post-message
with:
channel: '{{seller_channel}}'
text: 'Order {{order_id}}: Seller Protection = {{get-order.purchase_units[0].payments.captures[0].seller_protection.status}}. Amount: ${{get-order.purchase_units[0].amount.value}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.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 PayPal subscription payment fails, retrieves subscription details, logs a Salesforce case, and sends the subscriber a retry notification via SendGrid.
naftiko: '0.5'
info:
label: Subscription Churn Prevention
description: When a PayPal subscription payment fails, retrieves subscription details, logs a Salesforce case, and sends the subscriber a retry notification via SendGrid.
tags:
- subscriptions
- churn
- paypal
- salesforce
- sendgrid
capability:
exposes:
- type: mcp
namespace: churn-prevention
port: 8080
tools:
- name: handle-failed-subscription
description: Given a failed subscription ID and subscriber email, fetch details, log a Salesforce case, and send a retry email.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID.
- name: subscriber_email
in: body
type: string
description: The subscriber email address.
steps:
- name: get-subscription
type: call
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
- name: log-case
type: call
call: salesforce.create-case
with:
Subject: 'Subscription payment failure: {{subscription_id}}'
Description: 'Plan: {{get-subscription.plan_id}}. Status: {{get-subscription.status}}. Next billing: {{get-subscription.billing_info.next_billing_time}}.'
Priority: High
Origin: PayPal Webhook
- name: send-retry-email
type: call
call: sendgrid.send-email
with:
to: '{{subscriber_email}}'
subject: Action Needed - Update Your Payment Method
body: 'Your subscription payment could not be processed. Please update your payment method to avoid service interruption. Subscription: {{subscription_id}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing/subscriptions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /Case
operations:
- name: create-case
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
For transactions exceeding a threshold, retrieves payment details from PayPal, runs sanctions screening, and logs the result to ServiceNow for audit.
naftiko: '0.5'
info:
label: High Value Transaction Compliance Check
description: For transactions exceeding a threshold, retrieves payment details from PayPal, runs sanctions screening, and logs the result to ServiceNow for audit.
tags:
- compliance
- paypal
- servicenow
- sanctions
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: check-high-value-transaction
description: Screen a high-value PayPal transaction for compliance and log to audit trail.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID.
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: screen-sanctions
type: call
call: compliance-api.screen-entity
with:
name: '{{get-payment.payer.name.given_name}} {{get-payment.payer.name.surname}}'
email: '{{get-payment.payer.email_address}}'
- name: log-audit
type: call
call: servicenow.create-record
with:
table: u_compliance_audit
data:
transaction_id: '{{capture_id}}'
amount: '{{get-payment.amount.value}}'
screening_result: '{{screen-sanctions.status}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: compliance-api
baseUri: https://compliance.paypal.com/api/v1
authentication:
type: bearer
token: $secrets.compliance_api_token
resources:
- name: screening
path: /screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: servicenow
baseUri: https://paypal.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: records
path: /table/u_compliance_audit
operations:
- name: create-record
method: POST
Retrieves a product from the PayPal catalog by product ID, used for validating subscription plan product linkage.
naftiko: '0.5'
info:
label: Get Product Catalog Entry
description: Retrieves a product from the PayPal catalog by product ID, used for validating subscription plan product linkage.
tags:
- catalog
- paypal
- products
capability:
exposes:
- type: mcp
namespace: catalog
port: 8080
tools:
- name: get-product
description: Look up a PayPal catalog product by ID. Returns name, type, category, and description.
inputParameters:
- name: product_id
in: body
type: string
description: The PayPal product ID.
call: paypal.get-product
with:
product_id: '{{product_id}}'
outputParameters:
- name: name
type: string
mapping: $.name
- name: product_type
type: string
mapping: $.type
- name: category
type: string
mapping: $.category
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/catalogs/products
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: products
path: /{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
Analyzes merchant API usage patterns from logs, identifies anomalies, and generates usage reports in Tableau for the platform team.
naftiko: '0.5'
info:
label: Merchant API Usage Analytics Pipeline
description: Analyzes merchant API usage patterns from logs, identifies anomalies, and generates usage reports in Tableau for the platform team.
tags:
- analytics
- paypal
- splunk
- tableau
- api-usage
capability:
exposes:
- type: mcp
namespace: api-analytics
port: 8080
tools:
- name: analyze-api-usage
description: Generate API usage analytics for a merchant.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
- name: date_range
in: body
type: string
description: The date range for analysis.
steps:
- name: query-logs
type: call
call: splunk.search
with:
query: index=paypal_api merchant_id={{merchant_id}} earliest={{date_range}} | stats count by endpoint, status_code
- name: refresh-dashboard
type: call
call: tableau.refresh-workbook
with:
workbook_id: api-usage-analytics
- name: notify
type: call
call: slack.post-message
with:
channel: '#platform-analytics'
text: 'API usage report for merchant {{merchant_id}} refreshed. Total calls: {{query-logs.total_count}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.paypal.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search
method: POST
- type: http
namespace: tableau
baseUri: https://tableau.paypal.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/default/workbooks/{{workbook_id}}/refresh
operations:
- name: refresh-workbook
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 refund details by refund ID from PayPal, returning status, amount refunded, and linked capture ID.
naftiko: '0.5'
info:
label: Refund Lookup
description: Retrieves refund details by refund ID from PayPal, returning status, amount refunded, and linked capture ID.
tags:
- refunds
- payments
- paypal
capability:
exposes:
- type: mcp
namespace: refunds
port: 8080
tools:
- name: get-refund
description: Look up a PayPal refund by refund ID. Returns status, amount, and linked capture ID.
inputParameters:
- name: refund_id
in: body
type: string
description: The PayPal refund ID.
call: paypal.get-refund
with:
refund_id: '{{refund_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: string
mapping: $.amount.value
- name: capture_id
type: string
mapping: $.links[0].href
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments/refunds
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: refunds
path: /{{refund_id}}
inputParameters:
- name: refund_id
in: path
operations:
- name: get-refund
method: GET
Retrieves transaction details from PayPal Sync API by transaction ID, returning event code, transaction amount, and fee.
naftiko: '0.5'
info:
label: Get Transaction Event Details
description: Retrieves transaction details from PayPal Sync API by transaction ID, returning event code, transaction amount, and fee.
tags:
- transactions
- reporting
- paypal
capability:
exposes:
- type: mcp
namespace: transaction-reporting
port: 8080
tools:
- name: get-transaction
description: Look up a PayPal transaction by ID via the Sync API. Returns event code, gross amount, fee, and transaction status.
inputParameters:
- name: transaction_id
in: body
type: string
description: The PayPal transaction ID.
call: paypal.search-transaction
with:
transaction_id: '{{transaction_id}}'
outputParameters:
- name: event_code
type: string
mapping: $.transaction_details[0].transaction_info.transaction_event_code
- name: gross_amount
type: string
mapping: $.transaction_details[0].transaction_info.transaction_amount.value
- name: fee
type: string
mapping: $.transaction_details[0].transaction_info.fee_amount.value
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting/transactions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: transactions
path: /?transaction_id={{transaction_id}}&fields=all
inputParameters:
- name: transaction_id
in: query
operations:
- name: search-transaction
method: GET
Routes merchant support tickets by analyzing the issue, looking up merchant status in PayPal, and assigning to the appropriate team in ServiceNow.
naftiko: '0.5'
info:
label: Merchant Support Ticket Auto Router
description: Routes merchant support tickets by analyzing the issue, looking up merchant status in PayPal, and assigning to the appropriate team in ServiceNow.
tags:
- support
- paypal
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: support-routing
port: 8080
tools:
- name: route-support-ticket
description: Automatically route a merchant support ticket to the correct team.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
- name: issue_description
in: body
type: string
description: Description of the support issue.
steps:
- name: get-merchant-info
type: call
call: paypal.get-merchant-info
with:
merchant_id: '{{merchant_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Merchant support: {{merchant_id}}'
description: '{{issue_description}}
Merchant tier: {{get-merchant-info.tier}}'
priority: '3'
- name: alert-team
type: call
call: slack.post-message
with:
channel: '#merchant-support'
text: New ticket {{create-ticket.number}} for merchant {{merchant_id}} ({{get-merchant-info.tier}} tier)
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: merchants
path: /partners/{{merchant_id}}
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-merchant-info
method: GET
- type: http
namespace: servicenow
baseUri: https://paypal.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Processes a refund through PayPal, creates a credit memo in the ERP, and notifies the customer via SendGrid email.
naftiko: '0.5'
info:
label: Payment Refund and Credit Memo Pipeline
description: Processes a refund through PayPal, creates a credit memo in the ERP, and notifies the customer via SendGrid email.
tags:
- refunds
- paypal
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: refund-processing
port: 8080
tools:
- name: process-refund-with-credit-memo
description: Issue a PayPal refund, create a credit memo, and notify the customer.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID to refund.
- name: amount
in: body
type: string
description: The refund amount.
- name: customer_email
in: body
type: string
description: Customer email for notification.
steps:
- name: issue-refund
type: call
call: paypal.refund-capture
with:
capture_id: '{{capture_id}}'
amount: '{{amount}}'
- name: create-credit-memo
type: call
call: sap.create-credit-memo
with:
reference: '{{issue-refund.id}}'
amount: '{{amount}}'
- name: notify-customer
type: call
call: sendgrid.send-email
with:
to: '{{customer_email}}'
subject: Your refund of ${{amount}} has been processed
template_id: d-refund-confirmation
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: refunds
path: /captures/{{capture_id}}/refund
inputParameters:
- name: capture_id
in: path
operations:
- name: refund-capture
method: POST
- type: http
namespace: sap
baseUri: https://paypal-erp.s4hana.ondemand.com/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: credit-memos
path: /credit-memos
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
Retrieves a missed PayPal webhook event, logs it to Elasticsearch for audit, and posts a notification to the engineering Slack channel for investigation.
naftiko: '0.5'
info:
label: Webhook Event Replay and Audit
description: Retrieves a missed PayPal webhook event, logs it to Elasticsearch for audit, and posts a notification to the engineering Slack channel for investigation.
tags:
- webhooks
- audit
- paypal
- elasticsearch
- slack
capability:
exposes:
- type: mcp
namespace: webhook-audit
port: 8080
tools:
- name: replay-webhook-event
description: Given a PayPal webhook event ID, retrieve the event, index it in Elasticsearch, and notify engineering on Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The PayPal webhook event ID.
steps:
- name: get-event
type: call
call: paypal.get-event
with:
event_id: '{{event_id}}'
- name: index-event
type: call
call: elasticsearch.index-doc
with:
index: paypal-webhook-events
body:
event_id: '{{event_id}}'
event_type: '{{get-event.event_type}}'
resource_type: '{{get-event.resource_type}}'
create_time: '{{get-event.create_time}}'
replayed: true
- name: notify-engineering
type: call
call: slack.post-message
with:
channel: '#webhook-monitoring'
text: 'Webhook event replayed: {{event_id}} ({{get-event.event_type}}). Indexed in Elasticsearch. Created: {{get-event.create_time}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/notifications/webhooks-events
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: webhook-events
path: /{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
- type: http
namespace: elasticsearch
baseUri: https://paypal-es.es.us-west-2.aws.found.io
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-doc
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 product in the PayPal catalog, then creates a billing plan for it, and logs the new plan in Salesforce for sales enablement.
naftiko: '0.5'
info:
label: Product Catalog and Plan Provisioner
description: Creates a product in the PayPal catalog, then creates a billing plan for it, and logs the new plan in Salesforce for sales enablement.
tags:
- catalog
- billing
- paypal
- salesforce
- subscriptions
capability:
exposes:
- type: mcp
namespace: catalog-provisioner
port: 8080
tools:
- name: provision-product-and-plan
description: Given product and pricing details, create a PayPal catalog product and billing plan, then log in Salesforce.
inputParameters:
- name: product_name
in: body
type: string
description: The product name.
- name: product_type
in: body
type: string
description: The product type (SERVICE, PHYSICAL, DIGITAL).
- name: plan_name
in: body
type: string
description: The billing plan name.
- name: price
in: body
type: string
description: The monthly price.
steps:
- name: create-product
type: call
call: paypal.create-product
with:
name: '{{product_name}}'
type: '{{product_type}}'
- name: create-plan
type: call
call: paypal.create-plan
with:
product_id: '{{create-product.id}}'
name: '{{plan_name}}'
billing_cycles:
- frequency:
interval_unit: MONTH
interval_count: 1
tenure_type: REGULAR
pricing_scheme:
fixed_price:
value: '{{price}}'
currency_code: USD
payment_preferences:
auto_bill_outstanding: true
- name: log-salesforce
type: call
call: salesforce.create-record
with:
object: Product2
Name: '{{product_name}}'
PayPal_Product_ID__c: '{{create-product.id}}'
PayPal_Plan_ID__c: '{{create-plan.id}}'
Monthly_Price__c: '{{price}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/catalogs/products
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: products
path: /
operations:
- name: create-product
method: POST
- type: http
namespace: paypal-billing
baseUri: https://api-m.paypal.com/v1/billing/plans
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: plans
path: /
operations:
- name: create-plan
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: records
path: /{{object}}
inputParameters:
- name: object
in: path
operations:
- name: create-record
method: POST
Retrieves a PayPal dispute, fetches order and shipment evidence from ShipStation, and submits the evidence to the dispute via the PayPal API.
naftiko: '0.5'
info:
label: Dispute Auto-Response with Evidence
description: Retrieves a PayPal dispute, fetches order and shipment evidence from ShipStation, and submits the evidence to the dispute via the PayPal API.
tags:
- disputes
- evidence
- paypal
- shipstation
- automation
capability:
exposes:
- type: mcp
namespace: dispute-response
port: 8080
tools:
- name: auto-respond-dispute
description: Given a PayPal dispute ID and ShipStation order ID, gather evidence and submit a response.
inputParameters:
- name: dispute_id
in: body
type: string
description: The PayPal dispute ID.
- name: shipstation_order_id
in: body
type: string
description: The ShipStation order ID for shipment evidence.
steps:
- name: get-dispute
type: call
call: paypal.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: get-shipment
type: call
call: shipstation.get-order
with:
order_id: '{{shipstation_order_id}}'
- name: submit-evidence
type: call
call: paypal.provide-evidence
with:
dispute_id: '{{dispute_id}}'
evidence:
- evidence_type: PROOF_OF_FULFILLMENT
evidence_info:
tracking_info:
- carrier_name: '{{get-shipment.carrierCode}}'
tracking_number: '{{get-shipment.shipments[0].trackingNumber}}'
message: 'Order was shipped and delivered. Tracking: {{get-shipment.shipments[0].trackingNumber}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer/disputes
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- name: evidence
path: /{{dispute_id}}/provide-evidence
inputParameters:
- name: dispute_id
in: path
operations:
- name: provide-evidence
method: POST
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
When a PayPal dispute is opened, retrieves dispute and transaction details, creates a ServiceNow case, and notifies the merchant via email through SendGrid.
naftiko: '0.5'
info:
label: Dispute Escalation Orchestrator
description: When a PayPal dispute is opened, retrieves dispute and transaction details, creates a ServiceNow case, and notifies the merchant via email through SendGrid.
tags:
- disputes
- paypal
- servicenow
- sendgrid
- merchant-support
capability:
exposes:
- type: mcp
namespace: dispute-escalation
port: 8080
tools:
- name: escalate-dispute
description: Given a PayPal dispute ID and merchant email, fetch dispute details, open a ServiceNow case, and email the merchant with case info.
inputParameters:
- name: dispute_id
in: body
type: string
description: The PayPal dispute ID.
- name: merchant_email
in: body
type: string
description: The merchant contact email.
steps:
- name: get-dispute
type: call
call: paypal.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: open-case
type: call
call: servicenow.create-case
with:
short_description: Dispute {{dispute_id}} - {{get-dispute.reason}} - ${{get-dispute.dispute_amount.value}}
category: payment_dispute
priority: '2'
description: 'Dispute {{dispute_id}} opened for reason: {{get-dispute.reason}}. Amount: ${{get-dispute.dispute_amount.value}}. Status: {{get-dispute.status}}.'
- name: notify-merchant
type: call
call: sendgrid.send-email
with:
to: '{{merchant_email}}'
subject: PayPal Dispute {{dispute_id}} - Action Required
body: 'A dispute has been filed for ${{get-dispute.dispute_amount.value}}. Reason: {{get-dispute.reason}}. Case reference: {{open-case.number}}. Please respond within 10 business days.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer/disputes
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- type: http
namespace: servicenow
baseUri: https://paypal.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: 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
Assembles quarterly merchant review packages by pulling transaction data from PayPal, dispute metrics from Snowflake, and creating a Confluence report.
naftiko: '0.5'
info:
label: Quarterly Merchant Review Assembler
description: Assembles quarterly merchant review packages by pulling transaction data from PayPal, dispute metrics from Snowflake, and creating a Confluence report.
tags:
- reporting
- paypal
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: quarterly-review
port: 8080
tools:
- name: assemble-quarterly-review
description: Compile quarterly merchant review data from multiple sources.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
- name: quarter
in: body
type: string
description: The quarter in YYYY-Q# format.
steps:
- name: get-transaction-summary
type: call
call: snowflake.run-query
with:
query: SELECT COUNT(*) as txn_count, SUM(amount) as total_volume, AVG(amount) as avg_txn FROM paypal.transactions WHERE merchant_id = '{{merchant_id}}' AND quarter = '{{quarter}}'
- name: get-dispute-metrics
type: call
call: snowflake.run-query
with:
query: SELECT COUNT(*) as dispute_count, SUM(amount) as dispute_volume FROM paypal.disputes WHERE merchant_id = '{{merchant_id}}' AND quarter = '{{quarter}}'
- name: create-report
type: call
call: confluence.create-page
with:
space: MERCHANT
title: Quarterly Review - {{merchant_id}} - {{quarter}}
body: 'Transaction volume: ${{get-transaction-summary.total_volume}}, Count: {{get-transaction-summary.txn_count}}, Disputes: {{get-dispute-metrics.dispute_count}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.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: confluence
baseUri: https://paypal-internal.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 status of a PayPal billing subscription including plan details, next billing date, and subscriber info.
naftiko: '0.5'
info:
label: Get Subscription Status
description: Retrieves the current status of a PayPal billing subscription including plan details, next billing date, and subscriber info.
tags:
- subscriptions
- billing
- paypal
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-subscription
description: Look up a PayPal subscription by ID. Returns status, plan ID, next billing date, and subscriber name.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID.
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: plan_id
type: string
mapping: $.plan_id
- name: next_billing
type: string
mapping: $.billing_info.next_billing_time
- name: subscriber_name
type: string
mapping: $.subscriber.name.given_name
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing/subscriptions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
On a new PayPal payment, retrieves payer identity, screens against an OFAC sanctions API, and logs the result in Elasticsearch for audit.
naftiko: '0.5'
info:
label: Compliance Sanctions Screening
description: On a new PayPal payment, retrieves payer identity, screens against an OFAC sanctions API, and logs the result in Elasticsearch for audit.
tags:
- compliance
- sanctions
- paypal
- ofac
- elasticsearch
capability:
exposes:
- type: mcp
namespace: sanctions-screening
port: 8080
tools:
- name: screen-payer-sanctions
description: Given a PayPal capture ID, retrieve payer details, screen against OFAC, and log the result.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID.
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: screen-ofac
type: call
call: ofac.screen-entity
with:
name: '{{get-payment.payer.name.given_name}} {{get-payment.payer.name.surname}}'
country: '{{get-payment.payer.address.country_code}}'
- name: log-screening
type: call
call: elasticsearch.index-doc
with:
index: sanctions-screening
body:
capture_id: '{{capture_id}}'
payer_name: '{{get-payment.payer.name.given_name}} {{get-payment.payer.name.surname}}'
screening_result: '{{screen-ofac.match_status}}'
screened_at: '{{screen-ofac.screened_at}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: ofac
baseUri: https://api.ofac-api.com/v4
authentication:
type: apiKey
name: apiKey
in: header
value: $secrets.ofac_api_key
resources:
- name: screening
path: /screen
operations:
- name: screen-entity
method: POST
- type: http
namespace: elasticsearch
baseUri: https://paypal-es.es.us-west-2.aws.found.io
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-doc
method: POST
Checks the status of a PayPal partner referral by referral ID, used for marketplace and platform onboarding flows.
naftiko: '0.5'
info:
label: Get Partner Referral Status
description: Checks the status of a PayPal partner referral by referral ID, used for marketplace and platform onboarding flows.
tags:
- partner
- onboarding
- paypal
capability:
exposes:
- type: mcp
namespace: partner-referrals
port: 8080
tools:
- name: get-referral
description: Look up a PayPal partner referral by referral ID. Returns referral status and partner link.
inputParameters:
- name: partner_referral_id
in: body
type: string
description: The PayPal partner referral ID.
call: paypal.get-referral
with:
partner_referral_id: '{{partner_referral_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: action_url
type: string
mapping: $.links[1].href
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/customer/partner-referrals
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: referrals
path: /{{partner_referral_id}}
inputParameters:
- name: partner_referral_id
in: path
operations:
- name: get-referral
method: GET
Retrieves a Venmo-originated PayPal payment, logs it in Snowflake analytics, and sends a push notification via Firebase Cloud Messaging.
naftiko: '0.5'
info:
label: Venmo Payment Notification Relay
description: Retrieves a Venmo-originated PayPal payment, logs it in Snowflake analytics, and sends a push notification via Firebase Cloud Messaging.
tags:
- venmo
- payments
- paypal
- snowflake
- firebase
capability:
exposes:
- type: mcp
namespace: venmo-notifications
port: 8080
tools:
- name: relay-venmo-payment
description: Given a PayPal capture ID from a Venmo payment and a device token, log the payment and send a push notification.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID from Venmo.
- name: device_token
in: body
type: string
description: The FCM device token for push notification.
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: log-analytics
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.venmo_payments (capture_id, amount, currency, status, logged_at) VALUES ('{{capture_id}}', '{{get-payment.amount.value}}', '{{get-payment.amount.currency_code}}', '{{get-payment.status}}', CURRENT_TIMESTAMP())
warehouse: ANALYTICS_WH
database: PAYPAL_DATA
- name: send-push
type: call
call: firebase.send-notification
with:
token: '{{device_token}}'
title: Payment Received
body: 'You received ${{get-payment.amount.value}} via Venmo. Status: {{get-payment.status}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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: messages
path: /messages:send
operations:
- name: send-notification
method: POST
Retrieves a PayPal capture, pushes the transaction details to New Relic as a custom event, and logs to Grafana annotations for real-time dashboards.
naftiko: '0.5'
info:
label: Real-Time Payment Monitoring Dashboard
description: Retrieves a PayPal capture, pushes the transaction details to New Relic as a custom event, and logs to Grafana annotations for real-time dashboards.
tags:
- monitoring
- real-time
- paypal
- new-relic
- grafana
capability:
exposes:
- type: mcp
namespace: payment-monitoring
port: 8080
tools:
- name: monitor-payment
description: Given a PayPal capture ID, push transaction data to New Relic and Grafana for monitoring.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID.
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: log-newrelic
type: call
call: newrelic.create-event
with:
eventType: PayPalTransaction
capture_id: '{{capture_id}}'
amount: '{{get-payment.amount.value}}'
currency: '{{get-payment.amount.currency_code}}'
status: '{{get-payment.status}}'
- name: annotate-grafana
type: call
call: grafana.create-annotation
with:
text: 'PayPal capture {{capture_id}}: ${{get-payment.amount.value}} {{get-payment.amount.currency_code}} - {{get-payment.status}}'
tags:
- paypal
- payment
- '{{get-payment.status}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: newrelic
baseUri: https://insights-collector.newrelic.com/v1
authentication:
type: apiKey
name: X-Insert-Key
in: header
value: $secrets.newrelic_insert_key
resources:
- name: events
path: /accounts/$secrets.newrelic_account_id/events
operations:
- name: create-event
method: POST
- type: http
namespace: grafana
baseUri: https://paypal-grafana.grafana.net/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: annotations
path: /annotations
operations:
- name: create-annotation
method: POST
Migrates customer payment methods from legacy vault to new PayPal vault API, validates tokens, and sends migration confirmation emails.
naftiko: '0.5'
info:
label: Payment Method Migration Orchestrator
description: Migrates customer payment methods from legacy vault to new PayPal vault API, validates tokens, and sends migration confirmation emails.
tags:
- vault
- paypal
- migration
- sendgrid
capability:
exposes:
- type: mcp
namespace: vault-migration
port: 8080
tools:
- name: migrate-payment-method
description: Migrate a payment method from legacy to new vault and confirm with customer.
inputParameters:
- name: customer_id
in: body
type: string
description: The PayPal customer ID.
- name: legacy_token
in: body
type: string
description: The legacy vault token.
steps:
- name: get-legacy-token
type: call
call: paypal.get-vault-token
with:
token_id: '{{legacy_token}}'
- name: create-new-token
type: call
call: paypal.create-payment-token
with:
customer_id: '{{customer_id}}'
payment_source: '{{get-legacy-token.payment_source}}'
- name: confirm-migration
type: call
call: sendgrid.send-email
with:
to: '{{get-legacy-token.customer.email_address}}'
template_id: d-vault-migration-confirmation
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v3/vault
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payment-tokens
path: /payment-tokens/{{token_id}}
inputParameters:
- name: token_id
in: path
operations:
- name: get-vault-token
method: GET
- name: new-tokens
path: /payment-tokens
operations:
- name: create-payment-token
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
Checks the status of an individual payout item within a PayPal batch payout, returning transaction status, amount, and receiver.
naftiko: '0.5'
info:
label: Get Payout Item Status
description: Checks the status of an individual payout item within a PayPal batch payout, returning transaction status, amount, and receiver.
tags:
- payouts
- paypal
- disbursements
capability:
exposes:
- type: mcp
namespace: payouts
port: 8080
tools:
- name: get-payout-item
description: Look up a PayPal payout item by item ID. Returns transaction status, amount, and receiver email.
inputParameters:
- name: payout_item_id
in: body
type: string
description: The PayPal payout item ID.
call: paypal.get-payout-item
with:
payout_item_id: '{{payout_item_id}}'
outputParameters:
- name: transaction_status
type: string
mapping: $.transaction_status
- name: amount
type: string
mapping: $.payout_item.amount.value
- name: receiver
type: string
mapping: $.payout_item.receiver
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments/payouts-item
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payout-items
path: /{{payout_item_id}}
inputParameters:
- name: payout_item_id
in: path
operations:
- name: get-payout-item
method: GET
Creates a PayPal payout to a marketplace seller, logs it in Snowflake, and sends a confirmation email to the seller via SendGrid.
naftiko: '0.5'
info:
label: Marketplace Seller Payout and Notification
description: Creates a PayPal payout to a marketplace seller, logs it in Snowflake, and sends a confirmation email to the seller via SendGrid.
tags:
- payouts
- marketplace
- paypal
- snowflake
- sendgrid
capability:
exposes:
- type: mcp
namespace: seller-payouts
port: 8080
tools:
- name: payout-seller
description: Given a seller email and payout amount, create a PayPal payout, log it, and confirm via email.
inputParameters:
- name: seller_email
in: body
type: string
description: The seller PayPal email.
- name: amount
in: body
type: string
description: The payout amount.
- name: currency
in: body
type: string
description: The payout currency code.
- name: note
in: body
type: string
description: A note for the seller.
steps:
- name: create-payout
type: call
call: paypal.create-payout
with:
sender_batch_header:
sender_batch_id: batch_{{seller_email}}_{{amount}}
email_subject: You have a payout!
items:
- recipient_type: EMAIL
amount:
value: '{{amount}}'
currency: '{{currency}}'
receiver: '{{seller_email}}'
note: '{{note}}'
- name: log-payout
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.seller_payouts (batch_id, seller_email, amount, currency, created_at) VALUES ('{{create-payout.batch_header.payout_batch_id}}', '{{seller_email}}', '{{amount}}', '{{currency}}', CURRENT_TIMESTAMP())
warehouse: FINANCE_WH
database: PAYPAL_DATA
- name: confirm-email
type: call
call: sendgrid.send-email
with:
to: '{{seller_email}}'
subject: Payout Sent - ${{amount}} {{currency}}
body: 'A payout of ${{amount}} {{currency}} has been sent to your PayPal account. Batch ID: {{create-payout.batch_header.payout_batch_id}}. Note: {{note}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments/payouts
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payouts
path: /
operations:
- name: create-payout
method: POST
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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
Detects potential account takeovers by monitoring login anomalies, cross-referencing PayPal user info, and triggering security lockdowns with team notifications.
naftiko: '0.5'
info:
label: Account Takeover Detection Pipeline
description: Detects potential account takeovers by monitoring login anomalies, cross-referencing PayPal user info, and triggering security lockdowns with team notifications.
tags:
- security
- paypal
- splunk
- slack
- fraud
capability:
exposes:
- type: mcp
namespace: ato-detection
port: 8080
tools:
- name: detect-account-takeover
description: Investigate potential account takeover and trigger security response.
inputParameters:
- name: user_id
in: body
type: string
description: The PayPal user ID.
- name: login_ip
in: body
type: string
description: The suspicious login IP address.
steps:
- name: get-user-info
type: call
call: paypal.get-user-info
with:
user_id: '{{user_id}}'
- name: check-login-history
type: call
call: splunk.search
with:
query: index=auth user_id={{user_id}} | stats count by src_ip, country | where src_ip!='{{login_ip}}'
- name: alert-security
type: call
call: slack.post-message
with:
channel: '#security-incidents'
text: 'POTENTIAL ATO: User {{user_id}} ({{get-user-info.email}}) login from {{login_ip}}. Previous IPs: {{check-login-history.results}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/identity
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: userinfo
path: /oauth2/userinfo
operations:
- name: get-user-info
method: GET
- type: http
namespace: splunk
baseUri: https://splunk.paypal.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search
path: /search/jobs
operations:
- name: search
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 PayPal payment, converts the amount using an exchange rate API, and updates the accounting record in Snowflake for multi-currency reconciliation.
naftiko: '0.5'
info:
label: Multi-Currency Payment Reconciliation
description: Retrieves a PayPal payment, converts the amount using an exchange rate API, and updates the accounting record in Snowflake for multi-currency reconciliation.
tags:
- multi-currency
- reconciliation
- paypal
- exchange-rates
- snowflake
capability:
exposes:
- type: mcp
namespace: currency-reconciliation
port: 8080
tools:
- name: reconcile-currency
description: Given a PayPal capture ID and target currency, convert the amount and update the Snowflake ledger.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID.
- name: target_currency
in: body
type: string
description: The target currency code (e.g., EUR, GBP).
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: get-rate
type: call
call: exchangerate.get-rate
with:
base: '{{get-payment.amount.currency_code}}'
target: '{{target_currency}}'
- name: update-ledger
type: call
call: snowflake.execute-statement
with:
statement: UPDATE finance.multicurrency_ledger SET converted_amount = {{get-payment.amount.value}} * {{get-rate.rate}}, target_currency = '{{target_currency}}', exchange_rate = {{get-rate.rate}} WHERE capture_id = '{{capture_id}}'
warehouse: FINANCE_WH
database: PAYPAL_DATA
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: exchangerate
baseUri: https://api.exchangerate-api.com/v4
authentication:
type: apiKey
name: apikey
in: query
value: $secrets.exchangerate_api_key
resources:
- name: rates
path: /latest/{{base}}
inputParameters:
- name: base
in: path
operations:
- name: get-rate
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Provisions a new merchant by creating a PayPal partner referral, setting up Salesforce account, and notifying the sales team via Slack.
naftiko: '0.5'
info:
label: New Merchant Setup Pipeline
description: Provisions a new merchant by creating a PayPal partner referral, setting up Salesforce account, and notifying the sales team via Slack.
tags:
- onboarding
- paypal
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: merchant-setup
port: 8080
tools:
- name: setup-new-merchant
description: Provision a new merchant account across PayPal, CRM, and notify sales.
inputParameters:
- name: merchant_name
in: body
type: string
description: The merchant business name.
- name: merchant_email
in: body
type: string
description: The merchant contact email.
- name: sales_rep
in: body
type: string
description: The assigned sales representative.
steps:
- name: create-referral
type: call
call: paypal.create-partner-referral
with:
business_name: '{{merchant_name}}'
email: '{{merchant_email}}'
- name: create-account
type: call
call: salesforce.create-account
with:
Name: '{{merchant_name}}'
PayPal_Referral_ID__c: '{{create-referral.partner_referral_id}}'
Owner: '{{sales_rep}}'
- name: notify-sales
type: call
call: slack.post-message
with:
channel: '#merchant-onboarding'
text: 'New merchant {{merchant_name}} created. Referral: {{create-referral.partner_referral_id}}. SF Account: {{create-account.id}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: partner-referrals
path: /partner-referrals
operations:
- name: create-partner-referral
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: create-account
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 PayPal transaction history with date range and filter criteria.
naftiko: '0.5'
info:
label: Get Transaction Search Results
description: Searches PayPal transaction history with date range and filter criteria.
tags:
- transactions
- paypal
- reporting
capability:
exposes:
- type: mcp
namespace: reporting
port: 8080
tools:
- name: search-transactions
description: Search PayPal transactions within a date range.
inputParameters:
- name: start_date
in: body
type: string
description: ISO 8601 start date.
- name: end_date
in: body
type: string
description: ISO 8601 end date.
call: paypal.search-transactions
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: transactions
type: array
mapping: $.transaction_details
- name: total_items
type: integer
mapping: $.total_items
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: transactions
path: /transactions
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: search-transactions
method: GET
When a PayPal subscription is cancelled, retrieves subscription details, logs churn data in Snowflake, and creates a HubSpot re-engagement contact for win-back campaigns.
naftiko: '0.5'
info:
label: Subscription Cancellation Feedback Loop
description: When a PayPal subscription is cancelled, retrieves subscription details, logs churn data in Snowflake, and creates a HubSpot re-engagement contact for win-back campaigns.
tags:
- subscriptions
- churn
- paypal
- snowflake
- hubspot
capability:
exposes:
- type: mcp
namespace: cancellation-feedback
port: 8080
tools:
- name: process-cancellation
description: Given a cancelled PayPal subscription ID and subscriber email, log churn and create a re-engagement contact.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID.
- name: subscriber_email
in: body
type: string
description: The subscriber email.
- name: cancellation_reason
in: body
type: string
description: The stated reason for cancellation.
steps:
- name: get-subscription
type: call
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
- name: log-churn
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.subscription_churn (subscription_id, plan_id, subscriber_email, reason, cancelled_at) VALUES ('{{subscription_id}}', '{{get-subscription.plan_id}}', '{{subscriber_email}}', '{{cancellation_reason}}', CURRENT_TIMESTAMP())
warehouse: ANALYTICS_WH
database: PAYPAL_DATA
- name: create-reengage
type: call
call: hubspot.create-contact
with:
properties:
email: '{{subscriber_email}}'
paypal_subscription_id: '{{subscription_id}}'
churn_reason: '{{cancellation_reason}}'
lifecycle_stage: opportunity
lead_status: WINBACK
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing/subscriptions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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
Creates a PayPal invoice for a customer, logs the invoice in Salesforce, and sends a personalized notification via SendGrid.
naftiko: '0.5'
info:
label: Invoice Generation and Delivery
description: Creates a PayPal invoice for a customer, logs the invoice in Salesforce, and sends a personalized notification via SendGrid.
tags:
- invoicing
- paypal
- salesforce
- sendgrid
capability:
exposes:
- type: mcp
namespace: invoice-delivery
port: 8080
tools:
- name: generate-and-deliver-invoice
description: Given invoice details, create a PayPal invoice, log it in Salesforce, and email the customer.
inputParameters:
- name: customer_email
in: body
type: string
description: The customer email.
- name: customer_name
in: body
type: string
description: The customer full name.
- name: amount
in: body
type: string
description: The invoice amount.
- name: description
in: body
type: string
description: The invoice line item description.
steps:
- name: create-invoice
type: call
call: paypal.create-invoice
with:
detail:
currency_code: USD
primary_recipients:
- billing_info:
email_address: '{{customer_email}}'
name:
full_name: '{{customer_name}}'
items:
- name: '{{description}}'
unit_amount:
currency_code: USD
value: '{{amount}}'
quantity: '1'
- name: log-salesforce
type: call
call: salesforce.create-record
with:
object: Invoice__c
PayPal_Invoice_ID__c: '{{create-invoice.id}}'
Customer_Email__c: '{{customer_email}}'
Amount__c: '{{amount}}'
- name: email-customer
type: call
call: sendgrid.send-email
with:
to: '{{customer_email}}'
subject: Invoice from PayPal - {{description}}
body: 'Hello {{customer_name}}, an invoice for ${{amount}} has been created. View and pay here: https://www.paypal.com/invoice/p/#/{{create-invoice.id}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/invoicing/invoices
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: invoices
path: /
operations:
- name: create-invoice
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: records
path: /{{object}}
inputParameters:
- name: object
in: path
operations:
- name: create-record
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
When a PayPal order is created but not completed within a time window, retrieves the order, logs the abandonment in Snowflake, and sends a recovery email via SendGrid.
naftiko: '0.5'
info:
label: Shopping Cart Abandonment Recovery
description: When a PayPal order is created but not completed within a time window, retrieves the order, logs the abandonment in Snowflake, and sends a recovery email via SendGrid.
tags:
- checkout
- cart-abandonment
- paypal
- snowflake
- sendgrid
capability:
exposes:
- type: mcp
namespace: cart-recovery
port: 8080
tools:
- name: recover-abandoned-cart
description: Given an incomplete PayPal order ID and buyer email, log the abandonment and send a recovery email.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
- name: buyer_email
in: body
type: string
description: The buyer email for recovery.
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: log-abandonment
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.cart_abandonments (order_id, amount, status, buyer_email, logged_at) VALUES ('{{order_id}}', '{{get-order.purchase_units[0].amount.value}}', '{{get-order.status}}', '{{buyer_email}}', CURRENT_TIMESTAMP())
warehouse: ANALYTICS_WH
database: PAYPAL_DATA
- name: send-recovery
type: call
call: sendgrid.send-email
with:
to: '{{buyer_email}}'
subject: Complete Your Purchase - ${{get-order.purchase_units[0].amount.value}} Awaiting
body: You left items in your cart totaling ${{get-order.purchase_units[0].amount.value}}. Complete your PayPal checkout now before the offer expires.
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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
When a chargeback is received, retrieves payment details from PayPal, gathers evidence from Salesforce, and submits a dispute response with documentation.
naftiko: '0.5'
info:
label: Chargeback Dispute Response Pipeline
description: When a chargeback is received, retrieves payment details from PayPal, gathers evidence from Salesforce, and submits a dispute response with documentation.
tags:
- disputes
- paypal
- salesforce
- chargeback
capability:
exposes:
- type: mcp
namespace: chargeback-response
port: 8080
tools:
- name: respond-to-chargeback
description: Gather evidence and respond to a PayPal chargeback dispute.
inputParameters:
- name: dispute_id
in: body
type: string
description: The PayPal dispute ID.
- name: transaction_id
in: body
type: string
description: The original transaction ID.
steps:
- name: get-dispute
type: call
call: paypal.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: get-order-evidence
type: call
call: salesforce.get-case
with:
transaction_id: '{{transaction_id}}'
- name: submit-evidence
type: call
call: paypal.submit-evidence
with:
dispute_id: '{{dispute_id}}'
evidence_type: PROOF_OF_FULFILLMENT
notes: 'Order delivered per tracking. Salesforce case: {{get-order-evidence.CaseNumber}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /disputes/{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- name: evidence
path: /disputes/{{dispute_id}}/provide-evidence
inputParameters:
- name: dispute_id
in: path
operations:
- name: submit-evidence
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: cases
path: /sobjects/Case
inputParameters:
- name: transaction_id
in: query
operations:
- name: get-case
method: GET
Checks a PayPal partner merchant integration status, logs health metrics to Datadog, and creates a ServiceNow incident if the integration is unhealthy.
naftiko: '0.5'
info:
label: Partner Integration Health Check
description: Checks a PayPal partner merchant integration status, logs health metrics to Datadog, and creates a ServiceNow incident if the integration is unhealthy.
tags:
- partner
- health-check
- paypal
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: partner-health
port: 8080
tools:
- name: check-partner-health
description: Given a partner and merchant ID, check integration status, log to Datadog, and escalate if unhealthy.
inputParameters:
- name: partner_id
in: body
type: string
description: The PayPal partner ID.
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
steps:
- name: get-integration
type: call
call: paypal.get-merchant-integration
with:
partner_id: '{{partner_id}}'
merchant_id: '{{merchant_id}}'
- name: log-health
type: call
call: datadog.submit-metric
with:
metric: paypal.partner.integration_status
type: gauge
points:
- value: 1
tags:
- partner_id:{{partner_id}}
- merchant_id:{{merchant_id}}
- payments_receivable:{{get-integration.payments_receivable}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Partner integration issue: {{partner_id}} / {{merchant_id}}'
description: 'Payments receivable: {{get-integration.payments_receivable}}. Primary email confirmed: {{get-integration.primary_email_confirmed}}.'
category: partner_integration
urgency: '2'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer/partners
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: merchant-integrations
path: /{{partner_id}}/merchant-integrations/{{merchant_id}}
inputParameters:
- name: partner_id
in: path
- name: merchant_id
in: path
operations:
- name: get-merchant-integration
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: metrics
path: /series
operations:
- name: submit-metric
method: POST
- type: http
namespace: servicenow
baseUri: https://paypal.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Handles subscription plan changes by updating the PayPal subscription, adjusting billing in the ERP, and confirming with the customer.
naftiko: '0.5'
info:
label: Subscription Upgrade Downgrade Handler
description: Handles subscription plan changes by updating the PayPal subscription, adjusting billing in the ERP, and confirming with the customer.
tags:
- subscriptions
- paypal
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: subscription-changes
port: 8080
tools:
- name: handle-plan-change
description: Process a subscription upgrade or downgrade across systems.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID.
- name: new_plan_id
in: body
type: string
description: The new plan ID to switch to.
steps:
- name: get-current-subscription
type: call
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
- name: update-erp
type: call
call: sap.update-billing-plan
with:
subscription_ref: '{{subscription_id}}'
new_plan: '{{new_plan_id}}'
previous_plan: '{{get-current-subscription.plan_id}}'
- name: confirm-change
type: call
call: sendgrid.send-email
with:
to: '{{get-current-subscription.subscriber.email_address}}'
template_id: d-plan-change-confirmation
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /subscriptions/{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: sap
baseUri: https://paypal-erp.s4hana.ondemand.com/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: billing
path: /billing-plans
operations:
- name: update-billing-plan
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
Orchestrates new merchant onboarding by creating a PayPal partner referral, provisioning a Salesforce account, and sending a welcome email via SendGrid.
naftiko: '0.5'
info:
label: Merchant Onboarding Flow
description: Orchestrates new merchant onboarding by creating a PayPal partner referral, provisioning a Salesforce account, and sending a welcome email via SendGrid.
tags:
- onboarding
- partner
- paypal
- salesforce
- sendgrid
capability:
exposes:
- type: mcp
namespace: merchant-onboarding
port: 8080
tools:
- name: onboard-merchant
description: Given merchant details, create a PayPal partner referral, set up a Salesforce account, and send a welcome email.
inputParameters:
- name: merchant_name
in: body
type: string
description: The merchant business name.
- name: merchant_email
in: body
type: string
description: The merchant contact email.
- name: business_type
in: body
type: string
description: The type of business (e.g., INDIVIDUAL, CORPORATION).
steps:
- name: create-referral
type: call
call: paypal.create-referral
with:
partner_config_override:
return_url: https://paypal.com/merchant/onboarding/complete
operations:
- operation: API_INTEGRATION
legal_consents:
- type: SHARE_DATA_CONSENT
granted: true
- name: create-sf-account
type: call
call: salesforce.create-account
with:
Name: '{{merchant_name}}'
Type: '{{business_type}}'
Industry: E-commerce
Email__c: '{{merchant_email}}'
PayPal_Referral_ID__c: '{{create-referral.partner_referral_id}}'
- name: send-welcome
type: call
call: sendgrid.send-email
with:
to: '{{merchant_email}}'
subject: Welcome to PayPal - Complete Your Setup
body: 'Hello {{merchant_name}}, complete your PayPal onboarding here: {{create-referral.links[1].href}}. Your Salesforce account ID: {{create-sf-account.id}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/customer/partner-referrals
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: referrals
path: /
operations:
- name: create-referral
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /Account
operations:
- name: create-account
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
After a PayPal order is completed, retrieves the order, logs the conversion event in Google Analytics, and updates the Salesforce opportunity to Closed Won.
naftiko: '0.5'
info:
label: Checkout Conversion Tracker
description: After a PayPal order is completed, retrieves the order, logs the conversion event in Google Analytics, and updates the Salesforce opportunity to Closed Won.
tags:
- checkout
- analytics
- paypal
- google-analytics
- salesforce
capability:
exposes:
- type: mcp
namespace: conversion-tracking
port: 8080
tools:
- name: track-checkout-conversion
description: Given a completed PayPal order ID and Salesforce opportunity ID, log the conversion and update the CRM.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: log-analytics
type: call
call: ga.collect-event
with:
measurement_id: $secrets.ga_measurement_id
api_secret: $secrets.ga_api_secret
events:
- name: purchase
params:
transaction_id: '{{order_id}}'
value: '{{get-order.purchase_units[0].amount.value}}'
currency: '{{get-order.purchase_units[0].amount.currency_code}}'
- name: close-opportunity
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
StageName: Closed Won
Amount: '{{get-order.purchase_units[0].amount.value}}'
PayPal_Order_ID__c: '{{order_id}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: ga
baseUri: https://www.google-analytics.com
authentication:
type: apiKey
name: api_secret
in: query
value: $secrets.ga_api_secret
resources:
- name: events
path: /mp/collect?measurement_id={{measurement_id}}
inputParameters:
- name: measurement_id
in: query
operations:
- name: collect-event
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: update-opportunity
method: PATCH
Monitors PayPal API response times, logs metrics to Datadog, and triggers PagerDuty alerts when latency exceeds thresholds.
naftiko: '0.5'
info:
label: Payment Gateway Latency Monitor
description: Monitors PayPal API response times, logs metrics to Datadog, and triggers PagerDuty alerts when latency exceeds thresholds.
tags:
- monitoring
- paypal
- datadog
- pagerduty
capability:
exposes:
- type: mcp
namespace: latency-monitor
port: 8080
tools:
- name: check-gateway-latency
description: Monitor PayPal API latency and alert on threshold breaches.
inputParameters:
- name: endpoint
in: body
type: string
description: The PayPal API endpoint to monitor.
steps:
- name: check-health
type: call
call: paypal.health-check
with:
endpoint: '{{endpoint}}'
- name: log-metric
type: call
call: datadog.submit-metric
with:
metric: paypal.api.latency_ms
value: '{{check-health.response_time_ms}}'
tags:
- endpoint:{{endpoint}}
- name: trigger-alert
type: call
call: pagerduty.create-incident
with:
service: paypal-gateway
title: 'High latency on {{endpoint}}: {{check-health.response_time_ms}}ms'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: health
path: /health
operations:
- name: health-check
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /series
operations:
- name: submit-metric
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
Retrieves details for a product in the PayPal product catalog by product ID.
naftiko: '0.5'
info:
label: Get Catalog Product Details
description: Retrieves details for a product in the PayPal product catalog by product ID.
tags:
- catalog
- paypal
- products
capability:
exposes:
- type: mcp
namespace: catalog
port: 8080
tools:
- name: get-catalog-product
description: Look up a product in the PayPal catalog by ID.
inputParameters:
- name: product_id
in: body
type: string
description: The PayPal catalog product ID.
call: paypal.get-product
with:
product_id: '{{product_id}}'
outputParameters:
- name: name
type: string
mapping: $.name
- name: description
type: string
mapping: $.description
- name: type
type: string
mapping: $.type
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/catalogs
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: products
path: /products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
Queries PayPal transaction history for a merchant, checks velocity thresholds, and creates a PagerDuty incident if limits are exceeded.
naftiko: '0.5'
info:
label: Transaction Velocity Alert
description: Queries PayPal transaction history for a merchant, checks velocity thresholds, and creates a PagerDuty incident if limits are exceeded.
tags:
- risk
- velocity
- paypal
- pagerduty
- monitoring
capability:
exposes:
- type: mcp
namespace: velocity-alert
port: 8080
tools:
- name: check-transaction-velocity
description: Given a merchant email and time window, query PayPal transactions and trigger a PagerDuty alert if velocity exceeds threshold.
inputParameters:
- name: merchant_email
in: body
type: string
description: The merchant PayPal email.
- name: start_date
in: body
type: string
description: Start date in ISO 8601 format.
- name: end_date
in: body
type: string
description: End date in ISO 8601 format.
- name: threshold
in: body
type: number
description: Maximum allowed transaction count.
steps:
- name: get-transactions
type: call
call: paypal.list-transactions
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
fields: all
- name: create-incident
type: call
call: pagerduty.create-incident
with:
title: Transaction velocity alert for {{merchant_email}}
service_id: $secrets.pagerduty_risk_service_id
urgency: high
body: 'Transaction count exceeded threshold of {{threshold}} between {{start_date}} and {{end_date}}. Total: {{get-transactions.total_items}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting/transactions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: transactions
path: /?start_date={{start_date}}&end_date={{end_date}}&fields={{fields}}
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
- name: fields
in: query
operations:
- name: list-transactions
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
Retrieves PayPal order details by order ID, including intent, purchase units, and current order status.
naftiko: '0.5'
info:
label: Get Order Details
description: Retrieves PayPal order details by order ID, including intent, purchase units, and current order status.
tags:
- orders
- checkout
- paypal
capability:
exposes:
- type: mcp
namespace: checkout
port: 8080
tools:
- name: get-order
description: Look up a PayPal order by order ID. Returns status, intent, total amount, and payee email.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
call: paypal.get-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: intent
type: string
mapping: $.intent
- name: total
type: string
mapping: $.purchase_units[0].amount.value
- name: payee_email
type: string
mapping: $.purchase_units[0].payee.email_address
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Retrieves the current PayPal exchange rate between two currency codes.
naftiko: '0.5'
info:
label: Get Exchange Rate Lookup
description: Retrieves the current PayPal exchange rate between two currency codes.
tags:
- payments
- paypal
- currency
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-exchange-rate
description: Look up PayPal exchange rate between two currencies.
inputParameters:
- name: from_currency
in: body
type: string
description: Source currency code.
- name: to_currency
in: body
type: string
description: Target currency code.
call: paypal.get-exchange-rate
with:
from_currency: '{{from_currency}}'
to_currency: '{{to_currency}}'
outputParameters:
- name: rate
type: string
mapping: $.exchange_rate
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: exchange-rates
path: /exchange-rates
inputParameters:
- name: from_currency
in: query
- name: to_currency
in: query
operations:
- name: get-exchange-rate
method: GET
Checks merchant account health by reviewing dispute ratio from PayPal, updating risk scores in Datadog, and alerting the risk team when thresholds are exceeded.
naftiko: '0.5'
info:
label: Merchant Account Health Monitor
description: Checks merchant account health by reviewing dispute ratio from PayPal, updating risk scores in Datadog, and alerting the risk team when thresholds are exceeded.
tags:
- risk
- paypal
- datadog
- slack
- monitoring
capability:
exposes:
- type: mcp
namespace: merchant-health
port: 8080
tools:
- name: monitor-merchant-health
description: Check merchant dispute ratios and alert on risk threshold breaches.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant account ID.
steps:
- name: get-disputes
type: call
call: paypal.list-disputes
with:
merchant_id: '{{merchant_id}}'
- name: push-metric
type: call
call: datadog.submit-metric
with:
metric: paypal.merchant.dispute_ratio
value: '{{get-disputes.dispute_ratio}}'
tags:
- merchant:{{merchant_id}}
- name: alert-risk
type: call
call: slack.post-message
with:
channel: '#merchant-risk'
text: 'Merchant {{merchant_id}} dispute ratio: {{get-disputes.dispute_ratio}}%. Total disputes: {{get-disputes.total_items}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /disputes
inputParameters:
- name: merchant_id
in: query
operations:
- name: list-disputes
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /series
operations:
- name: submit-metric
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 abandoned PayPal checkouts, creates follow-up tasks in HubSpot, and sends reminder emails to recover lost conversions.
naftiko: '0.5'
info:
label: Abandoned Checkout Follow-Up Pipeline
description: Detects abandoned PayPal checkouts, creates follow-up tasks in HubSpot, and sends reminder emails to recover lost conversions.
tags:
- checkout
- paypal
- hubspot
- sendgrid
- conversion
capability:
exposes:
- type: mcp
namespace: checkout-recovery
port: 8080
tools:
- name: follow-up-abandoned-checkout
description: Send recovery communications for abandoned PayPal checkouts.
inputParameters:
- name: order_id
in: body
type: string
description: The abandoned PayPal order ID.
- name: customer_email
in: body
type: string
description: The customer email.
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: create-followup
type: call
call: hubspot.create-task
with:
subject: 'Abandoned checkout follow-up: {{order_id}}'
email: '{{customer_email}}'
amount: '{{get-order.purchase_units[0].amount.value}}'
- name: send-reminder
type: call
call: sendgrid.send-email
with:
to: '{{customer_email}}'
template_id: d-abandoned-checkout
dynamic_data:
order_amount: '{{get-order.purchase_units[0].amount.value}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
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: tasks
path: /crm/v3/objects/tasks
operations:
- name: create-task
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 the available and pending balance for a PayPal merchant account.
naftiko: '0.5'
info:
label: Get Customer Balance
description: Retrieves the available and pending balance for a PayPal merchant account.
tags:
- payments
- paypal
- balance
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-customer-balance
description: Look up available and pending balance for a PayPal account.
inputParameters:
- name: account_id
in: body
type: string
description: The PayPal account ID.
call: paypal.get-balance
with:
account_id: '{{account_id}}'
outputParameters:
- name: available_balance
type: string
mapping: $.balances[0].available.value
- name: currency
type: string
mapping: $.balances[0].available.currency_code
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: balances
path: /balances
inputParameters:
- name: account_id
in: query
operations:
- name: get-balance
method: GET
Disburses payments for multi-party orders by capturing PayPal payments, splitting funds to sellers, and logging disbursements in the ledger.
naftiko: '0.5'
info:
label: Multi-Party Order Disbursement Pipeline
description: Disburses payments for multi-party orders by capturing PayPal payments, splitting funds to sellers, and logging disbursements in the ledger.
tags:
- disbursement
- paypal
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: disbursement
port: 8080
tools:
- name: disburse-multi-party-order
description: Capture and disburse funds for a multi-party PayPal order.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
steps:
- name: capture-order
type: call
call: paypal.capture-order
with:
order_id: '{{order_id}}'
- name: log-disbursement
type: call
call: snowflake.run-query
with:
query: INSERT INTO finance.disbursements (order_id, amount, status, captured_at) VALUES ('{{order_id}}', '{{capture-order.purchase_units[0].payments.captures[0].amount.value}}', 'COMPLETED', CURRENT_TIMESTAMP)
- name: notify-ops
type: call
call: slack.post-message
with:
channel: '#disbursements'
text: 'Order {{order_id}} disbursed: ${{capture-order.purchase_units[0].payments.captures[0].amount.value}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /orders/{{order_id}}/capture
inputParameters:
- name: order_id
in: path
operations:
- name: capture-order
method: POST
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: slack
baseUri: 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 marketplace orders by splitting payments between sellers via PayPal, recording commissions in the ERP, and notifying sellers via email.
naftiko: '0.5'
info:
label: Marketplace Split Payment Processor
description: Processes marketplace orders by splitting payments between sellers via PayPal, recording commissions in the ERP, and notifying sellers via email.
tags:
- marketplace
- paypal
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: split-payments
port: 8080
tools:
- name: process-split-payment
description: Split a marketplace payment between sellers and record commissions.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
- name: seller_email
in: body
type: string
description: The seller email address.
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: record-commission
type: call
call: sap.create-journal-entry
with:
reference: '{{order_id}}'
amount: '{{get-order.purchase_units[0].payment_instruction.platform_fees[0].amount.value}}'
type: COMMISSION
- name: notify-seller
type: call
call: sendgrid.send-email
with:
to: '{{seller_email}}'
template_id: d-seller-payment-notification
dynamic_data:
order_id: '{{order_id}}'
net_amount: '{{get-order.purchase_units[0].amount.value}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout
authentication:
type: bearer
token: $secrets.paypal_access_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://paypal-erp.s4hana.ondemand.com/api/v1
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: journal-entries
path: /journal-entries
operations:
- name: create-journal-entry
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 invoice template by template ID from the PayPal invoicing API.
naftiko: '0.5'
info:
label: Get Invoicing Template
description: Retrieves an invoice template by template ID from the PayPal invoicing API.
tags:
- invoicing
- paypal
- templates
capability:
exposes:
- type: mcp
namespace: invoicing
port: 8080
tools:
- name: get-invoice-template
description: Look up a PayPal invoice template by template ID.
inputParameters:
- name: template_id
in: body
type: string
description: The PayPal invoice template ID.
call: paypal.get-template
with:
template_id: '{{template_id}}'
outputParameters:
- name: name
type: string
mapping: $.name
- name: default
type: boolean
mapping: $.default
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/invoicing
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: templates
path: /templates/{{template_id}}
inputParameters:
- name: template_id
in: path
operations:
- name: get-template
method: GET
Fetches a single webhook event by event ID from PayPal, returning event type, resource type, and summary for debugging webhook integrations.
naftiko: '0.5'
info:
label: Retrieve Webhook Event
description: Fetches a single webhook event by event ID from PayPal, returning event type, resource type, and summary for debugging webhook integrations.
tags:
- webhooks
- paypal
- integrations
capability:
exposes:
- type: mcp
namespace: webhooks
port: 8080
tools:
- name: get-webhook-event
description: Look up a PayPal webhook event by event ID. Returns event type, resource type, and create time.
inputParameters:
- name: event_id
in: body
type: string
description: The PayPal webhook event ID.
call: paypal.get-event
with:
event_id: '{{event_id}}'
outputParameters:
- name: event_type
type: string
mapping: $.event_type
- name: resource_type
type: string
mapping: $.resource_type
- name: create_time
type: string
mapping: $.create_time
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/notifications/webhooks-events
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: webhook-events
path: /{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
Retrieves a PayPal invoice by invoice ID, returning status, total amount, due date, and recipient information.
naftiko: '0.5'
info:
label: Get Invoice Details
description: Retrieves a PayPal invoice by invoice ID, returning status, total amount, due date, and recipient information.
tags:
- invoicing
- paypal
- billing
capability:
exposes:
- type: mcp
namespace: invoicing
port: 8080
tools:
- name: get-invoice
description: Look up a PayPal invoice by invoice ID. Returns status, total due, due date, and recipient name.
inputParameters:
- name: invoice_id
in: body
type: string
description: The PayPal invoice ID.
call: paypal.get-invoice
with:
invoice_id: '{{invoice_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount_due
type: string
mapping: $.amount.value
- name: due_date
type: string
mapping: $.detail.payment_term.due_date
- name: recipient_name
type: string
mapping: $.primary_recipients[0].billing_info.name.full_name
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/invoicing/invoices
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: invoices
path: /{{invoice_id}}
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
Retrieves a vaulted payment token from PayPal Vault, returning token metadata, payment source type, and customer ID.
naftiko: '0.5'
info:
label: Get Vault Payment Token
description: Retrieves a vaulted payment token from PayPal Vault, returning token metadata, payment source type, and customer ID.
tags:
- vault
- payment-tokens
- paypal
capability:
exposes:
- type: mcp
namespace: vault
port: 8080
tools:
- name: get-payment-token
description: Look up a vaulted payment token by ID. Returns payment source type, customer ID, and creation time.
inputParameters:
- name: token_id
in: body
type: string
description: The PayPal vault payment token ID.
call: paypal.get-token
with:
token_id: '{{token_id}}'
outputParameters:
- name: payment_source
type: string
mapping: $.payment_source
- name: customer_id
type: string
mapping: $.customer.id
- name: create_time
type: string
mapping: $.create_time
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v3/vault/payment-tokens
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payment-tokens
path: /{{token_id}}
inputParameters:
- name: token_id
in: path
operations:
- name: get-token
method: GET
Retrieves the configuration and pricing tiers for a PayPal subscription plan.
naftiko: '0.5'
info:
label: Get Subscription Plan Details
description: Retrieves the configuration and pricing tiers for a PayPal subscription plan.
tags:
- subscriptions
- paypal
- billing
capability:
exposes:
- type: mcp
namespace: subscriptions
port: 8080
tools:
- name: get-subscription-plan
description: Look up a PayPal subscription plan by plan ID.
inputParameters:
- name: plan_id
in: body
type: string
description: The PayPal billing plan ID.
call: paypal.get-plan
with:
plan_id: '{{plan_id}}'
outputParameters:
- name: name
type: string
mapping: $.name
- name: status
type: string
mapping: $.status
- name: billing_cycles
type: array
mapping: $.billing_cycles
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: plans
path: /plans/{{plan_id}}
inputParameters:
- name: plan_id
in: path
operations:
- name: get-plan
method: GET
Aggregates payout data from PayPal, generates 1099 tax summaries in Snowflake, and uploads reports to SharePoint for compliance review.
naftiko: '0.5'
info:
label: Payout Tax Reporting Pipeline
description: Aggregates payout data from PayPal, generates 1099 tax summaries in Snowflake, and uploads reports to SharePoint for compliance review.
tags:
- payouts
- paypal
- snowflake
- sharepoint
- tax
capability:
exposes:
- type: mcp
namespace: tax-reporting
port: 8080
tools:
- name: generate-tax-report
description: Generate annual payout tax reports from PayPal data.
inputParameters:
- name: tax_year
in: body
type: string
description: The tax year for reporting.
steps:
- name: query-payouts
type: call
call: snowflake.run-query
with:
query: SELECT payee_email, SUM(amount) as total FROM paypal.payouts WHERE YEAR(created_at) = {{tax_year}} GROUP BY payee_email HAVING total >= 600
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site: finance-compliance
folder: /Tax Reports/{{tax_year}}
filename: paypal_1099_summary_{{tax_year}}.csv
- name: notify-compliance
type: call
call: slack.post-message
with:
channel: '#tax-compliance'
text: PayPal 1099 report for {{tax_year}} uploaded to SharePoint. {{query-payouts.row_count}} payees above threshold.
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.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
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: files
path: /drives/root/children
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
Lists all available webhook event types for PayPal API integrations.
naftiko: '0.5'
info:
label: Get Webhook Event Types
description: Lists all available webhook event types for PayPal API integrations.
tags:
- webhooks
- paypal
- integration
capability:
exposes:
- type: mcp
namespace: webhooks
port: 8080
tools:
- name: list-webhook-event-types
description: Retrieve all supported PayPal webhook event types.
inputParameters: []
call: paypal.list-event-types
with: {}
outputParameters:
- name: event_types
type: array
mapping: $.event_types
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/notifications
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: event-types
path: /webhooks-event-types
operations:
- name: list-event-types
method: GET
On subscription renewal, retrieves the subscription from PayPal, updates the renewal metrics in Datadog, and records the event in Snowflake.
naftiko: '0.5'
info:
label: Subscription Renewal Dashboard Update
description: On subscription renewal, retrieves the subscription from PayPal, updates the renewal metrics in Datadog, and records the event in Snowflake.
tags:
- subscriptions
- renewals
- paypal
- datadog
- snowflake
capability:
exposes:
- type: mcp
namespace: renewal-dashboard
port: 8080
tools:
- name: update-renewal-metrics
description: Given a renewed subscription ID, fetch details, push metrics to Datadog, and log in Snowflake.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID.
steps:
- name: get-subscription
type: call
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
- name: push-metric
type: call
call: datadog.submit-metric
with:
metric: paypal.subscription.renewal
type: count
points:
- value: 1
tags:
- plan:{{get-subscription.plan_id}}
- status:{{get-subscription.status}}
- name: log-renewal
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.subscription_events (subscription_id, plan_id, event_type, event_time) VALUES ('{{subscription_id}}', '{{get-subscription.plan_id}}', 'RENEWAL', CURRENT_TIMESTAMP())
warehouse: ANALYTICS_WH
database: PAYPAL_DATA
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing/subscriptions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apiKey
name: DD-API-KEY
in: header
value: $secrets.datadog_api_key
resources:
- name: metrics
path: /series
operations:
- name: submit-metric
method: POST
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Verifies customer identity through PayPal user info, validates against third-party identity service, and updates KYC status in the compliance database.
naftiko: '0.5'
info:
label: Customer Identity Verification Pipeline
description: Verifies customer identity through PayPal user info, validates against third-party identity service, and updates KYC status in the compliance database.
tags:
- identity
- paypal
- compliance
- snowflake
capability:
exposes:
- type: mcp
namespace: identity-verification
port: 8080
tools:
- name: verify-customer-identity
description: Run full identity verification for a PayPal customer.
inputParameters:
- name: user_id
in: body
type: string
description: The PayPal user ID.
steps:
- name: get-user-info
type: call
call: paypal.get-user-info
with:
user_id: '{{user_id}}'
- name: verify-identity
type: call
call: identity-service.verify
with:
name: '{{get-user-info.name}}'
email: '{{get-user-info.email}}'
address: '{{get-user-info.address}}'
- name: update-kyc-status
type: call
call: snowflake.run-query
with:
query: UPDATE compliance.kyc_status SET verified = '{{verify-identity.result}}', verified_at = CURRENT_TIMESTAMP WHERE user_id = '{{user_id}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/identity
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: userinfo
path: /oauth2/userinfo
operations:
- name: get-user-info
method: GET
- type: http
namespace: identity-service
baseUri: https://identity-api.paypal.com/v1
authentication:
type: bearer
token: $secrets.identity_service_token
resources:
- name: verification
path: /verify
operations:
- name: verify
method: POST
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Retrieves a PayPal authorization, checks if it is nearing expiry, and sends an alert to the merchant via Slack and logs a ServiceNow ticket.
naftiko: '0.5'
info:
label: Payment Authorization Hold Manager
description: Retrieves a PayPal authorization, checks if it is nearing expiry, and sends an alert to the merchant via Slack and logs a ServiceNow ticket.
tags:
- authorizations
- payments
- paypal
- slack
- servicenow
capability:
exposes:
- type: mcp
namespace: auth-hold-manager
port: 8080
tools:
- name: manage-auth-hold
description: Given a PayPal authorization ID, check expiry and alert merchant via Slack and ServiceNow if nearing expiration.
inputParameters:
- name: authorization_id
in: body
type: string
description: The PayPal authorization ID.
- name: merchant_slack_channel
in: body
type: string
description: The Slack channel to notify.
steps:
- name: get-auth
type: call
call: paypal.get-auth
with:
authorization_id: '{{authorization_id}}'
- name: alert-merchant
type: call
call: slack.post-message
with:
channel: '{{merchant_slack_channel}}'
text: 'Authorization {{authorization_id}} for ${{get-auth.amount.value}} is {{get-auth.status}}. Expires: {{get-auth.expiration_time}}. Capture before expiry to avoid re-authorization.'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'PayPal auth hold expiring: {{authorization_id}}'
description: 'Authorization {{authorization_id}} for ${{get-auth.amount.value}} expires at {{get-auth.expiration_time}}. Status: {{get-auth.status}}.'
category: payment_operations
urgency: '2'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments/authorizations
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: authorizations
path: /{{authorization_id}}
inputParameters:
- name: authorization_id
in: path
operations:
- name: get-auth
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: servicenow
baseUri: https://paypal.service-now.com/api/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 recurring donations by tracking PayPal subscriptions, syncing donor data to HubSpot CRM, and sending tax receipts via SendGrid.
naftiko: '0.5'
info:
label: Recurring Donation Management Pipeline
description: Manages recurring donations by tracking PayPal subscriptions, syncing donor data to HubSpot CRM, and sending tax receipts via SendGrid.
tags:
- donations
- paypal
- hubspot
- sendgrid
capability:
exposes:
- type: mcp
namespace: donations
port: 8080
tools:
- name: manage-recurring-donation
description: Sync recurring donation data and send tax receipts.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID for the donation.
steps:
- name: get-subscription
type: call
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
- name: sync-donor
type: call
call: hubspot.update-contact
with:
email: '{{get-subscription.subscriber.email_address}}'
properties:
donation_status: '{{get-subscription.status}}'
last_donation_amount: '{{get-subscription.billing_info.last_payment.amount.value}}'
- name: send-receipt
type: call
call: sendgrid.send-email
with:
to: '{{get-subscription.subscriber.email_address}}'
template_id: d-donation-receipt
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /subscriptions/{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /crm/v3/objects/contacts
operations:
- name: update-contact
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
Lists all open disputes for a given PayPal merchant account with pagination.
naftiko: '0.5'
info:
label: Get Customer Disputes List
description: Lists all open disputes for a given PayPal merchant account with pagination.
tags:
- disputes
- paypal
- customer-service
capability:
exposes:
- type: mcp
namespace: disputes
port: 8080
tools:
- name: list-disputes
description: Retrieve paginated list of disputes for a merchant.
inputParameters:
- name: start_time
in: body
type: string
description: ISO 8601 start date filter.
call: paypal.list-disputes
with:
start_time: '{{start_time}}'
outputParameters:
- name: disputes
type: array
mapping: $.items
- name: total_items
type: integer
mapping: $.total_items
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /disputes
inputParameters:
- name: start_time
in: query
operations:
- name: list-disputes
method: GET
Collects onboarding documents from new sellers via DocuSign, validates business details through PayPal partner APIs, and tracks progress in Salesforce.
naftiko: '0.5'
info:
label: Seller Onboarding Document Collector
description: Collects onboarding documents from new sellers via DocuSign, validates business details through PayPal partner APIs, and tracks progress in Salesforce.
tags:
- onboarding
- paypal
- docusign
- salesforce
capability:
exposes:
- type: mcp
namespace: seller-onboarding
port: 8080
tools:
- name: collect-seller-documents
description: Send document requests and track seller onboarding progress.
inputParameters:
- name: seller_email
in: body
type: string
description: The seller email address.
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
steps:
- name: send-envelope
type: call
call: docusign.create-envelope
with:
recipient_email: '{{seller_email}}'
template_id: seller-onboarding-docs
- name: check-partner-status
type: call
call: paypal.get-partner-status
with:
merchant_id: '{{merchant_id}}'
- name: update-salesforce
type: call
call: salesforce.update-opportunity
with:
merchant_id: '{{merchant_id}}'
stage: Documents Sent
docusign_envelope_id: '{{send-envelope.envelope_id}}'
consumes:
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1
authentication:
type: bearer
token: $secrets.docusign_access_token
resources:
- name: envelopes
path: /accounts/{{account_id}}/envelopes
operations:
- name: create-envelope
method: POST
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: partner-status
path: /partners/{{merchant_id}}/merchant-integrations
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-partner-status
method: GET
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: update-opportunity
method: PATCH
Checks the onboarding status of a merchant partner in the PayPal Commerce Platform.
naftiko: '0.5'
info:
label: Get Onboarding Partner Status
description: Checks the onboarding status of a merchant partner in the PayPal Commerce Platform.
tags:
- onboarding
- paypal
- partners
capability:
exposes:
- type: mcp
namespace: onboarding
port: 8080
tools:
- name: get-partner-onboarding-status
description: Check onboarding status for a merchant partner.
inputParameters:
- name: partner_merchant_id
in: body
type: string
description: The partner merchant ID.
call: paypal.get-partner-status
with:
partner_merchant_id: '{{partner_merchant_id}}'
outputParameters:
- name: merchant_id
type: string
mapping: $.merchant_id
- name: payments_receivable
type: boolean
mapping: $.payments_receivable
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: partner-referrals
path: /partners/{{partner_merchant_id}}/merchant-integrations
inputParameters:
- name: partner_merchant_id
in: path
operations:
- name: get-partner-status
method: GET
Generates PayPal payment links for invoices, tracks click-through and conversion rates, and syncs results to the CRM.
naftiko: '0.5'
info:
label: Payment Link Generation and Tracking
description: Generates PayPal payment links for invoices, tracks click-through and conversion rates, and syncs results to the CRM.
tags:
- payments
- paypal
- salesforce
- analytics
capability:
exposes:
- type: mcp
namespace: payment-links
port: 8080
tools:
- name: generate-and-track-payment-link
description: Create a PayPal payment link and set up conversion tracking.
inputParameters:
- name: invoice_id
in: body
type: string
description: The invoice ID.
- name: amount
in: body
type: string
description: The payment amount.
steps:
- name: create-payment-link
type: call
call: paypal.create-payment-link
with:
amount: '{{amount}}'
invoice_id: '{{invoice_id}}'
- name: update-crm
type: call
call: salesforce.update-invoice
with:
invoice_id: '{{invoice_id}}'
payment_link: '{{create-payment-link.url}}'
status: LINK_SENT
- name: notify
type: call
call: slack.post-message
with:
channel: '#ar-collections'
text: 'Payment link created for invoice {{invoice_id}}: {{create-payment-link.url}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payment-links
path: /orders
operations:
- name: create-payment-link
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: invoices
path: /sobjects/Invoice__c
operations:
- name: update-invoice
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 a PayPal billing plan by plan ID, including pricing tiers, billing cycles, and payment preferences for subscription management.
naftiko: '0.5'
info:
label: Get Billing Plan Details
description: Retrieves a PayPal billing plan by plan ID, including pricing tiers, billing cycles, and payment preferences for subscription management.
tags:
- billing
- subscriptions
- paypal
capability:
exposes:
- type: mcp
namespace: billing-plans
port: 8080
tools:
- name: get-billing-plan
description: Look up a PayPal billing plan by plan ID. Returns name, status, billing cycles, and payment preferences.
inputParameters:
- name: plan_id
in: body
type: string
description: The PayPal billing plan ID.
call: paypal.get-plan
with:
plan_id: '{{plan_id}}'
outputParameters:
- name: name
type: string
mapping: $.name
- name: status
type: string
mapping: $.status
- name: billing_cycles
type: string
mapping: $.billing_cycles
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing/plans
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: plans
path: /{{plan_id}}
inputParameters:
- name: plan_id
in: path
operations:
- name: get-plan
method: GET
When a PayPal payment capture fails, retrieves the order details, logs the failure in Datadog, and creates a Jira ticket for payment engineering to investigate.
naftiko: '0.5'
info:
label: Payment Failure Retry Orchestrator
description: When a PayPal payment capture fails, retrieves the order details, logs the failure in Datadog, and creates a Jira ticket for payment engineering to investigate.
tags:
- payments
- failure-handling
- paypal
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: payment-retry
port: 8080
tools:
- name: handle-payment-failure
description: Given a failed PayPal order ID, log the failure and create an investigation ticket.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID that failed capture.
- name: error_code
in: body
type: string
description: The error code returned by PayPal.
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: log-failure
type: call
call: datadog.submit-event
with:
title: 'PayPal payment capture failed: {{order_id}}'
text: 'Order {{order_id}} for ${{get-order.purchase_units[0].amount.value}} failed with error {{error_code}}. Payer: {{get-order.payer.email_address}}.'
alert_type: error
tags:
- order_id:{{order_id}}
- error_code:{{error_code}}
- name: create-ticket
type: call
call: jira.create-issue
with:
project: PAY
summary: 'Payment capture failure: {{order_id}} - {{error_code}}'
description: 'Order: {{order_id}}
Amount: ${{get-order.purchase_units[0].amount.value}}
Error: {{error_code}}
Payer: {{get-order.payer.email_address}}'
issue_type: Bug
priority: High
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- 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: events
path: /events
operations:
- name: submit-event
method: POST
- type: http
namespace: jira
baseUri: https://paypal-internal.atlassian.net/rest/api/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 status and item details for a PayPal payouts batch by batch ID.
naftiko: '0.5'
info:
label: Get Payouts Batch Status
description: Retrieves the status and item details for a PayPal payouts batch by batch ID.
tags:
- payouts
- paypal
- batch
capability:
exposes:
- type: mcp
namespace: payouts
port: 8080
tools:
- name: get-payout-batch
description: Look up a payouts batch by its batch ID.
inputParameters:
- name: batch_id
in: body
type: string
description: The PayPal payouts batch ID.
call: paypal.get-payout-batch
with:
batch_id: '{{batch_id}}'
outputParameters:
- name: batch_status
type: string
mapping: $.batch_header.batch_status
- name: amount
type: string
mapping: $.batch_header.amount.value
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payouts
path: /payouts/{{batch_id}}
inputParameters:
- name: batch_id
in: path
operations:
- name: get-payout-batch
method: GET
Retrieves full details for a PayPal payment by capture ID, including amount, status, currency, and payer information.
naftiko: '0.5'
info:
label: Get Payment Details
description: Retrieves full details for a PayPal payment by capture ID, including amount, status, currency, and payer information.
tags:
- payments
- paypal
- capture
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment
description: Look up a PayPal captured payment by its capture ID. Returns status, amount, currency, and payer email.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID for the payment.
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: string
mapping: $.amount.value
- name: currency
type: string
mapping: $.amount.currency_code
- name: payer_email
type: string
mapping: $.payer.email_address
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
Retrieves an overdue PayPal invoice, sends a reminder via the PayPal API, and logs the collection attempt in Salesforce and Slack.
naftiko: '0.5'
info:
label: Invoice Overdue Collection Workflow
description: Retrieves an overdue PayPal invoice, sends a reminder via the PayPal API, and logs the collection attempt in Salesforce and Slack.
tags:
- invoicing
- collections
- paypal
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: invoice-collections
port: 8080
tools:
- name: collect-overdue-invoice
description: Given a PayPal invoice ID and Salesforce case ID, send a reminder and log the attempt.
inputParameters:
- name: invoice_id
in: body
type: string
description: The PayPal invoice ID.
- name: sf_case_id
in: body
type: string
description: The Salesforce case ID for tracking.
steps:
- name: get-invoice
type: call
call: paypal.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: send-reminder
type: call
call: paypal.send-invoice-reminder
with:
invoice_id: '{{invoice_id}}'
subject: Payment Reminder
note: This is a reminder that your invoice for ${{get-invoice.amount.value}} is overdue. Please make payment at your earliest convenience.
- name: update-salesforce
type: call
call: salesforce.update-case
with:
case_id: '{{sf_case_id}}'
Status: In Progress
Description: 'Reminder sent for invoice {{invoice_id}} (${{get-invoice.amount.value}}). Due date: {{get-invoice.detail.payment_term.due_date}}.'
- name: notify-collections
type: call
call: slack.post-message
with:
channel: '#collections'
text: 'Invoice reminder sent: {{invoice_id}} for ${{get-invoice.amount.value}}. Recipient: {{get-invoice.primary_recipients[0].billing_info.email_address}}. SF Case: {{sf_case_id}}.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/invoicing/invoices
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: invoices
path: /{{invoice_id}}
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
- name: reminders
path: /{{invoice_id}}/remind
inputParameters:
- name: invoice_id
in: path
operations:
- name: send-invoice-reminder
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /Case/{{case_id}}
inputParameters:
- name: case_id
in: path
operations:
- name: update-case
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
When a subscription payment fails, retrieves the subscription details, updates the CRM record, sends a recovery email via SendGrid, and schedules a retry.
naftiko: '0.5'
info:
label: Subscription Payment Failure Recovery
description: When a subscription payment fails, retrieves the subscription details, updates the CRM record, sends a recovery email via SendGrid, and schedules a retry.
tags:
- subscriptions
- paypal
- salesforce
- sendgrid
- recovery
capability:
exposes:
- type: mcp
namespace: subscription-recovery
port: 8080
tools:
- name: recover-failed-payment
description: Handle a failed subscription payment with notifications and retry scheduling.
inputParameters:
- name: subscription_id
in: body
type: string
description: The PayPal subscription ID.
- name: subscriber_email
in: body
type: string
description: The subscriber email address.
steps:
- name: get-subscription
type: call
call: paypal.get-subscription
with:
subscription_id: '{{subscription_id}}'
- name: update-crm
type: call
call: salesforce.update-contact
with:
email: '{{subscriber_email}}'
payment_status: FAILED
last_failure_date: '{{get-subscription.billing_info.last_failed_payment.time}}'
- name: send-recovery-email
type: call
call: sendgrid.send-email
with:
to: '{{subscriber_email}}'
template_id: d-payment-recovery
dynamic_data:
plan_name: '{{get-subscription.plan_id}}'
amount: '{{get-subscription.billing_info.last_failed_payment.amount.value}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/billing
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: subscriptions
path: /subscriptions/{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-subscription
method: GET
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: contacts
path: /sobjects/Contact
operations:
- name: update-contact
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
Certifies partner integrations by running automated tests against PayPal APIs, scoring results, and updating partner status in Salesforce.
naftiko: '0.5'
info:
label: Partner Integration Certification Pipeline
description: Certifies partner integrations by running automated tests against PayPal APIs, scoring results, and updating partner status in Salesforce.
tags:
- partners
- paypal
- salesforce
- testing
capability:
exposes:
- type: mcp
namespace: partner-certification
port: 8080
tools:
- name: certify-partner-integration
description: Run certification tests for a partner PayPal integration.
inputParameters:
- name: partner_id
in: body
type: string
description: The partner ID.
- name: integration_type
in: body
type: string
description: The integration type being certified.
steps:
- name: run-tests
type: call
call: paypal.run-integration-tests
with:
partner_id: '{{partner_id}}'
type: '{{integration_type}}'
- name: update-partner-record
type: call
call: salesforce.update-account
with:
partner_id: '{{partner_id}}'
certification_status: '{{run-tests.result}}'
certified_date: '{{run-tests.completed_at}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#partner-integrations'
text: 'Partner {{partner_id}} certification: {{run-tests.result}} ({{run-tests.score}}/100)'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/developer
authentication:
type: bearer
token: $secrets.paypal_admin_token
resources:
- name: tests
path: /integrations/{{partner_id}}/test
inputParameters:
- name: partner_id
in: path
operations:
- name: run-integration-tests
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: update-account
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
On a refund event, retrieves the refund from PayPal, updates the corresponding Snowflake ledger record, and posts a summary to the finance Slack channel.
naftiko: '0.5'
info:
label: Refund and Chargeback Reconciliation
description: On a refund event, retrieves the refund from PayPal, updates the corresponding Snowflake ledger record, and posts a summary to the finance Slack channel.
tags:
- refunds
- reconciliation
- paypal
- snowflake
- slack
- finance
capability:
exposes:
- type: mcp
namespace: refund-reconciliation
port: 8080
tools:
- name: reconcile-refund
description: Given a PayPal refund ID, fetch refund details, update the Snowflake finance ledger, and notify the finance team on Slack.
inputParameters:
- name: refund_id
in: body
type: string
description: The PayPal refund ID.
- name: original_order_id
in: body
type: string
description: The original PayPal order ID.
steps:
- name: get-refund
type: call
call: paypal.get-refund
with:
refund_id: '{{refund_id}}'
- name: update-ledger
type: call
call: snowflake.execute-statement
with:
statement: UPDATE finance.ledger SET refund_amount = '{{get-refund.amount.value}}', refund_status = '{{get-refund.status}}', refund_id = '{{refund_id}}' WHERE order_id = '{{original_order_id}}'
warehouse: FINANCE_WH
database: PAYPAL_DATA
- name: notify-finance
type: call
call: slack.post-message
with:
channel: '#finance-reconciliation'
text: 'Refund processed: {{refund_id}} for ${{get-refund.amount.value}} ({{get-refund.status}}). Order: {{original_order_id}}. Ledger updated.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments/refunds
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: refunds
path: /{{refund_id}}
inputParameters:
- name: refund_id
in: path
operations:
- name: get-refund
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.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
Fetches dispute details from PayPal by dispute ID, returning reason, status, amount, and transaction ID for customer-service review.
naftiko: '0.5'
info:
label: Lookup Dispute Details
description: Fetches dispute details from PayPal by dispute ID, returning reason, status, amount, and transaction ID for customer-service review.
tags:
- disputes
- paypal
- customer-service
capability:
exposes:
- type: mcp
namespace: disputes
port: 8080
tools:
- name: get-dispute
description: Look up a PayPal dispute by dispute ID. Returns reason, status, disputed amount, and linked transaction ID.
inputParameters:
- name: dispute_id
in: body
type: string
description: The PayPal dispute ID.
call: paypal.get-dispute
with:
dispute_id: '{{dispute_id}}'
outputParameters:
- name: reason
type: string
mapping: $.reason
- name: status
type: string
mapping: $.status
- name: amount
type: string
mapping: $.dispute_amount.value
- name: transaction_id
type: string
mapping: $.disputed_transactions[0].buyer_transaction_id
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer/disputes
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
Detects failed PayPal webhook deliveries, retries the event, logs failures in ServiceNow, and alerts the integration team.
naftiko: '0.5'
info:
label: Webhook Delivery Failure Recovery
description: Detects failed PayPal webhook deliveries, retries the event, logs failures in ServiceNow, and alerts the integration team.
tags:
- webhooks
- paypal
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: webhook-recovery
port: 8080
tools:
- name: recover-webhook-failure
description: Retry failed webhook events and log incidents.
inputParameters:
- name: event_id
in: body
type: string
description: The PayPal webhook event ID.
steps:
- name: get-event
type: call
call: paypal.get-webhook-event
with:
event_id: '{{event_id}}'
- name: log-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Webhook delivery failure: {{event_id}}'
description: 'Event type: {{get-event.event_type}}, Resource: {{get-event.resource_type}}'
- name: alert-team
type: call
call: slack.post-message
with:
channel: '#integration-alerts'
text: 'Webhook {{event_id}} ({{get-event.event_type}}) failed delivery. ServiceNow: {{log-incident.number}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/notifications
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: events
path: /webhooks-events/{{event_id}}
inputParameters:
- name: event_id
in: path
operations:
- name: get-webhook-event
method: GET
- type: http
namespace: servicenow
baseUri: https://paypal.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves details for a specific referenced payouts item by item ID.
naftiko: '0.5'
info:
label: Get Referenced Payouts Item
description: Retrieves details for a specific referenced payouts item by item ID.
tags:
- payouts
- paypal
- referenced-payouts
capability:
exposes:
- type: mcp
namespace: payouts
port: 8080
tools:
- name: get-referenced-payouts-item
description: Look up a referenced payouts item by its item ID.
inputParameters:
- name: payouts_item_id
in: body
type: string
description: The PayPal referenced payouts item ID.
call: paypal.get-referenced-item
with:
payouts_item_id: '{{payouts_item_id}}'
outputParameters:
- name: status
type: string
mapping: $.processing_state.status
- name: amount
type: string
mapping: $.amount.value
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: referenced-payouts-items
path: /referenced-payouts-items/{{payouts_item_id}}
inputParameters:
- name: payouts_item_id
in: path
operations:
- name: get-referenced-item
method: GET
Retrieves a PayPal payment authorization by authorization ID, returning status, amount, and expiration time for auth-capture flows.
naftiko: '0.5'
info:
label: Get Authorization Details
description: Retrieves a PayPal payment authorization by authorization ID, returning status, amount, and expiration time for auth-capture flows.
tags:
- authorizations
- payments
- paypal
capability:
exposes:
- type: mcp
namespace: auth-payments
port: 8080
tools:
- name: get-authorization
description: Look up a PayPal authorization by ID. Returns status, amount, and expiration time.
inputParameters:
- name: authorization_id
in: body
type: string
description: The PayPal authorization ID.
call: paypal.get-auth
with:
authorization_id: '{{authorization_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: string
mapping: $.amount.value
- name: expiration
type: string
mapping: $.expiration_time
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments/authorizations
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: authorizations
path: /{{authorization_id}}
inputParameters:
- name: authorization_id
in: path
operations:
- name: get-auth
method: GET
Captures an authorized PayPal order, creates a shipment in ShipStation, and sends the tracking info to the buyer via SendGrid.
naftiko: '0.5'
info:
label: Order Capture and Fulfillment
description: Captures an authorized PayPal order, creates a shipment in ShipStation, and sends the tracking info to the buyer via SendGrid.
tags:
- checkout
- fulfillment
- paypal
- shipstation
- sendgrid
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: capture-and-fulfill
description: Given a PayPal order ID and buyer email, capture the payment, create a shipment, and email tracking details.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID to capture.
- name: buyer_email
in: body
type: string
description: The buyer email for shipping notification.
- name: shipping_address
in: body
type: string
description: The delivery address.
steps:
- name: capture-order
type: call
call: paypal.capture-order
with:
order_id: '{{order_id}}'
- name: create-shipment
type: call
call: shipstation.create-order
with:
orderNumber: '{{order_id}}'
shipTo:
street1: '{{shipping_address}}'
amountPaid: '{{capture-order.purchase_units[0].payments.captures[0].amount.value}}'
- name: notify-buyer
type: call
call: sendgrid.send-email
with:
to: '{{buyer_email}}'
subject: Order Confirmed - {{order_id}}
body: 'Your payment of ${{capture-order.purchase_units[0].payments.captures[0].amount.value}} has been captured. ShipStation order: {{create-shipment.orderId}}. You will receive tracking info shortly.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}/capture
inputParameters:
- name: order_id
in: path
operations:
- name: capture-order
method: POST
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: orders
path: /orders/createorder
operations:
- name: create-order
method: POST
- 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
After a PayPal order completes, retrieves the order, logs the variant assignment and conversion in Snowflake, and pushes the event to Mixpanel for experiment analysis.
naftiko: '0.5'
info:
label: Checkout Experience A/B Test Tracker
description: After a PayPal order completes, retrieves the order, logs the variant assignment and conversion in Snowflake, and pushes the event to Mixpanel for experiment analysis.
tags:
- checkout
- ab-testing
- paypal
- snowflake
- mixpanel
capability:
exposes:
- type: mcp
namespace: ab-test-tracking
port: 8080
tools:
- name: track-ab-conversion
description: Given a PayPal order ID, experiment name, and variant, log the conversion data.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
- name: experiment_name
in: body
type: string
description: The A/B test experiment name.
- name: variant
in: body
type: string
description: The variant assignment (control, treatment).
steps:
- name: get-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: log-snowflake
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO paypal_data.ab_test_conversions (order_id, experiment, variant, amount, currency, converted_at) VALUES ('{{order_id}}', '{{experiment_name}}', '{{variant}}', '{{get-order.purchase_units[0].amount.value}}', '{{get-order.purchase_units[0].amount.currency_code}}', CURRENT_TIMESTAMP())
warehouse: ANALYTICS_WH
database: PAYPAL_DATA
- name: track-mixpanel
type: call
call: mixpanel.track-event
with:
event: checkout_conversion
properties:
order_id: '{{order_id}}'
experiment: '{{experiment_name}}'
variant: '{{variant}}'
amount: '{{get-order.purchase_units[0].amount.value}}'
currency: '{{get-order.purchase_units[0].amount.currency_code}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout/orders
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: mixpanel
baseUri: https://api.mixpanel.com
authentication:
type: basic
username: $secrets.mixpanel_project_token
password: ''
resources:
- name: events
path: /import
operations:
- name: track-event
method: POST
Rotates PayPal API credentials, stores the new keys in HashiCorp Vault, updates the deployment config, and notifies the security team.
naftiko: '0.5'
info:
label: API Key Rotation and Vault Sync
description: Rotates PayPal API credentials, stores the new keys in HashiCorp Vault, updates the deployment config, and notifies the security team.
tags:
- security
- paypal
- vault
- slack
capability:
exposes:
- type: mcp
namespace: key-rotation
port: 8080
tools:
- name: rotate-api-keys
description: Rotate PayPal API credentials and sync to secret management.
inputParameters:
- name: app_id
in: body
type: string
description: The PayPal application ID.
steps:
- name: generate-new-credentials
type: call
call: paypal.rotate-credentials
with:
app_id: '{{app_id}}'
- name: store-in-vault
type: call
call: vault.write-secret
with:
path: secret/paypal/{{app_id}}
data:
client_id: '{{generate-new-credentials.client_id}}'
client_secret: '{{generate-new-credentials.client_secret}}'
- name: notify-security
type: call
call: slack.post-message
with:
channel: '#security-ops'
text: PayPal API credentials rotated for app {{app_id}}. New credentials stored in Vault.
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/developer
authentication:
type: bearer
token: $secrets.paypal_admin_token
resources:
- name: credentials
path: /applications/{{app_id}}/credentials/rotate
inputParameters:
- name: app_id
in: path
operations:
- name: rotate-credentials
method: POST
- type: http
namespace: vault
baseUri: https://vault.paypal.com/v1
authentication:
type: bearer
token: $secrets.vault_token
resources:
- name: secrets
path: /secret/data
operations:
- name: write-secret
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
Aggregates the day's PayPal transaction volume via Snowflake, generates key metrics, updates a Google Sheets executive dashboard, and posts a daily summary to the leadership Slack channel.
naftiko: '0.5'
info:
label: End-of-Day Payment Summary to Executive Dashboard
description: Aggregates the day's PayPal transaction volume via Snowflake, generates key metrics, updates a Google Sheets executive dashboard, and posts a daily summary to the leadership Slack channel.
tags:
- reporting
- executive
- paypal
- snowflake
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: eod-summary
port: 8080
tools:
- name: generate-eod-summary
description: Given a date, aggregate PayPal metrics from Snowflake, update the Google Sheets dashboard, and post to Slack.
inputParameters:
- name: report_date
in: body
type: string
description: The report date in YYYY-MM-DD format.
steps:
- name: aggregate-metrics
type: call
call: snowflake.execute-statement
with:
statement: SELECT SUM(amount) as total_volume, COUNT(*) as txn_count, SUM(fee) as total_fees, COUNT(DISTINCT merchant_id) as active_merchants, SUM(CASE WHEN status='REFUNDED' THEN amount ELSE 0 END) as refund_volume FROM paypal_data.daily_transactions WHERE txn_date = '{{report_date}}'
warehouse: EXEC_WH
database: PAYPAL_DATA
- name: update-sheet
type: call
call: gsheets.append-row
with:
spreadsheet_id: $secrets.exec_dashboard_sheet_id
range: DailySummary!A:F
values:
- - '{{report_date}}'
- '{{aggregate-metrics.data[0][0]}}'
- '{{aggregate-metrics.data[0][1]}}'
- '{{aggregate-metrics.data[0][2]}}'
- '{{aggregate-metrics.data[0][3]}}'
- '{{aggregate-metrics.data[0][4]}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: '#leadership-daily'
text: 'EOD Payment Summary ({{report_date}}): Volume=${{aggregate-metrics.data[0][0]}}, Txns={{aggregate-metrics.data[0][1]}}, Fees=${{aggregate-metrics.data[0][2]}}, Active Merchants={{aggregate-metrics.data[0][3]}}, Refunds=${{aggregate-metrics.data[0][4]}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
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
Monitors PayPal payment processing SLAs, compares actual vs target metrics, and escalates breaches through PagerDuty and Jira.
naftiko: '0.5'
info:
label: Payment Processing SLA Monitor
description: Monitors PayPal payment processing SLAs, compares actual vs target metrics, and escalates breaches through PagerDuty and Jira.
tags:
- sla
- paypal
- pagerduty
- jira
- monitoring
capability:
exposes:
- type: mcp
namespace: sla-monitor
port: 8080
tools:
- name: check-processing-sla
description: Monitor payment processing SLA compliance and escalate breaches.
inputParameters:
- name: time_window
in: body
type: string
description: Time window to evaluate in minutes.
steps:
- name: get-metrics
type: call
call: datadog.query-metrics
with:
query: avg:paypal.payment.processing_time_ms{*}.rollup(avg, {{time_window}})
- name: create-incident
type: call
call: pagerduty.create-incident
with:
service: paypal-payments
title: 'Payment SLA breach: avg processing time {{get-metrics.value}}ms exceeds threshold'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: SRE
summary: Payment processing SLA breach - {{get-metrics.value}}ms avg
issue_type: Bug
priority: High
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: query
path: /query
operations:
- name: query-metrics
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: jira
baseUri: https://paypal-internal.atlassian.net/rest/api/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 PayPal transaction history for a merchant, computes risk metrics via Snowflake, and updates the risk profile in Salesforce.
naftiko: '0.5'
info:
label: Merchant Risk Score Aggregator
description: Queries PayPal transaction history for a merchant, computes risk metrics via Snowflake, and updates the risk profile in Salesforce.
tags:
- risk
- merchant
- paypal
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: risk-aggregation
port: 8080
tools:
- name: aggregate-merchant-risk
description: Given a merchant email and Salesforce account ID, query transactions, compute risk in Snowflake, and update CRM.
inputParameters:
- name: merchant_email
in: body
type: string
description: The merchant PayPal email.
- name: sf_account_id
in: body
type: string
description: The Salesforce account ID.
- name: lookback_days
in: body
type: number
description: Number of days to look back.
steps:
- name: compute-risk
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as txn_count, SUM(amount) as total_volume, COUNT(CASE WHEN dispute_flag = true THEN 1 END) as dispute_count, AVG(risk_score) as avg_risk FROM paypal_data.transactions WHERE merchant_email = '{{merchant_email}}' AND created_at >= DATEADD(day, -{{lookback_days}}, CURRENT_DATE())
warehouse: RISK_WH
database: PAYPAL_DATA
- name: update-salesforce
type: call
call: salesforce.update-account
with:
account_id: '{{sf_account_id}}'
Transaction_Count__c: '{{compute-risk.data[0][0]}}'
Total_Volume__c: '{{compute-risk.data[0][1]}}'
Dispute_Count__c: '{{compute-risk.data[0][2]}}'
Average_Risk_Score__c: '{{compute-risk.data[0][3]}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.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://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
When an order completion webhook fires, verifies the order in PayPal, updates inventory in the warehouse system, and sends a confirmation via Twilio SMS.
naftiko: '0.5'
info:
label: Order Completion Webhook Processor
description: When an order completion webhook fires, verifies the order in PayPal, updates inventory in the warehouse system, and sends a confirmation via Twilio SMS.
tags:
- orders
- paypal
- twilio
- warehouse
capability:
exposes:
- type: mcp
namespace: order-completion
port: 8080
tools:
- name: process-order-completion
description: Verify a completed PayPal order, update inventory, and send SMS confirmation.
inputParameters:
- name: order_id
in: body
type: string
description: The PayPal order ID.
- name: customer_phone
in: body
type: string
description: Customer phone number for SMS.
steps:
- name: verify-order
type: call
call: paypal.get-order
with:
order_id: '{{order_id}}'
- name: update-inventory
type: call
call: warehouse.decrement-stock
with:
sku: '{{verify-order.purchase_units[0].items[0].sku}}'
quantity: '{{verify-order.purchase_units[0].items[0].quantity}}'
- name: send-sms
type: call
call: twilio.send-message
with:
to: '{{customer_phone}}'
body: Your PayPal order {{order_id}} for ${{verify-order.purchase_units[0].amount.value}} is confirmed!
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/checkout
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: warehouse
baseUri: https://wms.paypal.com/api/v1
authentication:
type: bearer
token: $secrets.wms_token
resources:
- name: inventory
path: /inventory/adjust
operations:
- name: decrement-stock
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/{{twilio_account_sid}}/Messages.json
operations:
- name: send-message
method: POST
When a crypto purchase occurs, retrieves the transaction from PayPal, logs it in Elasticsearch for compliance, and posts to the compliance Slack channel.
naftiko: '0.5'
info:
label: Crypto Purchase Audit Trail
description: When a crypto purchase occurs, retrieves the transaction from PayPal, logs it in Elasticsearch for compliance, and posts to the compliance Slack channel.
tags:
- crypto
- audit
- paypal
- elasticsearch
- slack
- compliance
capability:
exposes:
- type: mcp
namespace: crypto-audit
port: 8080
tools:
- name: audit-crypto-purchase
description: Given a PayPal transaction ID for a crypto purchase, retrieve details, index in Elasticsearch, and notify compliance.
inputParameters:
- name: transaction_id
in: body
type: string
description: The PayPal transaction ID for the crypto purchase.
steps:
- name: get-transaction
type: call
call: paypal.search-transaction
with:
transaction_id: '{{transaction_id}}'
- name: index-audit
type: call
call: elasticsearch.index-doc
with:
index: crypto-transactions
body:
transaction_id: '{{transaction_id}}'
amount: '{{get-transaction.transaction_details[0].transaction_info.transaction_amount.value}}'
event_code: '{{get-transaction.transaction_details[0].transaction_info.transaction_event_code}}'
timestamp: '{{get-transaction.transaction_details[0].transaction_info.transaction_initiation_date}}'
- name: notify-compliance
type: call
call: slack.post-message
with:
channel: '#compliance-crypto'
text: 'Crypto transaction logged: {{transaction_id}} for ${{get-transaction.transaction_details[0].transaction_info.transaction_amount.value}}. Indexed in Elasticsearch.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting/transactions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: transactions
path: /?transaction_id={{transaction_id}}&fields=all
inputParameters:
- name: transaction_id
in: query
operations:
- name: search-transaction
method: GET
- type: http
namespace: elasticsearch
baseUri: https://paypal-es.es.us-west-2.aws.found.io
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-doc
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 PayPal merchant account details, runs identity verification through a compliance API, and updates the merchant status in Salesforce.
naftiko: '0.5'
info:
label: Merchant KYC Verification Pipeline
description: Retrieves PayPal merchant account details, runs identity verification through a compliance API, and updates the merchant status in Salesforce.
tags:
- kyc
- compliance
- paypal
- salesforce
- onboarding
capability:
exposes:
- type: mcp
namespace: merchant-kyc
port: 8080
tools:
- name: verify-merchant-kyc
description: Given a PayPal merchant ID and Salesforce account ID, verify merchant identity and update CRM status.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant account ID.
- name: sf_account_id
in: body
type: string
description: The Salesforce account ID.
steps:
- name: get-merchant
type: call
call: paypal.get-merchant-status
with:
merchant_id: '{{merchant_id}}'
- name: check-identity
type: call
call: compliance.verify-identity
with:
legal_name: '{{get-merchant.legal_name}}'
country: '{{get-merchant.country}}'
merchant_id: '{{merchant_id}}'
- name: update-salesforce
type: call
call: salesforce.update-account
with:
account_id: '{{sf_account_id}}'
KYC_Status__c: '{{check-identity.verification_status}}'
KYC_Verified_Date__c: '{{check-identity.verified_at}}'
PayPal_Merchant_ID__c: '{{merchant_id}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer/partners
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: merchant-integrations
path: /{{partner_id}}/merchant-integrations/{{merchant_id}}
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-merchant-status
method: GET
- type: http
namespace: compliance
baseUri: https://compliance-api.paypal.com/v1
authentication:
type: bearer
token: $secrets.compliance_api_token
resources:
- name: identity
path: /identity/verify
operations:
- name: verify-identity
method: POST
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
Reconciles Venmo payouts against PayPal records, flags discrepancies in Jira, and updates the finance dashboard in Tableau.
naftiko: '0.5'
info:
label: Venmo Payout Reconciliation Pipeline
description: Reconciles Venmo payouts against PayPal records, flags discrepancies in Jira, and updates the finance dashboard in Tableau.
tags:
- venmo
- paypal
- jira
- tableau
- reconciliation
capability:
exposes:
- type: mcp
namespace: venmo-recon
port: 8080
tools:
- name: reconcile-venmo-payouts
description: Reconcile Venmo payout records and flag discrepancies.
inputParameters:
- name: date
in: body
type: string
description: The date to reconcile in YYYY-MM-DD format.
steps:
- name: get-paypal-records
type: call
call: paypal.search-transactions
with:
start_date: '{{date}}T00:00:00Z'
end_date: '{{date}}T23:59:59Z'
channel: VENMO
- name: flag-discrepancy
type: call
call: jira.create-issue
with:
project: FIN
summary: Venmo reconciliation discrepancy for {{date}}
issue_type: Task
- name: refresh-dashboard
type: call
call: tableau.refresh-workbook
with:
workbook_id: venmo-finance-dashboard
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: transactions
path: /transactions
operations:
- name: search-transactions
method: GET
- type: http
namespace: jira
baseUri: https://paypal-internal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: tableau
baseUri: https://tableau.paypal.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/default/workbooks/{{workbook_id}}/refresh
operations:
- name: refresh-workbook
method: POST
Lists all vaulted payment method tokens for a customer in PayPal.
naftiko: '0.5'
info:
label: Get Payment Method Tokens List
description: Lists all vaulted payment method tokens for a customer in PayPal.
tags:
- vault
- paypal
- tokens
capability:
exposes:
- type: mcp
namespace: vault
port: 8080
tools:
- name: list-payment-tokens
description: Retrieve all vaulted payment tokens for a customer.
inputParameters:
- name: customer_id
in: body
type: string
description: The PayPal customer ID.
call: paypal.list-payment-tokens
with:
customer_id: '{{customer_id}}'
outputParameters:
- name: payment_tokens
type: array
mapping: $.payment_tokens
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v3/vault
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: payment-tokens
path: /payment-tokens
inputParameters:
- name: customer_id
in: query
operations:
- name: list-payment-tokens
method: GET
Analyzes merchant transaction fees from PayPal data, computes fee breakdowns in Snowflake, and publishes a Power BI dashboard refresh.
naftiko: '0.5'
info:
label: Merchant Fee Analysis Report
description: Analyzes merchant transaction fees from PayPal data, computes fee breakdowns in Snowflake, and publishes a Power BI dashboard refresh.
tags:
- fees
- paypal
- snowflake
- power-bi
- analytics
capability:
exposes:
- type: mcp
namespace: fee-analysis
port: 8080
tools:
- name: analyze-merchant-fees
description: Generate fee analysis report for a merchant.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
- name: period
in: body
type: string
description: The reporting period in YYYY-MM format.
steps:
- name: get-fee-data
type: call
call: snowflake.run-query
with:
query: SELECT fee_type, SUM(fee_amount) as total FROM paypal.transaction_fees WHERE merchant_id = '{{merchant_id}}' AND period = '{{period}}' GROUP BY fee_type
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: merchant-fee-analysis
- name: notify
type: call
call: slack.post-message
with:
channel: '#merchant-analytics'
text: Fee analysis for merchant {{merchant_id}} period {{period}} completed. Dashboard refreshed.
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
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
Fetches the authenticated PayPal user profile, including name, email, and account verification status.
naftiko: '0.5'
info:
label: Retrieve Identity User Info
description: Fetches the authenticated PayPal user profile, including name, email, and account verification status.
tags:
- identity
- paypal
- user-profile
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-info
description: Retrieve the authenticated PayPal user profile. Returns name, email, and verified status.
inputParameters: []
call: paypal.get-userinfo
with: {}
outputParameters:
- name: name
type: string
mapping: $.name
- name: email
type: string
mapping: $.emails[0].value
- name: verified
type: string
mapping: $.verified_account
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/identity
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: user-info
path: /openidconnect/userinfo/?schema=openid
operations:
- name: get-userinfo
method: GET
Retrieves shipment tracking details associated with a PayPal transaction.
naftiko: '0.5'
info:
label: Get Tracking Information
description: Retrieves shipment tracking details associated with a PayPal transaction.
tags:
- shipping
- paypal
- tracking
capability:
exposes:
- type: mcp
namespace: shipping
port: 8080
tools:
- name: get-tracking
description: Look up tracking information for a PayPal transaction.
inputParameters:
- name: transaction_id
in: body
type: string
description: The PayPal transaction ID.
call: paypal.get-tracking
with:
transaction_id: '{{transaction_id}}'
outputParameters:
- name: tracking_number
type: string
mapping: $.tracking_number
- name: carrier
type: string
mapping: $.carrier
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/shipping
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: trackers
path: /trackers/{{transaction_id}}
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-tracking
method: GET
Verifies merchant PCI compliance status from PayPal, checks attestation documents in SharePoint, and creates remediation tasks in ServiceNow if non-compliant.
naftiko: '0.5'
info:
label: Merchant PCI Compliance Verifier
description: Verifies merchant PCI compliance status from PayPal, checks attestation documents in SharePoint, and creates remediation tasks in ServiceNow if non-compliant.
tags:
- compliance
- paypal
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: pci-compliance
port: 8080
tools:
- name: verify-pci-compliance
description: Verify PCI compliance for a merchant and create remediation if needed.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
steps:
- name: get-merchant-status
type: call
call: paypal.get-merchant-compliance
with:
merchant_id: '{{merchant_id}}'
- name: check-attestation
type: call
call: sharepoint.search-document
with:
query: PCI attestation {{merchant_id}}
site: compliance-docs
- name: create-remediation
type: call
call: servicenow.create-incident
with:
short_description: 'PCI non-compliance: merchant {{merchant_id}}'
category: Compliance
priority: '2'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: compliance
path: /partners/{{merchant_id}}/compliance
inputParameters:
- name: merchant_id
in: path
operations:
- name: get-merchant-compliance
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: search
path: /search/query
operations:
- name: search-document
method: POST
- type: http
namespace: servicenow
baseUri: https://paypal.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Processes buyer protection claims by retrieving PayPal dispute details, checking shipping evidence, and issuing conditional refunds.
naftiko: '0.5'
info:
label: Buyer Protection Claim Processor
description: Processes buyer protection claims by retrieving PayPal dispute details, checking shipping evidence, and issuing conditional refunds.
tags:
- disputes
- paypal
- jira
- refunds
capability:
exposes:
- type: mcp
namespace: buyer-protection
port: 8080
tools:
- name: process-buyer-claim
description: Review and process a buyer protection claim with evidence check.
inputParameters:
- name: dispute_id
in: body
type: string
description: The PayPal dispute ID.
steps:
- name: get-dispute
type: call
call: paypal.get-dispute
with:
dispute_id: '{{dispute_id}}'
- name: create-review-ticket
type: call
call: jira.create-issue
with:
project: CLAIMS
summary: Buyer protection claim {{dispute_id}} - ${{get-dispute.dispute_amount.value}}
description: 'Reason: {{get-dispute.reason}}
Seller: {{get-dispute.dispute_life_cycle_stage}}'
issue_type: Task
- name: notify-claims
type: call
call: slack.post-message
with:
channel: '#claims-team'
text: 'New buyer protection claim {{dispute_id}} for ${{get-dispute.dispute_amount.value}}. Jira: {{create-review-ticket.key}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/customer
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: disputes
path: /disputes/{{dispute_id}}
inputParameters:
- name: dispute_id
in: path
operations:
- name: get-dispute
method: GET
- type: http
namespace: jira
baseUri: https://paypal-internal.atlassian.net/rest/api/3
authentication:
type: 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 details for a PayPal billing agreement including status, payer, and plan info.
naftiko: '0.5'
info:
label: Get Billing Agreement Details
description: Retrieves details for a PayPal billing agreement including status, payer, and plan info.
tags:
- billing
- paypal
- agreements
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-billing-agreement
description: Look up a PayPal billing agreement by agreement ID.
inputParameters:
- name: agreement_id
in: body
type: string
description: The PayPal billing agreement ID.
call: paypal.get-agreement
with:
agreement_id: '{{agreement_id}}'
outputParameters:
- name: state
type: string
mapping: $.state
- name: payer_email
type: string
mapping: $.payer.payer_info.email
- name: plan_name
type: string
mapping: $.plan.name
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: billing-agreements
path: /billing-agreements/{{agreement_id}}
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-agreement
method: GET
Retrieves a PayPal billing agreement, syncs the agreement details into Salesforce, and updates HubSpot contact properties for marketing alignment.
naftiko: '0.5'
info:
label: Billing Agreement Sync to CRM
description: Retrieves a PayPal billing agreement, syncs the agreement details into Salesforce, and updates HubSpot contact properties for marketing alignment.
tags:
- billing
- crm
- paypal
- salesforce
- hubspot
capability:
exposes:
- type: mcp
namespace: billing-crm-sync
port: 8080
tools:
- name: sync-billing-agreement
description: Given a PayPal billing agreement ID, sync details to Salesforce and HubSpot.
inputParameters:
- name: agreement_id
in: body
type: string
description: The PayPal billing agreement ID.
- name: hubspot_contact_id
in: body
type: string
description: The HubSpot contact ID.
- name: sf_account_id
in: body
type: string
description: The Salesforce account ID.
steps:
- name: get-agreement
type: call
call: paypal.get-agreement
with:
agreement_id: '{{agreement_id}}'
- name: update-salesforce
type: call
call: salesforce.update-account
with:
account_id: '{{sf_account_id}}'
PayPal_Agreement_ID__c: '{{agreement_id}}'
Agreement_Status__c: '{{get-agreement.state}}'
Agreement_Description__c: '{{get-agreement.description}}'
- name: update-hubspot
type: call
call: hubspot.update-contact
with:
contact_id: '{{hubspot_contact_id}}'
properties:
paypal_agreement_id: '{{agreement_id}}'
paypal_agreement_status: '{{get-agreement.state}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/payments/billing-agreements
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: agreements
path: /{{agreement_id}}
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-agreement
method: GET
- type: http
namespace: salesforce
baseUri: https://paypal.my.salesforce.com/services/data/v58.0/sobjects
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /objects/contacts/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: update-contact
method: PATCH
Forecasts merchant revenue by analyzing PayPal transaction trends in Snowflake, running ML predictions, and publishing forecasts to Power BI.
naftiko: '0.5'
info:
label: Merchant Revenue Forecast Pipeline
description: Forecasts merchant revenue by analyzing PayPal transaction trends in Snowflake, running ML predictions, and publishing forecasts to Power BI.
tags:
- analytics
- paypal
- snowflake
- power-bi
- forecasting
capability:
exposes:
- type: mcp
namespace: revenue-forecast
port: 8080
tools:
- name: forecast-merchant-revenue
description: Generate revenue forecasts based on PayPal transaction history.
inputParameters:
- name: merchant_id
in: body
type: string
description: The PayPal merchant ID.
- name: forecast_months
in: body
type: integer
description: Number of months to forecast.
steps:
- name: get-historical-data
type: call
call: snowflake.run-query
with:
query: SELECT month, SUM(amount) as revenue FROM paypal.transactions WHERE merchant_id = '{{merchant_id}}' GROUP BY month ORDER BY month
- name: refresh-forecast-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: merchant-revenue-forecasts
- name: notify
type: call
call: slack.post-message
with:
channel: '#merchant-analytics'
text: Revenue forecast for merchant {{merchant_id}} updated for next {{forecast_months}} months.
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{dataset_id}}/refreshes
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
Generates batch invoices from PayPal billing data, creates PDF invoices, and delivers them via SendGrid email to merchants.
naftiko: '0.5'
info:
label: Invoice Batch Generation and Delivery
description: Generates batch invoices from PayPal billing data, creates PDF invoices, and delivers them via SendGrid email to merchants.
tags:
- invoicing
- paypal
- sendgrid
- snowflake
capability:
exposes:
- type: mcp
namespace: invoice-batch
port: 8080
tools:
- name: generate-batch-invoices
description: Generate and deliver batch invoices to merchants.
inputParameters:
- name: billing_period
in: body
type: string
description: The billing period in YYYY-MM format.
steps:
- name: get-billing-data
type: call
call: snowflake.run-query
with:
query: SELECT merchant_id, total_fees FROM billing.monthly_summary WHERE period = '{{billing_period}}'
- name: create-invoice
type: call
call: paypal.create-invoice
with:
billing_period: '{{billing_period}}'
items: '{{get-billing-data.results}}'
- name: send-invoice
type: call
call: sendgrid.send-email
with:
template_id: d-monthly-invoice
subject: Your PayPal invoice for {{billing_period}}
consumes:
- type: http
namespace: snowflake
baseUri: https://paypal.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: paypal
baseUri: https://api-m.paypal.com/v2/invoicing
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: invoices
path: /invoices
operations:
- name: create-invoice
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
Queries PayPal transaction data for the day, aggregates totals via Snowflake, and posts the daily settlement summary to the finance Slack channel.
naftiko: '0.5'
info:
label: Daily Settlement Report
description: Queries PayPal transaction data for the day, aggregates totals via Snowflake, and posts the daily settlement summary to the finance Slack channel.
tags:
- settlement
- reporting
- paypal
- snowflake
- slack
- finance
capability:
exposes:
- type: mcp
namespace: settlement-reporting
port: 8080
tools:
- name: generate-settlement-report
description: Given a date range, query PayPal transactions, run Snowflake aggregation, and post settlement summary to Slack.
inputParameters:
- name: start_date
in: body
type: string
description: Start date in ISO 8601.
- name: end_date
in: body
type: string
description: End date in ISO 8601.
steps:
- name: get-transactions
type: call
call: paypal.list-transactions
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: aggregate-totals
type: call
call: snowflake.execute-statement
with:
statement: SELECT SUM(amount) as total_volume, COUNT(*) as txn_count, SUM(fee) as total_fees FROM paypal_data.transactions WHERE created_at BETWEEN '{{start_date}}' AND '{{end_date}}'
warehouse: FINANCE_WH
database: PAYPAL_DATA
- name: post-summary
type: call
call: slack.post-message
with:
channel: '#finance-daily'
text: 'Daily Settlement ({{start_date}} to {{end_date}}): Volume=${{aggregate-totals.data[0][0]}}, Transactions={{aggregate-totals.data[0][1]}}, Fees=${{aggregate-totals.data[0][2]}}'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v1/reporting/transactions
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: transactions
path: /?start_date={{start_date}}&end_date={{end_date}}&fields=all
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: list-transactions
method: GET
- type: http
namespace: snowflake
baseUri: https://paypal.snowflakecomputing.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 a PayPal international payment, checks the recipient country against a restricted list, and logs the compliance check in Elasticsearch and notifies legal via Slack.
naftiko: '0.5'
info:
label: Cross-Border Payment Compliance Logger
description: Retrieves a PayPal international payment, checks the recipient country against a restricted list, and logs the compliance check in Elasticsearch and notifies legal via Slack.
tags:
- cross-border
- compliance
- paypal
- elasticsearch
- slack
- legal
capability:
exposes:
- type: mcp
namespace: cross-border-compliance
port: 8080
tools:
- name: log-cross-border-payment
description: Given a PayPal capture ID, verify cross-border compliance, log in Elasticsearch, and notify legal.
inputParameters:
- name: capture_id
in: body
type: string
description: The PayPal capture ID.
steps:
- name: get-payment
type: call
call: paypal.get-capture
with:
capture_id: '{{capture_id}}'
- name: index-compliance
type: call
call: elasticsearch.index-doc
with:
index: cross-border-payments
body:
capture_id: '{{capture_id}}'
amount: '{{get-payment.amount.value}}'
currency: '{{get-payment.amount.currency_code}}'
payer_country: '{{get-payment.payer.address.country_code}}'
status: '{{get-payment.status}}'
- name: notify-legal
type: call
call: slack.post-message
with:
channel: '#legal-compliance'
text: 'Cross-border payment: {{capture_id}} for ${{get-payment.amount.value}} {{get-payment.amount.currency_code}}. Payer country: {{get-payment.payer.address.country_code}}. Indexed for compliance review.'
consumes:
- type: http
namespace: paypal
baseUri: https://api-m.paypal.com/v2/payments
authentication:
type: bearer
token: $secrets.paypal_access_token
resources:
- name: captures
path: /captures/{{capture_id}}
inputParameters:
- name: capture_id
in: path
operations:
- name: get-capture
method: GET
- type: http
namespace: elasticsearch
baseUri: https://paypal-es.es.us-west-2.aws.found.io
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: documents
path: /{{index}}/_doc
inputParameters:
- name: index
in: path
operations:
- name: index-doc
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 customer financial data from the core banking API via MuleSoft, runs a risk scoring model in Azure Machine Learning, and updates the risk rating in Salesforce.
naftiko: '0.5'
info:
label: Risk Score Calculation Pipeline
description: Retrieves customer financial data from the core banking API via MuleSoft, runs a risk scoring model in Azure Machine Learning, and updates the risk rating in Salesforce.
tags:
- risk
- machine-learning
- mulesoft
- azure-machine-learning
- salesforce
capability:
exposes:
- type: mcp
namespace: risk-scoring
port: 8080
tools:
- name: calculate-risk-score
description: Given a customer ID, fetch financial data, run risk model, and update Salesforce.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer ID.
steps:
- name: get-financial-data
type: call
call: mulesoft.get-customer-financials
with:
customer_id: '{{customer_id}}'
- name: run-risk-model
type: call
call: azureml.score
with:
income: '{{get-financial-data.annual_income}}'
balance: '{{get-financial-data.total_balance}}'
credit_utilization: '{{get-financial-data.credit_utilization}}'
- name: update-risk-rating
type: call
call: salesforce.update-customer
with:
customer_id: '{{customer_id}}'
risk_score: '{{run-risk-model.risk_score}}'
risk_category: '{{run-risk-model.risk_category}}'
consumes:
- type: http
namespace: mulesoft
baseUri: https://api.scotiabank.com/mulesoft/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: customer-financials
path: /core-banking/customers/{{customer_id}}/financials
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer-financials
method: GET
- type: http
namespace: azureml
baseUri: https://scotiabank-risk.canadacentral.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azure_ml_token
resources:
- name: scoring
path: /score
operations:
- name: score
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.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: update-customer
method: PATCH
Orchestrates digital lending decisioning pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Digital Lending Decisioning Pipeline
description: Orchestrates digital lending decisioning pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- digital
- scotiabank
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: digital
port: 8080
tools:
- name: digital-lending-decisioning-pipeline
description: Orchestrates digital lending decisioning pipeline across banking and financial services 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://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/digital
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/digital
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/digital
operations:
- name: execute-3
method: POST
Queries Datadog for infrastructure host health.
naftiko: '0.5'
info:
label: Datadog Infrastructure Monitor
description: Queries Datadog for infrastructure host health.
tags:
- monitoring
- infrastructure
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-host-health
description: Query Datadog for host health.
inputParameters:
- name: host_name
in: body
type: string
description: The host name.
call: datadog.get-host
with:
host_name: '{{host_name}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: hosts
path: /hosts?filter={{host_name}}
inputParameters:
- name: host_name
in: path
operations:
- name: get-host
method: GET
Orchestrates atm cash management pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Atm Cash Management Pipeline
description: Orchestrates atm cash management pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- atm
- scotiabank
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: atm
port: 8080
tools:
- name: atm-cash-management-pipeline
description: Orchestrates atm cash management pipeline across banking and financial services 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/atm
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/atm
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/atm
operations:
- name: execute-3
method: POST
Retrieves scotia rewards catalog lookup data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Scotia Rewards Catalog Lookup
description: Retrieves scotia rewards catalog lookup data from the Scotiabank banking and financial services systems.
tags:
- scotia
- scotiabank
- lookup
capability:
exposes:
- type: mcp
namespace: scotia
port: 8080
tools:
- name: scotia-rewards-catalog-lookup
description: Retrieves scotia rewards catalog lookup data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.scotia-rewards-catalog-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /scotia/rewards/catalog/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: scotia-rewards-catalog-lookup
method: GET
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 banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Cross Sell Pipeline
description: Orchestrates customer cross sell pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- teams
- splunk
- confluence
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-cross-sell-pipeline
description: Orchestrates customer cross sell pipeline across banking and financial services 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: splunk.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/customer
operations:
- name: execute-1
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/customer
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-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 completed 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://scotiabank.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://scotiabank.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
Retrieves DocuSign envelope status for loan agreements.
naftiko: '0.5'
info:
label: DocuSign Agreement Status
description: Retrieves DocuSign envelope status for loan agreements.
tags:
- lending
- document-signing
- docusign
capability:
exposes:
- type: mcp
namespace: doc-signing
port: 8080
tools:
- name: get-envelope-status
description: Look up a DocuSign envelope status.
inputParameters:
- name: envelope_id
in: body
type: string
description: The DocuSign envelope ID.
call: docusign.get-envelope
with:
envelope_id: '{{envelope_id}}'
consumes:
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/$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
Retrieves mortgage rate schedule lookup data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Mortgage Rate Schedule Lookup
description: Retrieves mortgage rate schedule lookup data from the Scotiabank banking and financial services systems.
tags:
- mortgage
- scotiabank
- lookup
capability:
exposes:
- type: mcp
namespace: mortgage
port: 8080
tools:
- name: mortgage-rate-schedule-lookup
description: Retrieves mortgage rate schedule lookup data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.mortgage-rate-schedule-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /mortgage/rate/schedule/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: mortgage-rate-schedule-lookup
method: GET
Retrieves business account cash flow summary data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Business Account Cash Flow Summary
description: Retrieves business account cash flow summary data from the Scotiabank banking and financial services systems.
tags:
- business
- scotiabank
- summary
capability:
exposes:
- type: mcp
namespace: business
port: 8080
tools:
- name: business-account-cash-flow-summary
description: Retrieves business account cash flow summary data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.business-account-cash-flow-summary
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /business/account/cash/flow/summary/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: business-account-cash-flow-summary
method: GET
Retrieves Figma file metadata for design assets.
naftiko: '0.5'
info:
label: Figma Design File Viewer
description: Retrieves Figma file metadata for 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
Retrieves digital banking funnel analytics from Google Analytics.
naftiko: '0.5'
info:
label: Google Analytics Digital Banking Funnel
description: Retrieves digital banking funnel analytics from Google Analytics.
tags:
- marketing
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-banking-funnel
description: Retrieve digital banking 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 payment modernization pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Payment Modernization Pipeline
description: Orchestrates payment modernization pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- payment
- scotiabank
- confluence
- bloomberg
- scotiabank
capability:
exposes:
- type: mcp
namespace: payment
port: 8080
tools:
- name: payment-modernization-pipeline
description: Orchestrates payment modernization pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: bloomberg.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: scotiabank.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/payment
operations:
- name: execute-1
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/payment
operations:
- name: execute-2
method: POST
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/payment
operations:
- name: execute-3
method: POST
Queries Datadog for ATM device health metrics by branch and alerts the operations team via Microsoft Teams when issues are detected.
naftiko: '0.5'
info:
label: Branch ATM Health Monitor
description: Queries Datadog for ATM device health metrics by branch and alerts the operations team via Microsoft Teams when issues are detected.
tags:
- operations
- atm
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: atm-monitoring
port: 8080
tools:
- name: check-atm-health
description: Given a branch code, check ATM health in Datadog and alert if issues.
inputParameters:
- name: branch_code
in: body
type: string
description: The branch code.
steps:
- name: get-atm-metrics
type: call
call: datadog.get-hosts
with:
filter: branch:{{branch_code}},device:atm
- name: notify-ops
type: call
call: msteams.send-message
with:
channel_id: atm_operations
text: 'ATM Health Check — Branch {{branch_code}}: {{get-atm-metrics.total_matching}} ATMs monitored. Check Datadog for details.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: hosts
path: /hosts?filter={{filter}}
inputParameters:
- name: filter
in: path
operations:
- name: get-hosts
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
Orchestrates esg portfolio screening pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Esg Portfolio Screening Pipeline
description: Orchestrates esg portfolio screening pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- esg
- scotiabank
- bloomberg
- scotiabank
- salesforce
capability:
exposes:
- type: mcp
namespace: esg
port: 8080
tools:
- name: esg-portfolio-screening-pipeline
description: Orchestrates esg portfolio screening pipeline across banking and financial services 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: bloomberg.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: scotiabank.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/esg
operations:
- name: execute-1
method: POST
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/esg
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/esg
operations:
- name: execute-3
method: POST
Orchestrates real time payment monitoring pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Real Time Payment Monitoring Pipeline
description: Orchestrates real time payment monitoring pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- real
- scotiabank
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: real
port: 8080
tools:
- name: real-time-payment-monitoring-pipeline
description: Orchestrates real time payment monitoring pipeline across banking and financial services 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://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/real
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/real
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/real
operations:
- name: execute-3
method: POST
Triggers a Power BI dataset refresh for the enterprise risk dashboard.
naftiko: '0.5'
info:
label: Power BI Risk Dashboard Refresh
description: Triggers a Power BI dataset refresh for the enterprise risk dashboard.
tags:
- risk
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: risk-analytics
port: 8080
tools:
- name: refresh-risk-dashboard
description: Trigger a Power BI dataset refresh.
inputParameters:
- name: dataset_id
in: body
type: string
description: The 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
Orchestrates mortgage application decisioning pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Mortgage Application Decisioning Pipeline
description: Orchestrates mortgage application decisioning pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- mortgage
- scotiabank
- scotiabank
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: mortgage
port: 8080
tools:
- name: mortgage-application-decisioning-pipeline
description: Orchestrates mortgage application decisioning pipeline across banking and financial services 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: scotiabank.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: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/mortgage
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/mortgage
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/mortgage
operations:
- name: execute-3
method: POST
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 details 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://scotiabank.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 treasury liquidity management pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Treasury Liquidity Management Pipeline
description: Orchestrates treasury liquidity management pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- treasury
- scotiabank
- teams
- splunk
- confluence
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: treasury-liquidity-management-pipeline
description: Orchestrates treasury liquidity management pipeline across banking and financial services 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: splunk.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/treasury
operations:
- name: execute-1
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/treasury
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/treasury
operations:
- name: execute-3
method: POST
Orchestrates branch performance analytics pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Branch Performance Analytics Pipeline
description: Orchestrates branch performance analytics pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- branch
- scotiabank
- jira
- teams
- splunk
capability:
exposes:
- type: mcp
namespace: branch
port: 8080
tools:
- name: branch-performance-analytics-pipeline
description: Orchestrates branch performance analytics pipeline across banking and financial services 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: splunk.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/branch
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/branch
operations:
- name: execute-2
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/branch
operations:
- name: execute-3
method: POST
Checks the status of an Interac e-Transfer via the payments API.
naftiko: '0.5'
info:
label: Interac e-Transfer Status
description: Checks the status of an Interac e-Transfer via the payments API.
tags:
- payments
- interac
- mulesoft
capability:
exposes:
- type: mcp
namespace: etransfer
port: 8080
tools:
- name: get-etransfer-status
description: Look up an Interac e-Transfer by reference.
inputParameters:
- name: transfer_reference
in: body
type: string
description: The e-Transfer reference number.
call: mulesoft.get-etransfer
with:
reference: '{{transfer_reference}}'
consumes:
- type: http
namespace: mulesoft
baseUri: https://api.scotiabank.com/mulesoft/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: etransfers
path: /payments/interac/{{reference}}
inputParameters:
- name: reference
in: path
operations:
- name: get-etransfer
method: GET
Retrieves auto loan payment schedule data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Auto Loan Payment Schedule
description: Retrieves auto loan payment schedule data from the Scotiabank banking and financial services systems.
tags:
- auto
- scotiabank
- schedule
capability:
exposes:
- type: mcp
namespace: auto
port: 8080
tools:
- name: auto-loan-payment-schedule
description: Retrieves auto loan payment schedule data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.auto-loan-payment-schedule
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /auto/loan/payment/schedule/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: auto-loan-payment-schedule
method: GET
Orchestrates customer complaint management pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Complaint Management Pipeline
description: Orchestrates customer complaint management pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- splunk
- confluence
- bloomberg
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-complaint-management-pipeline
description: Orchestrates customer complaint management pipeline across banking and financial services 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: splunk.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: bloomberg.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/customer
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/customer
operations:
- name: execute-2
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/customer
operations:
- name: execute-3
method: POST
Retrieves a Tableau view for risk analytics and posts to Microsoft Teams.
naftiko: '0.5'
info:
label: Tableau Risk Analytics Dashboard
description: Retrieves a Tableau view for risk analytics and posts to Microsoft Teams.
tags:
- risk
- analytics
- tableau
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-dashboards
port: 8080
tools:
- name: share-risk-dashboard
description: Fetch a Tableau risk view and share to Teams.
inputParameters:
- name: workbook_id
in: body
type: string
description: Tableau workbook ID.
- name: view_id
in: body
type: string
description: Tableau view ID.
steps:
- name: get-view
type: call
call: tableau.get-view
with:
workbook_id: '{{workbook_id}}'
view_id: '{{view_id}}'
- name: post-to-teams
type: call
call: msteams.send-message
with:
channel_id: risk_management
text: 'Risk Dashboard: {{get-view.url}}'
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.scotiabank.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/$secrets.tableau_site_id/workbooks/{{workbook_id}}/views/{{view_id}}
inputParameters:
- name: workbook_id
in: path
- name: view_id
in: path
operations:
- name: get-view
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
Orchestrates anti fraud transaction monitoring pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Anti Fraud Transaction Monitoring Pipeline
description: Orchestrates anti fraud transaction monitoring pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- anti
- scotiabank
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: anti
port: 8080
tools:
- name: anti-fraud-transaction-monitoring-pipeline
description: Orchestrates anti fraud transaction monitoring pipeline across banking and financial services 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://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/anti
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/anti
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/anti
operations:
- name: execute-3
method: POST
Retrieves investment portfolio allocation data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Investment Portfolio Allocation
description: Retrieves investment portfolio allocation data from the Scotiabank banking and financial services systems.
tags:
- investment
- scotiabank
- allocation
capability:
exposes:
- type: mcp
namespace: investment
port: 8080
tools:
- name: investment-portfolio-allocation
description: Retrieves investment portfolio allocation data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.investment-portfolio-allocation
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /investment/portfolio/allocation/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: investment-portfolio-allocation
method: GET
Retrieves firewall rule configurations from Palo Alto Networks for security auditing.
naftiko: '0.5'
info:
label: Palo Alto Firewall Rule Audit
description: Retrieves firewall rule configurations from Palo Alto Networks 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 rule statistics.
inputParameters:
- name: device_group
in: body
type: string
description: The device group name.
call: paloalto.get-security-rules
with:
device_group: '{{device_group}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.scotiabank.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
Orchestrates market risk var calculation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Market Risk Var Calculation Pipeline
description: Orchestrates market risk var calculation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- market
- scotiabank
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: market
port: 8080
tools:
- name: market-risk-var-calculation-pipeline
description: Orchestrates market risk var calculation pipeline across banking and financial services 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/market
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/market
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/market
operations:
- name: execute-3
method: POST
Orchestrates correspondent banking compliance pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Correspondent Banking Compliance Pipeline
description: Orchestrates correspondent banking compliance pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- correspondent
- scotiabank
- scotiabank
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: correspondent
port: 8080
tools:
- name: correspondent-banking-compliance-pipeline
description: Orchestrates correspondent banking compliance pipeline across banking and financial services 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: scotiabank.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: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/correspondent
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/correspondent
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/correspondent
operations:
- name: execute-3
method: POST
Orchestrates stress testing scenario pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Stress Testing Scenario Pipeline
description: Orchestrates stress testing scenario pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- stress
- scotiabank
- scotiabank
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: stress
port: 8080
tools:
- name: stress-testing-scenario-pipeline
description: Orchestrates stress testing scenario pipeline across banking and financial services 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: scotiabank.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: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/stress
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/stress
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/stress
operations:
- name: execute-3
method: POST
Orchestrates regulatory reporting automation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Regulatory Reporting Automation Pipeline
description: Orchestrates regulatory reporting automation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- regulatory
- scotiabank
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: regulatory-reporting-automation-pipeline
description: Orchestrates regulatory reporting automation pipeline across banking and financial services 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://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/regulatory
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/regulatory
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/regulatory
operations:
- name: execute-3
method: POST
Orchestrates customer accessibility compliance pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Accessibility Compliance Pipeline
description: Orchestrates customer accessibility compliance pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- jira
- teams
- splunk
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-accessibility-compliance-pipeline
description: Orchestrates customer accessibility compliance pipeline across banking and financial services 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: splunk.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/customer
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/customer
operations:
- name: execute-2
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/customer
operations:
- name: execute-3
method: POST
Orchestrates customer retention intervention pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Retention Intervention Pipeline
description: Orchestrates customer retention intervention pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- scotiabank
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-retention-intervention-pipeline
description: Orchestrates customer retention intervention pipeline across banking and financial services 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: scotiabank.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: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/customer
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.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://scotiabank.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 line of credit utilization data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Line Of Credit Utilization
description: Retrieves line of credit utilization data from the Scotiabank banking and financial services systems.
tags:
- line
- scotiabank
- utilization
capability:
exposes:
- type: mcp
namespace: line
port: 8080
tools:
- name: line-of-credit-utilization
description: Retrieves line of credit utilization data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.line-of-credit-utilization
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /line/of/credit/utilization/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: line-of-credit-utilization
method: GET
Responds to mobile banking incidents by triaging severity, alerting engineering, and communicating with affected customers.
naftiko: '0.5'
info:
label: Mobile Banking Incident Pipeline
description: Responds to mobile banking incidents by triaging severity, alerting engineering, and communicating with affected customers.
tags:
- mobile
- scotiabank
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: mobile
port: 8080
tools:
- name: mobile-banking-incident-pipeline
description: Responds to mobile banking incidents by triaging severity, alerting engineering, and communicating with affected customers.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: triage-incident
type: call
call: datadog.query-metrics
with:
input: '{{input_id}}'
- name: alert-team
type: call
call: slack.post-message
with:
input: '{{input_id}}'
- name: create-ticket
type: call
call: jira.create-issue
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: /query
operations:
- name: query-metrics
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /chat.postMessage
operations:
- name: post-message
method: POST
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /issue
operations:
- name: create-issue
method: POST
Retrieves wealth advisor availability data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Wealth Advisor Availability
description: Retrieves wealth advisor availability data from the Scotiabank banking and financial services systems.
tags:
- wealth
- scotiabank
- availability
capability:
exposes:
- type: mcp
namespace: wealth
port: 8080
tools:
- name: wealth-advisor-availability
description: Retrieves wealth advisor availability data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.wealth-advisor-availability
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /wealth/advisor/availability/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: wealth-advisor-availability
method: GET
Checks Informatica data integration job status.
naftiko: '0.5'
info:
label: Informatica Data Integration Monitor
description: Checks Informatica data integration job status.
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
Sends a formatted message to a Microsoft Teams channel.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Notifier
description: Sends a formatted message to a Microsoft Teams channel.
tags:
- communications
- messaging
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: comms
port: 8080
tools:
- name: send-teams-notification
description: Send a message to a Microsoft Teams channel.
inputParameters:
- name: channel_id
in: body
type: string
description: The Teams channel ID.
- name: message
in: body
type: string
description: The message text.
call: msteams.send-message
with:
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Looker dashboard for risk analytics.
naftiko: '0.5'
info:
label: Looker Risk Analytics Dashboard
description: Retrieves a Looker dashboard for risk analytics.
tags:
- risk
- analytics
- looker
capability:
exposes:
- type: mcp
namespace: looker-analytics
port: 8080
tools:
- name: get-risk-dashboard
description: Retrieve a Looker risk 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://scotiabank.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 digital banking feature rollout pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Digital Banking Feature Rollout Pipeline
description: Orchestrates digital banking feature rollout pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- digital
- scotiabank
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: digital
port: 8080
tools:
- name: digital-banking-feature-rollout-pipeline
description: Orchestrates digital banking feature rollout pipeline across banking and financial services 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://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/digital
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/digital
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/digital
operations:
- name: execute-3
method: POST
Orchestrates wealth management rebalancing pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Wealth Management Rebalancing Pipeline
description: Orchestrates wealth management rebalancing pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- wealth
- scotiabank
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: wealth
port: 8080
tools:
- name: wealth-management-rebalancing-pipeline
description: Orchestrates wealth management rebalancing pipeline across banking and financial services 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://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/wealth
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/wealth
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/wealth
operations:
- name: execute-3
method: POST
Orchestrates customer onboarding digital pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Onboarding Digital Pipeline
description: Orchestrates customer onboarding digital pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-onboarding-digital-pipeline
description: Orchestrates customer onboarding digital pipeline across banking and financial services 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://scotiabank.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://scotiabank.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
Searches Confluence for policy and operations documentation.
naftiko: '0.5'
info:
label: Confluence Documentation Search
description: Searches Confluence for policy and operations 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://scotiabank.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 the latest build status for an Azure DevOps pipeline.
naftiko: '0.5'
info:
label: Azure DevOps Build Status
description: Retrieves the latest build status for an Azure DevOps pipeline.
tags:
- ci-cd
- engineering
- azure-devops
capability:
exposes:
- type: mcp
namespace: devops-ci
port: 8080
tools:
- name: get-build-status
description: Look up latest build for an Azure DevOps pipeline.
inputParameters:
- name: project
in: body
type: string
description: The project name.
- name: pipeline_id
in: body
type: string
description: The pipeline ID.
call: azdevops.get-latest-build
with:
project: '{{project}}'
pipeline_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: azdevops
baseUri: https://dev.azure.com/scotiabank
authentication:
type: basic
username: $secrets.azdevops_user
password: $secrets.azdevops_pat
resources:
- name: builds
path: /{{project}}/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0
inputParameters:
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: get-latest-build
method: GET
Triggers Postman API collection test runs.
naftiko: '0.5'
info:
label: Postman API Test Runner
description: Triggers Postman API collection test runs.
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 customer segment classification data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Customer Segment Classification
description: Retrieves customer segment classification data from the Scotiabank banking and financial services systems.
tags:
- customer
- scotiabank
- classification
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-segment-classification
description: Retrieves customer segment classification data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.customer-segment-classification
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /customer/segment/classification/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: customer-segment-classification
method: GET
Creates a Zoom meeting and notifies via Microsoft Teams.
naftiko: '0.5'
info:
label: Zoom Meeting Scheduler
description: Creates a Zoom meeting and notifies via Microsoft Teams.
tags:
- collaboration
- meetings
- zoom
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: schedule-zoom-meeting
description: Create a Zoom meeting and notify via Teams.
inputParameters:
- name: topic
in: body
type: string
description: Meeting topic.
- name: start_time
in: body
type: string
description: Start time ISO 8601.
- name: duration
in: body
type: number
description: Duration in minutes.
- name: teams_channel_id
in: body
type: string
description: Teams channel.
steps:
- name: create-meeting
type: call
call: zoom.create-meeting
with:
topic: '{{topic}}'
start_time: '{{start_time}}'
duration: '{{duration}}'
- name: notify-teams
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Zoom meeting scheduled: {{topic}} at {{start_time}}. Join: {{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: 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 profile by ID, returning name, segment, relationship manager, and total assets under management.
naftiko: '0.5'
info:
label: Salesforce Customer Profile Lookup
description: Retrieves a Salesforce customer profile by ID, returning name, segment, relationship manager, and total assets under management.
tags:
- banking
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-crm
port: 8080
tools:
- name: get-customer-profile
description: Look up a Salesforce customer profile by ID.
inputParameters:
- name: customer_id
in: body
type: string
description: The Salesforce customer record ID.
call: salesforce.get-customer
with:
customer_id: '{{customer_id}}'
outputParameters:
- name: name
type: string
mapping: $.Name
- name: segment
type: string
mapping: $.Client_Segment__c
- name: relationship_manager
type: string
mapping: $.Owner.Name
- name: total_assets
type: number
mapping: $.Total_Assets__c
consumes:
- type: http
namespace: salesforce
baseUri: https://scotiabank.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
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 an expense report and flag 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://scotiabank.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
Triggers a SailPoint identity access review, collects results, and creates ServiceNow tasks for any access violations found.
naftiko: '0.5'
info:
label: SailPoint Access Review Pipeline
description: Triggers a SailPoint identity access review, collects results, and creates ServiceNow tasks for any access violations found.
tags:
- security
- identity
- sailpoint
- servicenow
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-access-review
description: Given a campaign name, trigger SailPoint review and create tasks for violations.
inputParameters:
- name: campaign_name
in: body
type: string
description: The SailPoint certification campaign name.
steps:
- name: trigger-campaign
type: call
call: sailpoint.create-campaign
with:
name: '{{campaign_name}}'
- name: create-violation-tasks
type: call
call: servicenow.create-task
with:
short_description: 'Access review violations: {{campaign_name}}'
assigned_group: Identity_Access_Management
description: 'SailPoint campaign {{campaign_name}} — Campaign ID: {{trigger-campaign.campaign_id}}. Review pending violations.'
consumes:
- type: http
namespace: sailpoint
baseUri: https://scotiabank.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/task
operations:
- name: create-task
method: POST
Retrieves mobile deposit limit check data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Mobile Deposit Limit Check
description: Retrieves mobile deposit limit check data from the Scotiabank banking and financial services systems.
tags:
- mobile
- scotiabank
- check
capability:
exposes:
- type: mcp
namespace: mobile
port: 8080
tools:
- name: mobile-deposit-limit-check
description: Retrieves mobile deposit limit check data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.mobile-deposit-limit-check
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /mobile/deposit/limit/check/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: mobile-deposit-limit-check
method: GET
Queries Cloudflare CDN performance metrics for Scotiabank digital properties.
naftiko: '0.5'
info:
label: Cloudflare CDN Performance
description: Queries Cloudflare CDN performance metrics for Scotiabank digital properties.
tags:
- infrastructure
- cdn
- cloudflare
capability:
exposes:
- type: mcp
namespace: cdn
port: 8080
tools:
- name: get-cdn-performance
description: Retrieve 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}}'
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
Queries SolarWinds for network node health at branch locations.
naftiko: '0.5'
info:
label: SolarWinds Network Health
description: Queries SolarWinds for network node health at branch locations.
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: branch_code
in: body
type: string
description: Branch code.
call: solarwinds.query-nodes
with:
branch_code: '{{branch_code}}'
consumes:
- type: http
namespace: solarwinds
baseUri: https://solarwinds.scotiabank.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='{{branch_code}}'
inputParameters:
- name: branch_code
in: path
operations:
- name: query-nodes
method: GET
Queries New Relic for banking application performance.
naftiko: '0.5'
info:
label: New Relic Application Performance
description: Queries New Relic for banking application performance.
tags:
- monitoring
- performance
- new-relic
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-performance
description: Check New Relic APM metrics.
inputParameters:
- name: app_id
in: body
type: string
description: New Relic app ID.
call: newrelic.get-app
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
method: GET
Retrieves credit card rewards balance data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Credit Card Rewards Balance
description: Retrieves credit card rewards balance data from the Scotiabank banking and financial services systems.
tags:
- credit
- scotiabank
- balance
capability:
exposes:
- type: mcp
namespace: credit
port: 8080
tools:
- name: credit-card-rewards-balance
description: Retrieves credit card rewards balance data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.credit-card-rewards-balance
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /credit/card/rewards/balance/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: credit-card-rewards-balance
method: GET
When a customer complaint is escalated, creates a ServiceNow priority case, pulls customer relationship data from Salesforce, and notifies the branch manager and ombudsman via Microsoft Teams.
naftiko: '0.5'
info:
label: Customer Complaint Escalation Pipeline
description: When a customer complaint is escalated, creates a ServiceNow priority case, pulls customer relationship data from Salesforce, and notifies the branch manager and ombudsman via Microsoft Teams.
tags:
- customer-service
- complaints
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaint-escalation
port: 8080
tools:
- name: escalate-complaint
description: Given a customer ID and complaint details, create a priority case and notify relevant parties.
inputParameters:
- name: customer_id
in: body
type: string
description: The Salesforce customer ID.
- name: complaint_summary
in: body
type: string
description: Summary of the complaint.
- name: branch_code
in: body
type: string
description: The originating branch code.
steps:
- name: get-customer
type: call
call: salesforce.get-customer
with:
customer_id: '{{customer_id}}'
- name: create-case
type: call
call: servicenow.create-case
with:
short_description: 'Escalated Complaint: {{get-customer.name}} — Branch {{branch_code}}'
category: customer_complaint
urgency: high
assigned_group: Customer_Relations
description: 'Customer: {{get-customer.name}} ({{get-customer.segment}}). Branch: {{branch_code}}. Complaint: {{complaint_summary}}.'
- name: notify-branch-manager
type: call
call: msteams.send-message
with:
channel_id: branch_{{branch_code}}
text: 'Complaint Escalated: {{get-customer.name}} ({{get-customer.segment}}). Case: {{create-case.number}}. Summary: {{complaint_summary}}.'
- name: notify-ombudsman
type: call
call: msteams.send-message
with:
channel_id: customer_relations
text: 'Escalated Complaint: {{get-customer.name}} — Branch {{branch_code}}. Case: {{create-case.number}}. Segment: {{get-customer.segment}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://scotiabank.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
- type: http
namespace: servicenow
baseUri: https://scotiabank.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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the status of a payment transaction via the MuleSoft payments API, returning transaction ID, status, amount, and timestamp.
naftiko: '0.5'
info:
label: Payment Transaction Status Lookup
description: Retrieves the status of a payment transaction via the MuleSoft payments API, returning transaction ID, status, amount, and timestamp.
tags:
- payments
- banking
- mulesoft
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-transaction-status
description: Look up a payment transaction by ID.
inputParameters:
- name: transaction_id
in: body
type: string
description: The payment transaction ID.
call: mulesoft.get-transaction
with:
transaction_id: '{{transaction_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: number
mapping: $.amount
- name: currency
type: string
mapping: $.currency
- name: timestamp
type: string
mapping: $.created_at
consumes:
- type: http
namespace: mulesoft
baseUri: https://api.scotiabank.com/mulesoft/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: transactions
path: /payments/transactions/{{transaction_id}}
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
Orchestrates operational risk incident pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Operational Risk Incident Pipeline
description: Orchestrates operational risk incident pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- operational
- scotiabank
- splunk
- confluence
- bloomberg
capability:
exposes:
- type: mcp
namespace: operational
port: 8080
tools:
- name: operational-risk-incident-pipeline
description: Orchestrates operational risk incident pipeline across banking and financial services 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: splunk.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: bloomberg.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/operational
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/operational
operations:
- name: execute-2
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/operational
operations:
- name: execute-3
method: POST
Retrieves customer digital engagement score data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Customer Digital Engagement Score
description: Retrieves customer digital engagement score data from the Scotiabank banking and financial services systems.
tags:
- customer
- scotiabank
- score
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-digital-engagement-score
description: Retrieves customer digital engagement score data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.customer-digital-engagement-score
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /customer/digital/engagement/score/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: customer-digital-engagement-score
method: GET
Orchestrates investment trade settlement pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Investment Trade Settlement Pipeline
description: Orchestrates investment trade settlement pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- investment
- scotiabank
- bloomberg
- scotiabank
- salesforce
capability:
exposes:
- type: mcp
namespace: investment
port: 8080
tools:
- name: investment-trade-settlement-pipeline
description: Orchestrates investment trade settlement pipeline across banking and financial services 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: bloomberg.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: scotiabank.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/investment
operations:
- name: execute-1
method: POST
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/investment
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/investment
operations:
- name: execute-3
method: POST
Orchestrates credit risk monitoring pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Credit Risk Monitoring Pipeline
description: Orchestrates credit risk monitoring pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- credit
- scotiabank
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: credit
port: 8080
tools:
- name: credit-risk-monitoring-pipeline
description: Orchestrates credit risk monitoring pipeline across banking and financial services 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/credit
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://scotiabank.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/credit
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/credit
operations:
- name: execute-3
method: POST
Orchestrates cybersecurity threat intelligence pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Cybersecurity Threat Intelligence Pipeline
description: Orchestrates cybersecurity threat intelligence pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- cybersecurity
- scotiabank
- splunk
- confluence
- bloomberg
capability:
exposes:
- type: mcp
namespace: cybersecurity
port: 8080
tools:
- name: cybersecurity-threat-intelligence-pipeline
description: Orchestrates cybersecurity threat intelligence pipeline across banking and financial services 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: splunk.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: bloomberg.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/cybersecurity
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/cybersecurity
operations:
- name: execute-2
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/cybersecurity
operations:
- name: execute-3
method: POST
Retrieves a SAP Concur expense report by ID.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Lookup
description: Retrieves a SAP Concur expense report by ID.
tags:
- finance
- expense
- sap-concur
capability:
exposes:
- type: mcp
namespace: finance-expense
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 expense report ID.
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
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
Initiates a wire transfer via MuleSoft, logs the transaction to Splunk for compliance, creates a ServiceNow tracking ticket, and notifies the treasury operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Wire Transfer Processing Pipeline
description: Initiates a wire transfer via MuleSoft, logs the transaction to Splunk for compliance, creates a ServiceNow tracking ticket, and notifies the treasury operations team via Microsoft Teams.
tags:
- payments
- wire-transfer
- mulesoft
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wire-transfers
port: 8080
tools:
- name: process-wire-transfer
description: Given transfer details, initiate wire, log to Splunk, create tracking ticket, and notify treasury.
inputParameters:
- name: from_account
in: body
type: string
description: The source account number.
- name: to_account
in: body
type: string
description: The destination account number.
- name: amount
in: body
type: number
description: The transfer amount.
- name: currency
in: body
type: string
description: The currency code.
- name: beneficiary_bank
in: body
type: string
description: The beneficiary bank SWIFT code.
steps:
- name: initiate-transfer
type: call
call: mulesoft.initiate-wire
with:
from_account: '{{from_account}}'
to_account: '{{to_account}}'
amount: '{{amount}}'
currency: '{{currency}}'
swift_code: '{{beneficiary_bank}}'
- name: log-transaction
type: call
call: splunk.create-event
with:
index: wire_transfers
event: 'Wire transfer {{initiate-transfer.reference}}. From: {{from_account}}. To: {{to_account}}. Amount: {{amount}} {{currency}}.'
- name: create-ticket
type: call
call: servicenow.create-task
with:
short_description: 'Wire Transfer: {{initiate-transfer.reference}} — {{amount}} {{currency}}'
assigned_group: Treasury_Operations
description: 'Wire ref: {{initiate-transfer.reference}}. From: {{from_account}}. To: {{to_account}} ({{beneficiary_bank}}). Amount: {{amount}} {{currency}}.'
- name: notify-treasury
type: call
call: msteams.send-message
with:
channel_id: treasury_operations
text: 'Wire Transfer Initiated: {{initiate-transfer.reference}} — {{amount}} {{currency}} to {{beneficiary_bank}}. Ticket: {{create-ticket.number}}.'
consumes:
- type: http
namespace: mulesoft
baseUri: https://api.scotiabank.com/mulesoft/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: wire-transfers
path: /payments/wire-transfers
operations:
- name: initiate-wire
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: events
path: /collectors/event
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://scotiabank.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
Retrieves customer product eligibility data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Customer Product Eligibility
description: Retrieves customer product eligibility data from the Scotiabank banking and financial services systems.
tags:
- customer
- scotiabank
- eligibility
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-product-eligibility
description: Retrieves customer product eligibility data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.customer-product-eligibility
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /customer/product/eligibility/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: customer-product-eligibility
method: GET
Searches SharePoint for compliance and policy documents.
naftiko: '0.5'
info:
label: SharePoint Document Search
description: Searches SharePoint for compliance and policy documents.
tags:
- documentation
- sharepoint
capability:
exposes:
- type: mcp
namespace: doc-search
port: 8080
tools:
- name: search-documents
description: Search SharePoint for documents.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID.
- name: query
in: body
type: string
description: The search keyword.
call: sharepoint.search
with:
site_id: '{{site_id}}'
query: '{{query}}'
consumes:
- 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='{{query}}')
inputParameters:
- name: site_id
in: path
- name: query
in: path
operations:
- name: search
method: GET
Orchestrates regulatory capital calculation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Regulatory Capital Calculation Pipeline
description: Orchestrates regulatory capital calculation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- regulatory
- scotiabank
- confluence
- bloomberg
- scotiabank
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: regulatory-capital-calculation-pipeline
description: Orchestrates regulatory capital calculation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: bloomberg.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: scotiabank.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/regulatory
operations:
- name: execute-1
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/regulatory
operations:
- name: execute-2
method: POST
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/regulatory
operations:
- name: execute-3
method: POST
Executes a SQL query against Snowflake.
naftiko: '0.5'
info:
label: Snowflake Data Warehouse Query
description: Executes a SQL query against Snowflake.
tags:
- data-management
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: data-warehouse
port: 8080
tools:
- name: execute-snowflake-query
description: Execute a SQL statement against Snowflake.
inputParameters:
- name: warehouse
in: body
type: string
description: Warehouse name.
- name: database
in: body
type: string
description: Database name.
- name: sql_statement
in: body
type: string
description: SQL statement.
call: snowflake.execute-sql
with:
warehouse: '{{warehouse}}'
database: '{{database}}'
statement: '{{sql_statement}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-sql
method: POST
Coordinates annual wealth client reviews by assembling portfolio data, generating reports, and scheduling advisor meetings.
naftiko: '0.5'
info:
label: Wealth Client Review Pipeline
description: Coordinates annual wealth client reviews by assembling portfolio data, generating reports, and scheduling advisor meetings.
tags:
- wealth
- scotiabank
- salesforce
- teams
capability:
exposes:
- type: mcp
namespace: wealth
port: 8080
tools:
- name: wealth-client-review-pipeline
description: Coordinates annual wealth client reviews by assembling portfolio data, generating reports, and scheduling advisor meetings.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: get-portfolio
type: call
call: snowflake.run-query
with:
input: '{{input_id}}'
- name: update-crm
type: call
call: salesforce.update-contact
with:
input: '{{input_id}}'
- name: schedule-meeting
type: call
call: teams.create-event
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /sobjects/Contact
operations:
- name: update-contact
method: PATCH
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /users/events
operations:
- name: create-event
method: POST
Retrieves a lending application status from the Salesforce lending module, returning application stage, credit decision, and next steps.
naftiko: '0.5'
info:
label: Lending Application Status
description: Retrieves a lending application status from the Salesforce lending module, returning application stage, credit decision, and next steps.
tags:
- lending
- credit
- salesforce
capability:
exposes:
- type: mcp
namespace: lending
port: 8080
tools:
- name: get-lending-application
description: Look up a lending application by ID.
inputParameters:
- name: application_id
in: body
type: string
description: The Salesforce lending application ID.
call: salesforce.get-application
with:
application_id: '{{application_id}}'
outputParameters:
- name: stage
type: string
mapping: $.Stage__c
- name: credit_decision
type: string
mapping: $.Credit_Decision__c
- name: amount_requested
type: number
mapping: $.Amount_Requested__c
- name: applicant_name
type: string
mapping: $.Applicant_Name__c
consumes:
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: applications
path: /sobjects/Lending_Application__c/{{application_id}}
inputParameters:
- name: application_id
in: path
operations:
- name: get-application
method: GET
Queries Snowflake warehouse credit consumption metrics.
naftiko: '0.5'
info:
label: Snowflake Data Warehouse Usage
description: Queries Snowflake warehouse credit consumption metrics.
tags:
- data-management
- cost-management
- snowflake
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: get-warehouse-usage
description: Query Snowflake warehouse credits.
inputParameters:
- name: warehouse_name
in: body
type: string
description: Warehouse name.
call: snowflake.execute-sql
with:
statement: SELECT sum(credits_used) FROM snowflake.account_usage.warehouse_metering_history WHERE warehouse_name = '{{warehouse_name}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-sql
method: POST
Orchestrates customer data quality pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Data Quality Pipeline
description: Orchestrates customer data quality pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- confluence
- bloomberg
- scotiabank
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-data-quality-pipeline
description: Orchestrates customer data quality pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: bloomberg.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: scotiabank.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/customer
operations:
- name: execute-1
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/customer
operations:
- name: execute-2
method: POST
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: scotiabank-resource
path: /api/customer
operations:
- name: execute-3
method: POST
Retrieves gic rate comparison data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Gic Rate Comparison
description: Retrieves gic rate comparison data from the Scotiabank banking and financial services systems.
tags:
- gic
- scotiabank
- comparison
capability:
exposes:
- type: mcp
namespace: gic
port: 8080
tools:
- name: gic-rate-comparison
description: Retrieves gic rate comparison data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.gic-rate-comparison
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /gic/rate/comparison/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: gic-rate-comparison
method: GET
Orchestrates open banking api pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Open Banking Api Pipeline
description: Orchestrates open banking api pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- open
- scotiabank
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: open
port: 8080
tools:
- name: open-banking-api-pipeline
description: Orchestrates open banking api pipeline across banking and financial services 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://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/open
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/open
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/open
operations:
- name: execute-3
method: POST
Orchestrates customer financial wellness pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Financial Wellness Pipeline
description: Orchestrates customer financial wellness pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-financial-wellness-pipeline
description: Orchestrates customer financial wellness pipeline across banking and financial services 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://scotiabank.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://scotiabank.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 a wealth management client's portfolio summary from the investment platform via MuleSoft, returning asset allocation, total value, and performance metrics.
naftiko: '0.5'
info:
label: Wealth Management Portfolio Summary
description: Retrieves a wealth management client's portfolio summary from the investment platform via MuleSoft, returning asset allocation, total value, and performance metrics.
tags:
- wealth
- portfolio
- mulesoft
capability:
exposes:
- type: mcp
namespace: wealth-mgmt
port: 8080
tools:
- name: get-portfolio-summary
description: Look up a client portfolio summary.
inputParameters:
- name: client_id
in: body
type: string
description: The wealth management client ID.
call: mulesoft.get-portfolio
with:
client_id: '{{client_id}}'
outputParameters:
- name: total_value
type: number
mapping: $.total_market_value
- name: ytd_return
type: number
mapping: $.ytd_return_pct
- name: asset_allocation
type: object
mapping: $.asset_allocation
consumes:
- type: http
namespace: mulesoft
baseUri: https://api.scotiabank.com/mulesoft/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: portfolios
path: /wealth/clients/{{client_id}}/portfolio
inputParameters:
- name: client_id
in: path
operations:
- name: get-portfolio
method: GET
When a fraud alert is triggered, enriches with customer data from Salesforce, creates a ServiceNow security incident, blocks the account via MuleSoft, and notifies the fraud operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Fraud Alert Investigation Pipeline
description: When a fraud alert is triggered, enriches with customer data from Salesforce, creates a ServiceNow security incident, blocks the account via MuleSoft, and notifies the fraud operations team via Microsoft Teams.
tags:
- fraud-detection
- risk
- salesforce
- servicenow
- mulesoft
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: investigate-fraud-alert
description: Given a customer ID and alert details, enrich, create incident, block account, and notify fraud ops.
inputParameters:
- name: customer_id
in: body
type: string
description: The Salesforce customer ID.
- name: alert_type
in: body
type: string
description: The fraud alert type.
- name: transaction_id
in: body
type: string
description: The suspicious transaction ID.
- name: alert_score
in: body
type: number
description: The fraud risk score.
steps:
- name: get-customer
type: call
call: salesforce.get-customer
with:
customer_id: '{{customer_id}}'
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Fraud Alert: {{alert_type}} — {{get-customer.name}}'
category: fraud
urgency: critical
assigned_group: Fraud_Operations
description: 'Customer: {{get-customer.name}}. Transaction: {{transaction_id}}. Alert type: {{alert_type}}. Score: {{alert_score}}.'
- name: block-account
type: call
call: mulesoft.block-account
with:
customer_id: '{{customer_id}}'
reason: fraud_alert_{{alert_type}}
- name: notify-fraud-ops
type: call
call: msteams.send-message
with:
channel_id: fraud_operations
text: 'FRAUD ALERT: {{alert_type}} for {{get-customer.name}}. Score: {{alert_score}}. Transaction: {{transaction_id}}. Account blocked. Incident: {{create-security-incident.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://scotiabank.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
- type: http
namespace: servicenow
baseUri: https://scotiabank.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: mulesoft
baseUri: https://api.scotiabank.com/mulesoft/v1
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: account-actions
path: /core-banking/accounts/{{customer_id}}/block
inputParameters:
- name: customer_id
in: path
operations:
- name: block-account
method: POST
- 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 trade execution status data from the Scotiabank banking and financial services systems.
naftiko: '0.5'
info:
label: Trade Execution Status
description: Retrieves trade execution status data from the Scotiabank banking and financial services systems.
tags:
- trade
- scotiabank
- status
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-execution-status
description: Retrieves trade execution status data from the Scotiabank banking and financial services systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: scotiabank.trade-execution-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: scotiabank
baseUri: https://api.scotiabank.com/v2
authentication:
type: bearer
token: $secrets.scotiabank_api_token
resources:
- name: resource
path: /trade/execution/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: trade-execution-status
method: GET
Orchestrates customer feedback action pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Feedback Action Pipeline
description: Orchestrates customer feedback action pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-feedback-action-pipeline
description: Orchestrates customer feedback action pipeline across banking and financial services 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://scotiabank.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://scotiabank.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://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/customer
operations:
- name: execute-3
method: POST
When a trade is executed on the wealth management platform, logs the trade in Splunk, updates the client record in Salesforce, and notifies the investment advisor via Microsoft Teams.
naftiko: '0.5'
info:
label: Investment Trade Execution Notifier
description: When a trade is executed on the wealth management platform, logs the trade in Splunk, updates the client record in Salesforce, and notifies the investment advisor via Microsoft Teams.
tags:
- wealth
- trading
- splunk
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-execution
port: 8080
tools:
- name: notify-trade-execution
description: Given trade details, log to Splunk, update Salesforce, and notify the advisor.
inputParameters:
- name: trade_id
in: body
type: string
description: The trade execution ID.
- name: client_id
in: body
type: string
description: The Salesforce client ID.
- name: symbol
in: body
type: string
description: The traded security symbol.
- name: quantity
in: body
type: number
description: The quantity traded.
- name: price
in: body
type: number
description: The execution price.
- name: side
in: body
type: string
description: Buy or Sell.
steps:
- name: log-trade
type: call
call: splunk.create-event
with:
index: trade_executions
event: 'Trade {{trade_id}}: {{side}} {{quantity}} {{symbol}} at {{price}}. Client: {{client_id}}.'
- name: update-client
type: call
call: salesforce.update-activity
with:
client_id: '{{client_id}}'
activity_type: trade_execution
description: '{{side}} {{quantity}} {{symbol}} at {{price}}. Trade: {{trade_id}}.'
- name: notify-advisor
type: call
call: msteams.send-message
with:
channel_id: wealth_advisors
text: 'Trade Executed: {{side}} {{quantity}} {{symbol}} at ${{price}} for client {{client_id}}. Trade ID: {{trade_id}}.'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: events
path: /collectors/event
operations:
- name: create-event
method: POST
- type: http
namespace: salesforce
baseUri: https://scotiabank.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/Task
operations:
- name: update-activity
method: POST
- 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 business loan origination pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Business Loan Origination Pipeline
description: Orchestrates business loan origination pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- business
- scotiabank
- teams
- splunk
- confluence
capability:
exposes:
- type: mcp
namespace: business
port: 8080
tools:
- name: business-loan-origination-pipeline
description: Orchestrates business loan origination pipeline across banking and financial services 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: splunk.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/business
operations:
- name: execute-1
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.scotiabank.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/business
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://scotiabank.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/business
operations:
- name: execute-3
method: POST
Retrieves compensation data from Workday and sends a review package to the manager via Outlook.
naftiko: '0.5'
info:
label: Workday Compensation Review
description: Retrieves compensation data from Workday and sends a review package 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 for an employee.
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 journey analytics pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Journey Analytics Pipeline
description: Orchestrates customer journey analytics pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- scotiabank
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-journey-analytics-pipeline
description: Orchestrates customer journey analytics pipeline across banking and financial services 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://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/customer
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.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
Orchestrates aml case investigation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Aml Case Investigation Pipeline
description: Orchestrates aml case investigation pipeline across banking and financial services systems, coordinating multiple services and notifying stakeholders.
tags:
- aml
- scotiabank
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: aml
port: 8080
tools:
- name: aml-case-investigation-pipeline
description: Orchestrates aml case investigation pipeline across banking and financial services 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://scotiabank.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/aml
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://scotiabank.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/aml
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/aml
operations:
- name: execute-3
method: POST
Retrieves the internal credit risk score and rating for a corporate or retail customer from the risk management system.
naftiko: '0.5'
info:
label: Credit Risk Score Lookup
description: Retrieves the internal credit risk score and rating for a corporate or retail customer from the risk management system.
tags:
- risk
- credit
- banking
capability:
exposes:
- type: mcp
namespace: credit-risk
port: 8080
tools:
- name: get-credit-risk-score
description: Look up a customer's credit risk score and internal rating.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer identifier.
call: risk-api.get-credit-score
with:
id: '{{customer_id}}'
consumes:
- type: http
namespace: risk-api
baseUri: https://api.sc.com/risk/v1
authentication:
type: bearer
token: $secrets.sc_risk_token
resources:
- name: credit-scores
path: /customers/{{id}}/credit-score
inputParameters:
- name: id
in: path
operations:
- name: get-credit-score
method: GET
Triggers a refresh of a Power BI dataset to update banking dashboards with the latest data.
naftiko: '0.5'
info:
label: Power BI Dashboard Refresh Trigger
description: Triggers a refresh of a Power BI dataset to update banking dashboards with the latest data.
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: bi-refresh
port: 8080
tools:
- name: refresh-power-bi-dataset
description: Trigger a refresh for a Power BI dataset.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.refresh-dataset
with:
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/{{id}}/refreshes
inputParameters:
- name: id
in: path
operations:
- name: refresh-dataset
method: POST
Searches for a client's relationship manager in Salesforce CRM by customer name or account number.
naftiko: '0.5'
info:
label: Salesforce Relationship Manager Lookup
description: Searches for a client's relationship manager in Salesforce CRM by customer name or account number.
tags:
- crm
- salesforce
- relationship-management
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: find-relationship-manager
description: Look up the relationship manager for a client in Salesforce.
inputParameters:
- name: client_name
in: body
type: string
description: The client name or account number.
call: salesforce.search-accounts
with:
query: '{{client_name}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/search?q={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-accounts
method: GET
Orchestrates payment fraud prevention pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Payment Fraud Prevention Pipeline
description: Orchestrates payment fraud prevention pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- payment
- standard-chartered
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: payment
port: 8080
tools:
- name: payment-fraud-prevention-pipeline
description: Orchestrates payment fraud prevention pipeline across international banking 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://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/payment
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/payment
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/payment
operations:
- name: execute-3
method: POST
Reconciles trade settlements by comparing Murex trade records with the core banking settlement records, flagging discrepancies, and creating a Jira ticket for any breaks.
naftiko: '0.5'
info:
label: Trade Settlement Reconciliation Orchestrator
description: Reconciles trade settlements by comparing Murex trade records with the core banking settlement records, flagging discrepancies, and creating a Jira ticket for any breaks.
tags:
- trading
- settlements
- murex
- jira
capability:
exposes:
- type: mcp
namespace: trade-reconciliation
port: 8080
tools:
- name: reconcile-settlements
description: Reconcile trade settlements between Murex and core banking, flagging any breaks.
inputParameters:
- name: settlement_date
in: body
type: string
description: The settlement date in YYYY-MM-DD format.
- name: desk
in: body
type: string
description: The trading desk identifier.
steps:
- name: get-murex-settlements
type: call
call: murex.get-settlements
with:
desk: '{{desk}}'
date: '{{settlement_date}}'
- name: get-banking-settlements
type: call
call: core-banking.get-settlements
with:
date: '{{settlement_date}}'
- name: create-break-ticket
type: call
call: jira.create-issue
with:
project: RECON
summary: Settlement breaks for {{desk}} on {{settlement_date}}
description: 'Murex count: {{get-murex-settlements.count}}. Banking count: {{get-banking-settlements.count}}.'
issuetype: Bug
consumes:
- type: http
namespace: murex
baseUri: https://murex.sc.com/api/v1
authentication:
type: bearer
token: $secrets.sc_murex_token
resources:
- name: settlements
path: /settlements?desk={{desk}}&date={{date}}
inputParameters:
- name: desk
in: query
- name: date
in: query
operations:
- name: get-settlements
method: GET
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: settlements
path: /settlements?date={{date}}
inputParameters:
- name: date
in: query
operations:
- name: get-settlements
method: GET
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Orchestrates treasury risk management pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Treasury Risk Management Pipeline
description: Orchestrates treasury risk management pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- treasury
- standard-chartered
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: treasury-risk-management-pipeline
description: Orchestrates treasury risk management pipeline across international banking 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://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/treasury
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/treasury
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/treasury
operations:
- name: execute-3
method: POST
Queries Dynatrace for active performance problems on Standard Chartered banking applications.
naftiko: '0.5'
info:
label: Dynatrace Application Performance
description: Queries Dynatrace for active performance problems on Standard Chartered banking applications.
tags:
- monitoring
- dynatrace
- performance
capability:
exposes:
- type: mcp
namespace: app-monitoring
port: 8080
tools:
- name: get-app-problems
description: Get active Dynatrace problems for banking applications.
inputParameters:
- name: severity
in: body
type: string
description: Minimum severity level.
call: dynatrace.get-problems
with:
severity: '{{severity}}'
consumes:
- type: http
namespace: dynatrace
baseUri: https://sc.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems?problemSelector=status("OPEN")&severityLevel={{severity}}
inputParameters:
- name: severity
in: query
operations:
- name: get-problems
method: GET
Verifies trade finance documents by extracting data from uploaded documents in Box, validating against the LC terms, and updating the trade case in ServiceNow.
naftiko: '0.5'
info:
label: Trade Document Verification Orchestrator
description: Verifies trade finance documents by extracting data from uploaded documents in Box, validating against the LC terms, and updating the trade case in ServiceNow.
tags:
- trade-finance
- documents
- box
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-docs
port: 8080
tools:
- name: verify-trade-documents
description: Extract data from trade documents, validate against LC terms, and update the trade case.
inputParameters:
- name: lc_number
in: body
type: string
description: The letter of credit number.
- name: document_folder_id
in: body
type: string
description: The Box folder ID containing the trade documents.
steps:
- name: get-documents
type: call
call: box.get-folder-items
with:
folder_id: '{{document_folder_id}}'
- name: get-lc-terms
type: call
call: trade-api.get-lc
with:
lc_number: '{{lc_number}}'
- name: update-case
type: call
call: servicenow.update-request
with:
lc_number: '{{lc_number}}'
document_count: '{{get-documents.item_count}}'
status: documents_received
consumes:
- 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: trade-api
baseUri: https://api.sc.com/trade-finance/v1
authentication:
type: bearer
token: $secrets.sc_trade_finance_token
resources:
- name: letters-of-credit
path: /letters-of-credit/{{lc_number}}
inputParameters:
- name: lc_number
in: path
operations:
- name: get-lc
method: GET
- type: http
namespace: servicenow
baseUri: https://sc.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: update-request
method: PATCH
Orchestrates client experience optimization pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Client Experience Optimization Pipeline
description: Orchestrates client experience optimization pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- client
- standard-chartered
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: client
port: 8080
tools:
- name: client-experience-optimization-pipeline
description: Orchestrates client experience optimization pipeline across international banking 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/client
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/client
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/client
operations:
- name: execute-3
method: POST
Orchestrates cash management optimization pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Cash Management Optimization Pipeline
description: Orchestrates cash management optimization pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- cash
- standard-chartered
- splunk
- bloomberg
- confluence
capability:
exposes:
- type: mcp
namespace: cash
port: 8080
tools:
- name: cash-management-optimization-pipeline
description: Orchestrates cash management optimization pipeline across international banking 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: splunk.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: bloomberg.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/cash
operations:
- name: execute-1
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/cash
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/cash
operations:
- name: execute-3
method: POST
When a customer complaint is received in Salesforce, creates a ServiceNow case, checks customer segment from the CRM, and notifies the branch manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Customer Complaint Orchestrator
description: When a customer complaint is received in Salesforce, creates a ServiceNow case, checks customer segment from the CRM, and notifies the branch manager via Microsoft Teams.
tags:
- customer-service
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaints
port: 8080
tools:
- name: process-complaint
description: Process a customer complaint from intake through case creation and manager notification.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce case ID.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: get-customer
type: call
call: core-banking.get-customer
with:
customer_id: '{{get-case.customer_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Customer complaint: {{get-case.subject}}'
category: customer_complaint
priority: '{{get-customer.segment_priority}}'
description: 'Complaint from {{get-customer.customer_name}} (Segment: {{get-customer.segment}}). {{get-case.description}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-customer.relationship_manager_email}}'
text: 'Customer complaint from {{get-customer.customer_name}} ({{get-customer.segment}}). Case: {{case_id}}, Incident: {{create-ticket.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://sc.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: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: customers
path: /customers/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Orchestrates structured product lifecycle pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Structured Product Lifecycle Pipeline
description: Orchestrates structured product lifecycle pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- structured
- standard-chartered
- splunk
- bloomberg
- confluence
capability:
exposes:
- type: mcp
namespace: structured
port: 8080
tools:
- name: structured-product-lifecycle-pipeline
description: Orchestrates structured product lifecycle pipeline across international banking 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: splunk.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: bloomberg.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/structured
operations:
- name: execute-1
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/structured
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/structured
operations:
- name: execute-3
method: POST
Retrieves benchmark interest rate data from Bloomberg and builds a yield curve for a specified currency and date.
naftiko: '0.5'
info:
label: Interest Rate Curve Builder
description: Retrieves benchmark interest rate data from Bloomberg and builds a yield curve for a specified currency and date.
tags:
- treasury
- bloomberg-enterprise-data
- interest-rates
capability:
exposes:
- type: mcp
namespace: yield-curves
port: 8080
tools:
- name: build-yield-curve
description: Build a yield curve from Bloomberg interest rate data for a currency and date.
inputParameters:
- name: currency
in: body
type: string
description: The currency code.
- name: curve_date
in: body
type: string
description: The curve date in YYYY-MM-DD format.
steps:
- name: get-rates
type: call
call: bloomberg.get-rates
with:
currency: '{{currency}}'
date: '{{curve_date}}'
- name: build-curve
type: call
call: treasury-api.build-curve
with:
currency: '{{currency}}'
date: '{{curve_date}}'
rates: '{{get-rates.rate_data}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/eap/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: rates
path: /data/rates?currency={{currency}}&date={{date}}
inputParameters:
- name: currency
in: query
- name: date
in: query
operations:
- name: get-rates
method: GET
- type: http
namespace: treasury-api
baseUri: https://api.sc.com/treasury/v1
authentication:
type: bearer
token: $secrets.sc_treasury_token
resources:
- name: curves
path: /yield-curves
operations:
- name: build-curve
method: POST
Orchestrates vendor risk management pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Vendor Risk Management Pipeline
description: Orchestrates vendor risk management pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- vendor
- standard-chartered
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: vendor
port: 8080
tools:
- name: vendor-risk-management-pipeline
description: Orchestrates vendor risk management pipeline across international banking 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://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/vendor
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/vendor
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/vendor
operations:
- name: execute-3
method: POST
Retrieves a travel expense report from SAP Concur by report ID.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Lookup
description: Retrieves a travel expense report from SAP Concur by report ID.
tags:
- finance
- sap-concur
- expenses
capability:
exposes:
- type: mcp
namespace: expenses
port: 8080
tools:
- name: get-expense-report
description: Look up a travel expense report in SAP Concur.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
call: concur.get-report
with:
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: reports
path: /expense/reports/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-report
method: GET
Orchestrates corporate client onboarding pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Corporate Client Onboarding Pipeline
description: Orchestrates corporate client onboarding pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- corporate
- standard-chartered
- standard-chartered
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: corporate
port: 8080
tools:
- name: corporate-client-onboarding-pipeline
description: Orchestrates corporate client onboarding pipeline across international banking 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: standard-chartered.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: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/corporate
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/corporate
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/corporate
operations:
- name: execute-3
method: POST
Checks the runtime status of a MuleSoft integration application deployed on CloudHub.
naftiko: '0.5'
info:
label: MuleSoft Integration Status Check
description: Checks the runtime status of a MuleSoft integration application deployed on CloudHub.
tags:
- integration
- mulesoft
- api-management
capability:
exposes:
- type: mcp
namespace: integration
port: 8080
tools:
- name: get-mulesoft-app-status
description: Check the runtime status of a MuleSoft CloudHub application.
inputParameters:
- name: app_name
in: body
type: string
description: The MuleSoft application name.
call: mulesoft.get-app-status
with:
app: '{{app_name}}'
consumes:
- type: http
namespace: mulesoft
baseUri: https://anypoint.mulesoft.com/cloudhub/api/v2
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: applications
path: /applications/{{app}}
inputParameters:
- name: app
in: path
operations:
- name: get-app-status
method: GET
Initiates a SWIFT cross-border payment by validating the beneficiary, submitting the payment instruction, and returning the payment reference.
naftiko: '0.5'
info:
label: SWIFT Payment Initiation
description: Initiates a SWIFT cross-border payment by validating the beneficiary, submitting the payment instruction, and returning the payment reference.
tags:
- payments
- swift
- cross-border
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: initiate-swift-payment
description: Submit a SWIFT cross-border payment instruction.
inputParameters:
- name: debit_account
in: body
type: string
description: The debit account number.
- name: beneficiary_account
in: body
type: string
description: The beneficiary account number.
- name: beneficiary_bank_bic
in: body
type: string
description: The beneficiary bank SWIFT BIC code.
- name: amount
in: body
type: string
description: The payment amount.
- name: currency
in: body
type: string
description: The currency code.
- name: payment_reference
in: body
type: string
description: The payment reference or description.
steps:
- name: validate-beneficiary
type: call
call: payments-api.validate-beneficiary
with:
account: '{{beneficiary_account}}'
bic: '{{beneficiary_bank_bic}}'
- name: submit-payment
type: call
call: payments-api.create-payment
with:
debit_account: '{{debit_account}}'
credit_account: '{{beneficiary_account}}'
credit_bic: '{{beneficiary_bank_bic}}'
amount: '{{amount}}'
currency: '{{currency}}'
reference: '{{payment_reference}}'
consumes:
- type: http
namespace: payments-api
baseUri: https://api.sc.com/payments/v1
authentication:
type: bearer
token: $secrets.sc_payments_token
resources:
- name: validation
path: /beneficiaries/validate
operations:
- name: validate-beneficiary
method: POST
- name: payments
path: /payments/swift
operations:
- name: create-payment
method: POST
Processes a new letter of credit request by validating the applicant in the core banking system, creating the LC in the trade finance platform, and notifying the trade operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Trade Finance Letter of Credit Orchestrator
description: Processes a new letter of credit request by validating the applicant in the core banking system, creating the LC in the trade finance platform, and notifying the trade operations team via Microsoft Teams.
tags:
- trade-finance
- banking
- microsoft-teams
- letters-of-credit
capability:
exposes:
- type: mcp
namespace: trade-finance
port: 8080
tools:
- name: process-letter-of-credit
description: Process a new letter of credit from applicant validation through LC creation and team notification.
inputParameters:
- name: applicant_id
in: body
type: string
description: The applicant customer ID.
- name: beneficiary_name
in: body
type: string
description: The beneficiary name.
- name: amount
in: body
type: string
description: The LC amount.
- name: currency
in: body
type: string
description: The currency code (e.g., USD, GBP, SGD).
- name: expiry_date
in: body
type: string
description: The LC expiry date in YYYY-MM-DD format.
steps:
- name: validate-customer
type: call
call: core-banking.get-customer
with:
customer_id: '{{applicant_id}}'
- name: create-lc
type: call
call: trade-api.create-letter-of-credit
with:
applicant: '{{validate-customer.customer_name}}'
applicant_id: '{{applicant_id}}'
beneficiary: '{{beneficiary_name}}'
amount: '{{amount}}'
currency: '{{currency}}'
expiry: '{{expiry_date}}'
- name: notify-ops
type: call
call: msteams.send-channel-message
with:
team_id: trade_operations
channel_id: lc_processing
text: 'New LC created: {{create-lc.lc_number}}. Applicant: {{validate-customer.customer_name}}. Amount: {{currency}} {{amount}}. Expiry: {{expiry_date}}.'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: customers
path: /customers/{{customer_id}}
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: trade-api
baseUri: https://api.sc.com/trade-finance/v1
authentication:
type: bearer
token: $secrets.sc_trade_finance_token
resources:
- name: letters-of-credit
path: /letters-of-credit
operations:
- name: create-letter-of-credit
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 Jira issue in a specified project with given summary, description, and type.
naftiko: '0.5'
info:
label: Jira Issue Creator
description: Creates a new Jira issue in a specified project with given summary, description, and type.
tags:
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: project-mgmt
port: 8080
tools:
- name: create-jira-issue
description: Create a new issue in Jira.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
- name: summary
in: body
type: string
description: The issue summary.
- name: description
in: body
type: string
description: The issue description.
- name: issue_type
in: body
type: string
description: The issue type (Bug, Task, Story).
call: jira.create-issue
with:
project: '{{project_key}}'
summary: '{{summary}}'
description: '{{description}}'
issuetype: '{{issue_type}}'
consumes:
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Orchestrates cross border payment pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Cross Border Payment Pipeline
description: Orchestrates cross border payment pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- cross
- standard-chartered
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: cross
port: 8080
tools:
- name: cross-border-payment-pipeline
description: Orchestrates cross border payment pipeline across international banking 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://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/cross
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/cross
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/cross
operations:
- name: execute-3
method: POST
Retrieves digital banking channel analytics data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Digital Banking Channel Analytics
description: Retrieves digital banking channel analytics data from the Standard Chartered international banking systems.
tags:
- digital
- standard-chartered
- analytics
capability:
exposes:
- type: mcp
namespace: digital
port: 8080
tools:
- name: digital-banking-channel-analytics
description: Retrieves digital banking channel analytics data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.digital-banking-channel-analytics
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /digital/banking/channel/analytics/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: digital-banking-channel-analytics
method: GET
Retrieves corporate loan facility lookup data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Corporate Loan Facility Lookup
description: Retrieves corporate loan facility lookup data from the Standard Chartered international banking systems.
tags:
- corporate
- standard-chartered
- lookup
capability:
exposes:
- type: mcp
namespace: corporate
port: 8080
tools:
- name: corporate-loan-facility-lookup
description: Retrieves corporate loan facility lookup data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.corporate-loan-facility-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /corporate/loan/facility/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: corporate-loan-facility-lookup
method: GET
Retrieves the status of a bank guarantee from the trade finance system by guarantee number.
naftiko: '0.5'
info:
label: Trade Finance Guarantee Status
description: Retrieves the status of a bank guarantee from the trade finance system by guarantee number.
tags:
- trade-finance
- guarantees
- banking
capability:
exposes:
- type: mcp
namespace: guarantees
port: 8080
tools:
- name: get-guarantee-status
description: Look up a bank guarantee by number.
inputParameters:
- name: guarantee_number
in: body
type: string
description: The bank guarantee number.
call: trade-api.get-guarantee
with:
number: '{{guarantee_number}}'
consumes:
- type: http
namespace: trade-api
baseUri: https://api.sc.com/trade-finance/v1
authentication:
type: bearer
token: $secrets.sc_trade_finance_token
resources:
- name: guarantees
path: /guarantees/{{number}}
inputParameters:
- name: number
in: path
operations:
- name: get-guarantee
method: GET
Retrieves islamic banking product lookup data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Islamic Banking Product Lookup
description: Retrieves islamic banking product lookup data from the Standard Chartered international banking systems.
tags:
- islamic
- standard-chartered
- lookup
capability:
exposes:
- type: mcp
namespace: islamic
port: 8080
tools:
- name: islamic-banking-product-lookup
description: Retrieves islamic banking product lookup data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.islamic-banking-product-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /islamic/banking/product/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: islamic-banking-product-lookup
method: GET
Retrieves application performance metrics from New Relic for Standard Chartered digital banking services.
naftiko: '0.5'
info:
label: New Relic Application Monitor
description: Retrieves application performance metrics from New Relic for Standard Chartered digital banking services.
tags:
- monitoring
- new-relic
- performance
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-performance
description: Get performance metrics for a banking application from New Relic.
inputParameters:
- name: app_name
in: body
type: string
description: The application name in New Relic.
call: newrelic.get-app-summary
with:
app: '{{app_name}}'
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apiKey
key: $secrets.newrelic_api_key
resources:
- name: applications
path: /applications.json?filter[name]={{app}}
inputParameters:
- name: app
in: query
operations:
- name: get-app-summary
method: GET
Retrieves a compliance policy document from the SharePoint policy library.
naftiko: '0.5'
info:
label: SharePoint Policy Document Retrieval
description: Retrieves a compliance policy document from the SharePoint policy library.
tags:
- compliance
- sharepoint
- documents
capability:
exposes:
- type: mcp
namespace: policy-library
port: 8080
tools:
- name: get-policy-document
description: Retrieve a policy document from SharePoint.
inputParameters:
- name: document_name
in: body
type: string
description: The policy document name.
call: sharepoint.get-document
with:
site_id: compliance_policies
file_path: Policies/{{document_name}}
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site_id}}/drive/root:/{{file_path}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-document
method: GET
Calculates the current liquidity position by pulling account balances across multiple currencies and aggregating positions from the core banking system.
naftiko: '0.5'
info:
label: Liquidity Position Calculator
description: Calculates the current liquidity position by pulling account balances across multiple currencies and aggregating positions from the core banking system.
tags:
- treasury
- liquidity
- banking
capability:
exposes:
- type: mcp
namespace: liquidity
port: 8080
tools:
- name: calculate-liquidity-position
description: Calculate the aggregate liquidity position across currencies.
inputParameters:
- name: entity_code
in: body
type: string
description: The legal entity code.
- name: position_date
in: body
type: string
description: The position date in YYYY-MM-DD format.
steps:
- name: get-positions
type: call
call: core-banking.get-liquidity
with:
entity: '{{entity_code}}'
date: '{{position_date}}'
- name: get-fx-rates
type: call
call: treasury-api.get-closing-rates
with:
date: '{{position_date}}'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: liquidity
path: /liquidity?entity={{entity}}&date={{date}}
inputParameters:
- name: entity
in: query
- name: date
in: query
operations:
- name: get-liquidity
method: GET
- type: http
namespace: treasury-api
baseUri: https://api.sc.com/treasury/v1
authentication:
type: bearer
token: $secrets.sc_treasury_token
resources:
- name: closing-rates
path: /fx/closing-rates?date={{date}}
inputParameters:
- name: date
in: query
operations:
- name: get-closing-rates
method: GET
Orchestrates client tax reporting pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Client Tax Reporting Pipeline
description: Orchestrates client tax reporting pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- client
- standard-chartered
- confluence
- standard-chartered
- salesforce
capability:
exposes:
- type: mcp
namespace: client
port: 8080
tools:
- name: client-tax-reporting-pipeline
description: Orchestrates client tax reporting pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: standard-chartered.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/client
operations:
- name: execute-1
method: POST
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/client
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/client
operations:
- name: execute-3
method: POST
Orchestrates market risk reporting pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Market Risk Reporting Pipeline
description: Orchestrates market risk reporting pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- market
- standard-chartered
- jira
- teams
- splunk
capability:
exposes:
- type: mcp
namespace: market
port: 8080
tools:
- name: market-risk-reporting-pipeline
description: Orchestrates market risk reporting pipeline across international banking 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: splunk.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/market
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/market
operations:
- name: execute-2
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/market
operations:
- name: execute-3
method: POST
Orchestrates cybersecurity threat response pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Cybersecurity Threat Response Pipeline
description: Orchestrates cybersecurity threat response pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- cybersecurity
- standard-chartered
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: cybersecurity
port: 8080
tools:
- name: cybersecurity-threat-response-pipeline
description: Orchestrates cybersecurity threat response pipeline across international banking 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://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/cybersecurity
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/cybersecurity
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/cybersecurity
operations:
- name: execute-3
method: POST
Orchestrates aml transaction surveillance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Aml Transaction Surveillance Pipeline
description: Orchestrates aml transaction surveillance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- aml
- standard-chartered
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: aml
port: 8080
tools:
- name: aml-transaction-surveillance-pipeline
description: Orchestrates aml transaction surveillance pipeline across international banking 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://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/aml
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/aml
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/aml
operations:
- name: execute-3
method: POST
When a fraud detection alert fires, retrieves transaction details, freezes the account in the core banking system, creates a fraud case, and notifies the fraud team via Microsoft Teams.
naftiko: '0.5'
info:
label: Fraud Detection Alert Orchestrator
description: When a fraud detection alert fires, retrieves transaction details, freezes the account in the core banking system, creates a fraud case, and notifies the fraud team via Microsoft Teams.
tags:
- fraud
- risk
- banking
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: handle-fraud-alert
description: Process a fraud alert by freezing the account, creating a case, and alerting the fraud team.
inputParameters:
- name: alert_id
in: body
type: string
description: The fraud detection alert ID.
steps:
- name: get-alert
type: call
call: fraud-api.get-alert
with:
id: '{{alert_id}}'
- name: freeze-account
type: call
call: core-banking.freeze-account
with:
account: '{{get-alert.account_number}}'
reason: 'Fraud alert: {{get-alert.alert_type}}'
- name: create-case
type: call
call: case-mgmt.create-case
with:
alert_id: '{{alert_id}}'
account: '{{get-alert.account_number}}'
type: fraud
description: 'Fraud alert: {{get-alert.alert_type}}. Transaction: {{get-alert.currency}} {{get-alert.amount}}. Account frozen.'
- name: notify-fraud-team
type: call
call: msteams.send-channel-message
with:
team_id: fraud_operations
channel_id: alerts
text: 'FRAUD ALERT {{alert_id}}: {{get-alert.alert_type}} on account {{get-alert.account_number}}. Amount: {{get-alert.currency}} {{get-alert.amount}}. Account frozen. Case: {{create-case.case_number}}.'
consumes:
- type: http
namespace: fraud-api
baseUri: https://api.sc.com/fraud/v1
authentication:
type: bearer
token: $secrets.sc_fraud_token
resources:
- name: alerts
path: /alerts/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: accounts
path: /accounts/{{account}}/freeze
inputParameters:
- name: account
in: path
operations:
- name: freeze-account
method: POST
- type: http
namespace: case-mgmt
baseUri: https://api.sc.com/case-management/v1
authentication:
type: bearer
token: $secrets.sc_case_mgmt_token
resources:
- name: cases
path: /cases
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: send-channel-message
method: POST
Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, and total value.
naftiko: '0.5'
info:
label: SAP S/4HANA Purchase Order Status
description: Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, and total value.
tags:
- procurement
- sap-s4hana
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: Look up a SAP S/4HANA 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://sap-s4.sc.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 supply chain finance program lookup data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Supply Chain Finance Program Lookup
description: Retrieves supply chain finance program lookup data from the Standard Chartered international banking systems.
tags:
- supply
- standard-chartered
- lookup
capability:
exposes:
- type: mcp
namespace: supply
port: 8080
tools:
- name: supply-chain-finance-program-lookup
description: Retrieves supply chain finance program lookup data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.supply-chain-finance-program-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /supply/chain/finance/program/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: supply-chain-finance-program-lookup
method: GET
Orchestrates sustainable finance framework pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Sustainable Finance Framework Pipeline
description: Orchestrates sustainable finance framework pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- sustainable
- standard-chartered
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: sustainable
port: 8080
tools:
- name: sustainable-finance-framework-pipeline
description: Orchestrates sustainable finance framework pipeline across international banking 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/sustainable
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/sustainable
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/sustainable
operations:
- name: execute-3
method: POST
Retrieves wealth management portfolio lookup data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Wealth Management Portfolio Lookup
description: Retrieves wealth management portfolio lookup data from the Standard Chartered international banking systems.
tags:
- wealth
- standard-chartered
- lookup
capability:
exposes:
- type: mcp
namespace: wealth
port: 8080
tools:
- name: wealth-management-portfolio-lookup
description: Retrieves wealth management portfolio lookup data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.wealth-management-portfolio-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /wealth/management/portfolio/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: wealth-management-portfolio-lookup
method: GET
Triggers a risk model execution in Azure Databricks for portfolio risk analysis and stores results in SharePoint.
naftiko: '0.5'
info:
label: Azure Databricks Risk Model Execution
description: Triggers a risk model execution in Azure Databricks for portfolio risk analysis and stores results in SharePoint.
tags:
- risk
- azure-databricks
- analytics
- sharepoint
capability:
exposes:
- type: mcp
namespace: risk-modeling
port: 8080
tools:
- name: run-risk-model
description: Execute a risk model in Azure Databricks and store results.
inputParameters:
- name: model_name
in: body
type: string
description: The risk model name.
- name: portfolio_id
in: body
type: string
description: The portfolio identifier.
- name: run_date
in: body
type: string
description: The run date in YYYY-MM-DD format.
steps:
- name: run-model
type: call
call: databricks.run-job
with:
job_name: '{{model_name}}'
parameters:
portfolio: '{{portfolio_id}}'
date: '{{run_date}}'
- name: store-results
type: call
call: sharepoint.update-file
with:
site_id: risk_models
file_path: Results/{{model_name}}_{{portfolio_id}}_{{run_date}}.json
content: '{{run-model.results}}'
consumes:
- type: http
namespace: databricks
baseUri: https://adb-sc.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: 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: update-file
method: PUT
Retrieves API traffic analytics from the Apigee API gateway for monitoring API usage patterns.
naftiko: '0.5'
info:
label: Apigee API Gateway Analytics
description: Retrieves API traffic analytics from the Apigee API gateway for monitoring API usage patterns.
tags:
- api-management
- apigee
- analytics
capability:
exposes:
- type: mcp
namespace: api-analytics
port: 8080
tools:
- name: get-api-analytics
description: Get API traffic analytics from Apigee for a specific API proxy.
inputParameters:
- name: api_proxy
in: body
type: string
description: The API proxy name.
- name: time_range
in: body
type: string
description: The time range (e.g., last_hour, last_day, last_week).
call: apigee.get-stats
with:
proxy: '{{api_proxy}}'
range: '{{time_range}}'
consumes:
- type: http
namespace: apigee
baseUri: https://apigee.googleapis.com/v1/organizations/sc-org
authentication:
type: bearer
token: $secrets.apigee_token
resources:
- name: stats
path: /environments/prod/stats/apiproxy?select=sum(message_count)&timeRange={{range}}&filter=(apiproxy eq '{{proxy}}')
inputParameters:
- name: proxy
in: query
- name: range
in: query
operations:
- name: get-stats
method: GET
Orchestrates customer due diligence pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Customer Due Diligence Pipeline
description: Orchestrates customer due diligence pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- customer
- standard-chartered
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: customer
port: 8080
tools:
- name: customer-due-diligence-pipeline
description: Orchestrates customer due diligence pipeline across international banking 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://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/customer
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.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
Retrieves fx forward contract status data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Fx Forward Contract Status
description: Retrieves fx forward contract status data from the Standard Chartered international banking systems.
tags:
- fx
- standard-chartered
- status
capability:
exposes:
- type: mcp
namespace: fx
port: 8080
tools:
- name: fx-forward-contract-status
description: Retrieves fx forward contract status data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.fx-forward-contract-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /fx/forward/contract/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: fx-forward-contract-status
method: GET
Orchestrates private banking portfolio pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Private Banking Portfolio Pipeline
description: Orchestrates private banking portfolio pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- private
- standard-chartered
- standard-chartered
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: private
port: 8080
tools:
- name: private-banking-portfolio-pipeline
description: Orchestrates private banking portfolio pipeline across international banking 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: standard-chartered.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: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/private
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/private
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/private
operations:
- name: execute-3
method: POST
Orchestrates sanctions screening enhancement pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Sanctions Screening Enhancement Pipeline
description: Orchestrates sanctions screening enhancement pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- sanctions
- standard-chartered
- teams
- splunk
- bloomberg
capability:
exposes:
- type: mcp
namespace: sanctions
port: 8080
tools:
- name: sanctions-screening-enhancement-pipeline
description: Orchestrates sanctions screening enhancement pipeline across international banking 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: splunk.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: bloomberg.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/sanctions
operations:
- name: execute-1
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/sanctions
operations:
- name: execute-2
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/sanctions
operations:
- name: execute-3
method: POST
Orchestrates api marketplace governance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Api Marketplace Governance Pipeline
description: Orchestrates api marketplace governance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- api
- standard-chartered
- standard-chartered
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: api
port: 8080
tools:
- name: api-marketplace-governance-pipeline
description: Orchestrates api marketplace governance pipeline across international banking 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: standard-chartered.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: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/api
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/api
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/api
operations:
- name: execute-3
method: POST
Orchestrates fx trading risk monitoring pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Fx Trading Risk Monitoring Pipeline
description: Orchestrates fx trading risk monitoring pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- fx
- standard-chartered
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: fx
port: 8080
tools:
- name: fx-trading-risk-monitoring-pipeline
description: Orchestrates fx trading risk monitoring pipeline across international banking 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/fx
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/fx
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/fx
operations:
- name: execute-3
method: POST
Orchestrates corporate card reconciliation pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Corporate Card Reconciliation Pipeline
description: Orchestrates corporate card reconciliation pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- corporate
- standard-chartered
- jira
- teams
- splunk
capability:
exposes:
- type: mcp
namespace: corporate
port: 8080
tools:
- name: corporate-card-reconciliation-pipeline
description: Orchestrates corporate card reconciliation pipeline across international banking 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: splunk.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/corporate
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/corporate
operations:
- name: execute-2
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/corporate
operations:
- name: execute-3
method: POST
When an AML alert is triggered, retrieves the transaction details, pulls the customer KYC profile, creates a case in the case management system, and notifies the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: AML Transaction Monitoring Alert Handler
description: When an AML alert is triggered, retrieves the transaction details, pulls the customer KYC profile, creates a case in the case management system, and notifies the compliance team via Microsoft Teams.
tags:
- compliance
- aml
- risk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-monitoring
port: 8080
tools:
- name: handle-aml-alert
description: Process an AML alert by gathering transaction and customer data, creating a case, and alerting compliance.
inputParameters:
- name: alert_id
in: body
type: string
description: The AML monitoring alert ID.
steps:
- name: get-alert
type: call
call: aml-api.get-alert
with:
id: '{{alert_id}}'
- name: get-kyc
type: call
call: kyc-api.get-profile
with:
id: '{{get-alert.customer_id}}'
- name: create-case
type: call
call: case-mgmt.create-case
with:
alert_id: '{{alert_id}}'
customer_id: '{{get-alert.customer_id}}'
customer_risk: '{{get-kyc.risk_rating}}'
transaction_amount: '{{get-alert.amount}}'
description: 'AML alert for {{get-kyc.customer_name}}: {{get-alert.alert_type}}. Transaction: {{get-alert.currency}} {{get-alert.amount}}.'
- name: notify-compliance
type: call
call: msteams.send-channel-message
with:
team_id: compliance
channel_id: aml_alerts
text: 'AML Alert {{alert_id}}: {{get-alert.alert_type}} for {{get-kyc.customer_name}} (Risk: {{get-kyc.risk_rating}}). Case: {{create-case.case_number}}.'
consumes:
- type: http
namespace: aml-api
baseUri: https://api.sc.com/aml/v1
authentication:
type: bearer
token: $secrets.sc_aml_token
resources:
- name: alerts
path: /alerts/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: kyc-api
baseUri: https://api.sc.com/kyc/v1
authentication:
type: bearer
token: $secrets.sc_kyc_token
resources:
- name: profiles
path: /customers/{{id}}/profile
inputParameters:
- name: id
in: path
operations:
- name: get-profile
method: GET
- type: http
namespace: case-mgmt
baseUri: https://api.sc.com/case-management/v1
authentication:
type: bearer
token: $secrets.sc_case_mgmt_token
resources:
- name: cases
path: /cases
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: send-channel-message
method: POST
Orchestrates islamic banking compliance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Islamic Banking Compliance Pipeline
description: Orchestrates islamic banking compliance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- islamic
- standard-chartered
- standard-chartered
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: islamic
port: 8080
tools:
- name: islamic-banking-compliance-pipeline
description: Orchestrates islamic banking compliance pipeline across international banking 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: standard-chartered.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: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/islamic
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/islamic
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/islamic
operations:
- name: execute-3
method: POST
Publishes corporate updates and thought leadership content on the Standard Chartered LinkedIn company page.
naftiko: '0.5'
info:
label: LinkedIn Corporate Page Publisher
description: Publishes corporate updates and thought leadership content on the Standard Chartered LinkedIn company page.
tags:
- marketing
- linkedin
- social-media
capability:
exposes:
- type: mcp
namespace: social-publishing
port: 8080
tools:
- name: publish-linkedin-update
description: Post a corporate update on the Standard Chartered LinkedIn page.
inputParameters:
- name: post_text
in: body
type: string
description: The post text.
- name: link_url
in: body
type: string
description: Optional URL to include.
call: linkedin.create-share
with:
text: '{{post_text}}'
url: '{{link_url}}'
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
Tracks the status of a payment by payment reference, returning current state, timestamps, and settlement details.
naftiko: '0.5'
info:
label: Payment Status Tracker
description: Tracks the status of a payment by payment reference, returning current state, timestamps, and settlement details.
tags:
- payments
- tracking
- banking
capability:
exposes:
- type: mcp
namespace: payment-tracking
port: 8080
tools:
- name: track-payment
description: Track the status of a payment by reference number.
inputParameters:
- name: payment_reference
in: body
type: string
description: The payment reference number.
call: payments-api.get-status
with:
reference: '{{payment_reference}}'
consumes:
- type: http
namespace: payments-api
baseUri: https://api.sc.com/payments/v1
authentication:
type: bearer
token: $secrets.sc_payments_token
resources:
- name: status
path: /payments/{{reference}}/status
inputParameters:
- name: reference
in: path
operations:
- name: get-status
method: GET
Orchestrates wealth management advisory pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Wealth Management Advisory Pipeline
description: Orchestrates wealth management advisory pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- wealth
- standard-chartered
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: wealth
port: 8080
tools:
- name: wealth-management-advisory-pipeline
description: Orchestrates wealth management advisory pipeline across international banking 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://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/wealth
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/wealth
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/wealth
operations:
- name: execute-3
method: POST
Retrieves nostro account balances and compares them with correspondent bank statements for daily reconciliation.
naftiko: '0.5'
info:
label: Nostro Account Reconciliation
description: Retrieves nostro account balances and compares them with correspondent bank statements for daily reconciliation.
tags:
- treasury
- reconciliation
- correspondent-banking
capability:
exposes:
- type: mcp
namespace: nostro-recon
port: 8080
tools:
- name: reconcile-nostro
description: Perform nostro account reconciliation for a specified currency and date.
inputParameters:
- name: currency
in: body
type: string
description: The nostro account currency.
- name: recon_date
in: body
type: string
description: The reconciliation date in YYYY-MM-DD format.
steps:
- name: get-internal-balance
type: call
call: core-banking.get-nostro-balance
with:
currency: '{{currency}}'
date: '{{recon_date}}'
- name: get-external-statement
type: call
call: payments-api.get-correspondent-statement
with:
currency: '{{currency}}'
date: '{{recon_date}}'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: nostro
path: /nostro/{{currency}}/balance?date={{date}}
inputParameters:
- name: currency
in: path
- name: date
in: query
operations:
- name: get-nostro-balance
method: GET
- type: http
namespace: payments-api
baseUri: https://api.sc.com/payments/v1
authentication:
type: bearer
token: $secrets.sc_payments_token
resources:
- name: correspondent-statements
path: /correspondents/statements?currency={{currency}}&date={{date}}
inputParameters:
- name: currency
in: query
- name: date
in: query
operations:
- name: get-correspondent-statement
method: GET
Orchestrates digital channel enhancement pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Digital Channel Enhancement Pipeline
description: Orchestrates digital channel enhancement pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- digital
- standard-chartered
- splunk
- bloomberg
- confluence
capability:
exposes:
- type: mcp
namespace: digital
port: 8080
tools:
- name: digital-channel-enhancement-pipeline
description: Orchestrates digital channel enhancement pipeline across international banking 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: splunk.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: bloomberg.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/digital
operations:
- name: execute-1
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/digital
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/digital
operations:
- name: execute-3
method: POST
Orchestrates loan covenant compliance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Loan Covenant Compliance Pipeline
description: Orchestrates loan covenant compliance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- loan
- standard-chartered
- teams
- splunk
- bloomberg
capability:
exposes:
- type: mcp
namespace: loan
port: 8080
tools:
- name: loan-covenant-compliance-pipeline
description: Orchestrates loan covenant compliance pipeline across international banking 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: splunk.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: bloomberg.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/loan
operations:
- name: execute-1
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/loan
operations:
- name: execute-2
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/loan
operations:
- name: execute-3
method: POST
Searches the correspondent banking directory for a bank by SWIFT BIC code or name.
naftiko: '0.5'
info:
label: Correspondent Bank Directory Lookup
description: Searches the correspondent banking directory for a bank by SWIFT BIC code or name.
tags:
- payments
- correspondent-banking
- directory
capability:
exposes:
- type: mcp
namespace: correspondent-banks
port: 8080
tools:
- name: lookup-correspondent-bank
description: Search the correspondent banking directory by BIC or bank name.
inputParameters:
- name: search_term
in: body
type: string
description: The SWIFT BIC or bank name to search.
call: payments-api.search-correspondents
with:
query: '{{search_term}}'
consumes:
- type: http
namespace: payments-api
baseUri: https://api.sc.com/payments/v1
authentication:
type: bearer
token: $secrets.sc_payments_token
resources:
- name: correspondents
path: /correspondents/search?q={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-correspondents
method: GET
Sends a WhatsApp notification to a client about their banking transaction or account update.
naftiko: '0.5'
info:
label: WhatsApp Client Notification Sender
description: Sends a WhatsApp notification to a client about their banking transaction or account update.
tags:
- notifications
- whatsapp
- customer-service
capability:
exposes:
- type: mcp
namespace: client-notifications
port: 8080
tools:
- name: send-whatsapp-notification
description: Send a WhatsApp notification to a client.
inputParameters:
- name: phone_number
in: body
type: string
description: The client phone number in international format.
- name: template_name
in: body
type: string
description: The WhatsApp message template name.
- name: template_params
in: body
type: object
description: Template parameters.
call: whatsapp.send-message
with:
to: '{{phone_number}}'
template: '{{template_name}}'
parameters: '{{template_params}}'
consumes:
- type: http
namespace: whatsapp
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.whatsapp_business_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Retrieves service health and alert status from Datadog for Standard Chartered banking platform services.
naftiko: '0.5'
info:
label: Datadog Service Health Monitor
description: Retrieves service health and alert status from Datadog for Standard Chartered banking platform services.
tags:
- monitoring
- datadog
- infrastructure
capability:
exposes:
- type: mcp
namespace: service-health
port: 8080
tools:
- name: get-service-health
description: Get health status and active alerts for a banking platform service in Datadog.
inputParameters:
- name: service_name
in: body
type: string
description: The service name.
call: datadog.get-service-status
with:
service: '{{service_name}}'
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: services
path: /service_summary?service={{service}}
inputParameters:
- name: service
in: query
operations:
- name: get-service-status
method: GET
Retrieves current foreign exchange rates for a currency pair from the treasury system.
naftiko: '0.5'
info:
label: FX Rate Lookup
description: Retrieves current foreign exchange rates for a currency pair from the treasury system.
tags:
- treasury
- forex
- rates
capability:
exposes:
- type: mcp
namespace: fx-rates
port: 8080
tools:
- name: get-fx-rate
description: Get the current foreign exchange rate for a currency pair.
inputParameters:
- name: base_currency
in: body
type: string
description: The base currency code (e.g., USD).
- name: quote_currency
in: body
type: string
description: The quote currency code (e.g., SGD).
call: treasury-api.get-rate
with:
base: '{{base_currency}}'
quote: '{{quote_currency}}'
consumes:
- type: http
namespace: treasury-api
baseUri: https://api.sc.com/treasury/v1
authentication:
type: bearer
token: $secrets.sc_treasury_token
resources:
- name: rates
path: /fx/rates?base={{base}}"e={{quote}}
inputParameters:
- name: base
in: query
- name: quote
in: query
operations:
- name: get-rate
method: GET
Retrieves cash management sweep status data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Cash Management Sweep Status
description: Retrieves cash management sweep status data from the Standard Chartered international banking systems.
tags:
- cash
- standard-chartered
- status
capability:
exposes:
- type: mcp
namespace: cash
port: 8080
tools:
- name: cash-management-sweep-status
description: Retrieves cash management sweep status data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.cash-management-sweep-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /cash/management/sweep/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: cash-management-sweep-status
method: GET
Retrieves private banking client summary data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Private Banking Client Summary
description: Retrieves private banking client summary data from the Standard Chartered international banking systems.
tags:
- private
- standard-chartered
- summary
capability:
exposes:
- type: mcp
namespace: private
port: 8080
tools:
- name: private-banking-client-summary
description: Retrieves private banking client summary data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.private-banking-client-summary
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /private/banking/client/summary/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: private-banking-client-summary
method: GET
Generates the daily profit and loss report by pulling positions from Murex, FX rates from treasury, and posting the consolidated report to the finance Microsoft Teams channel.
naftiko: '0.5'
info:
label: Daily P&L Report Orchestrator
description: Generates the daily profit and loss report by pulling positions from Murex, FX rates from treasury, and posting the consolidated report to the finance Microsoft Teams channel.
tags:
- finance
- trading
- murex
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: daily-pnl
port: 8080
tools:
- name: generate-daily-pnl
description: Generate and distribute the daily P&L report from Murex positions and treasury rates.
inputParameters:
- name: report_date
in: body
type: string
description: The report date in YYYY-MM-DD format.
- name: desk
in: body
type: string
description: The trading desk identifier.
steps:
- name: get-positions
type: call
call: murex.get-positions
with:
desk: '{{desk}}'
date: '{{report_date}}'
- name: get-rates
type: call
call: treasury-api.get-closing-rates
with:
date: '{{report_date}}'
- name: post-report
type: call
call: msteams.send-channel-message
with:
team_id: finance
channel_id: daily_pnl
text: 'P&L for {{desk}} on {{report_date}}: Total PnL: {{get-positions.total_pnl}}. Positions: {{get-positions.position_count}}.'
consumes:
- type: http
namespace: murex
baseUri: https://murex.sc.com/api/v1
authentication:
type: bearer
token: $secrets.sc_murex_token
resources:
- name: positions
path: /positions?desk={{desk}}&date={{date}}
inputParameters:
- name: desk
in: query
- name: date
in: query
operations:
- name: get-positions
method: GET
- type: http
namespace: treasury-api
baseUri: https://api.sc.com/treasury/v1
authentication:
type: bearer
token: $secrets.sc_treasury_token
resources:
- name: closing-rates
path: /fx/closing-rates?date={{date}}
inputParameters:
- name: date
in: query
operations:
- name: get-closing-rates
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-channel-message
method: POST
Retrieves correspondent banking fee lookup data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Correspondent Banking Fee Lookup
description: Retrieves correspondent banking fee lookup data from the Standard Chartered international banking systems.
tags:
- correspondent
- standard-chartered
- lookup
capability:
exposes:
- type: mcp
namespace: correspondent
port: 8080
tools:
- name: correspondent-banking-fee-lookup
description: Retrieves correspondent banking fee lookup data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.correspondent-banking-fee-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /correspondent/banking/fee/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: correspondent-banking-fee-lookup
method: GET
Retrieves a customer's Know Your Customer profile from the KYC system, returning identity verification status, risk rating, and document details.
naftiko: '0.5'
info:
label: Customer KYC Profile Lookup
description: Retrieves a customer's Know Your Customer profile from the KYC system, returning identity verification status, risk rating, and document details.
tags:
- compliance
- kyc
- customer
capability:
exposes:
- type: mcp
namespace: kyc
port: 8080
tools:
- name: get-kyc-profile
description: Look up a customer's KYC profile by customer ID.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer identifier.
call: kyc-api.get-profile
with:
id: '{{customer_id}}'
consumes:
- type: http
namespace: kyc-api
baseUri: https://api.sc.com/kyc/v1
authentication:
type: bearer
token: $secrets.sc_kyc_token
resources:
- name: profiles
path: /customers/{{id}}/profile
inputParameters:
- name: id
in: path
operations:
- name: get-profile
method: GET
Processes a real-time domestic payment through the instant payments rail, validates the beneficiary, and returns the payment confirmation.
naftiko: '0.5'
info:
label: Real-Time Payment Processing
description: Processes a real-time domestic payment through the instant payments rail, validates the beneficiary, and returns the payment confirmation.
tags:
- payments
- real-time
- banking
capability:
exposes:
- type: mcp
namespace: instant-payments
port: 8080
tools:
- name: process-instant-payment
description: Submit an instant payment through the real-time payments rail.
inputParameters:
- name: debit_account
in: body
type: string
description: The debit account number.
- name: credit_account
in: body
type: string
description: The credit account number.
- name: amount
in: body
type: string
description: The payment amount.
- name: currency
in: body
type: string
description: The currency code.
- name: reference
in: body
type: string
description: The payment reference.
steps:
- name: validate
type: call
call: payments-api.validate-instant
with:
debit: '{{debit_account}}'
credit: '{{credit_account}}'
amount: '{{amount}}'
- name: submit
type: call
call: payments-api.submit-instant
with:
debit: '{{debit_account}}'
credit: '{{credit_account}}'
amount: '{{amount}}'
currency: '{{currency}}'
reference: '{{reference}}'
consumes:
- type: http
namespace: payments-api
baseUri: https://api.sc.com/payments/v1
authentication:
type: bearer
token: $secrets.sc_payments_token
resources:
- name: validation
path: /instant/validate
operations:
- name: validate-instant
method: POST
- name: instant-payments
path: /instant/submit
operations:
- name: submit-instant
method: POST
Queries Tanium for the security compliance status of endpoint devices, returning patch level and vulnerability counts.
naftiko: '0.5'
info:
label: Tanium Endpoint Security Status
description: Queries Tanium for the security compliance status of endpoint devices, returning patch level and vulnerability counts.
tags:
- security
- tanium
- endpoints
capability:
exposes:
- type: mcp
namespace: endpoint-security
port: 8080
tools:
- name: get-endpoint-status
description: Get the security compliance status of endpoints from Tanium.
inputParameters:
- name: computer_group
in: body
type: string
description: The Tanium computer group name.
call: tanium.get-group-status
with:
group: '{{computer_group}}'
consumes:
- type: http
namespace: tanium
baseUri: https://tanium.sc.com/api/v2
authentication:
type: bearer
token: $secrets.tanium_token
resources:
- name: groups
path: /computer_groups/{{group}}/status
inputParameters:
- name: group
in: path
operations:
- name: get-group-status
method: GET
Orchestrates trade finance digitization pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Trade Finance Digitization Pipeline
description: Orchestrates trade finance digitization pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- trade
- standard-chartered
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-finance-digitization-pipeline
description: Orchestrates trade finance digitization pipeline across international banking 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://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/trade
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://sc.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/trade
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/trade
operations:
- name: execute-3
method: POST
Retrieves the current balance and recent transactions for a customer account from the core banking system.
naftiko: '0.5'
info:
label: Account Balance Inquiry
description: Retrieves the current balance and recent transactions for a customer account from the core banking system.
tags:
- banking
- accounts
- core-banking
capability:
exposes:
- type: mcp
namespace: accounts
port: 8080
tools:
- name: get-account-balance
description: Look up the current balance and recent transactions for a customer account.
inputParameters:
- name: account_number
in: body
type: string
description: The customer account number.
call: core-banking.get-balance
with:
account: '{{account_number}}'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: balances
path: /accounts/{{account}}/balance
inputParameters:
- name: account
in: path
operations:
- name: get-balance
method: GET
Queries Microsoft Sentinel for recent security incidents and threat detections.
naftiko: '0.5'
info:
label: Microsoft Sentinel Threat Detection
description: Queries Microsoft Sentinel for recent security incidents and threat detections.
tags:
- security
- microsoft-sentinel
- threat-detection
capability:
exposes:
- type: mcp
namespace: threat-detection
port: 8080
tools:
- name: get-security-incidents
description: Get recent security incidents from Microsoft Sentinel.
inputParameters:
- name: severity
in: body
type: string
description: Minimum severity filter (High, Medium, Low, Informational).
- name: time_range
in: body
type: string
description: Time range in hours (e.g., 24, 48, 168).
call: sentinel.get-incidents
with:
severity: '{{severity}}'
hours: '{{time_range}}'
consumes:
- type: http
namespace: sentinel
baseUri: https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/$secrets.azure_rg/providers/Microsoft.SecurityInsights
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: incidents
path: /incidents?api-version=2023-11-01&$filter=properties/severity eq '{{severity}}'
inputParameters:
- name: severity
in: query
operations:
- name: get-incidents
method: GET
Orchestrates operational resilience testing pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Operational Resilience Testing Pipeline
description: Orchestrates operational resilience testing pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- operational
- standard-chartered
- confluence
- standard-chartered
- salesforce
capability:
exposes:
- type: mcp
namespace: operational
port: 8080
tools:
- name: operational-resilience-testing-pipeline
description: Orchestrates operational resilience testing pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: standard-chartered.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/operational
operations:
- name: execute-1
method: POST
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/operational
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/operational
operations:
- name: execute-3
method: POST
Processes a corporate loan application by validating credit risk, performing sanctions screening, creating the facility in the core banking system, and logging the application in Salesforce.
naftiko: '0.5'
info:
label: Corporate Loan Origination Orchestrator
description: Processes a corporate loan application by validating credit risk, performing sanctions screening, creating the facility in the core banking system, and logging the application in Salesforce.
tags:
- banking
- lending
- risk
- salesforce
- compliance
capability:
exposes:
- type: mcp
namespace: loan-origination
port: 8080
tools:
- name: process-loan-application
description: Process a corporate loan application through validation, screening, and facility creation.
inputParameters:
- name: customer_id
in: body
type: string
description: The corporate customer ID.
- name: facility_amount
in: body
type: string
description: The requested facility amount.
- name: currency
in: body
type: string
description: The currency code.
- name: tenor_months
in: body
type: integer
description: The facility tenor in months.
steps:
- name: get-credit-risk
type: call
call: risk-api.get-credit-score
with:
id: '{{customer_id}}'
- name: sanctions-check
type: call
call: sanctions-api.screen
with:
name: '{{get-credit-risk.customer_name}}'
type: organization
- name: create-facility
type: call
call: core-banking.create-facility
with:
customer_id: '{{customer_id}}'
amount: '{{facility_amount}}'
currency: '{{currency}}'
tenor: '{{tenor_months}}'
risk_rating: '{{get-credit-risk.rating}}'
- name: log-application
type: call
call: salesforce.create-opportunity
with:
name: 'Loan: {{get-credit-risk.customer_name}} - {{currency}} {{facility_amount}}'
amount: '{{facility_amount}}'
stage: Application
facility_id: '{{create-facility.facility_id}}'
consumes:
- type: http
namespace: risk-api
baseUri: https://api.sc.com/risk/v1
authentication:
type: bearer
token: $secrets.sc_risk_token
resources:
- name: credit-scores
path: /customers/{{id}}/credit-score
inputParameters:
- name: id
in: path
operations:
- name: get-credit-score
method: GET
- type: http
namespace: sanctions-api
baseUri: https://api.sc.com/compliance/v1
authentication:
type: bearer
token: $secrets.sc_compliance_token
resources:
- name: screening
path: /sanctions/screen
operations:
- name: screen
method: POST
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: facilities
path: /facilities
operations:
- name: create-facility
method: POST
- type: http
namespace: salesforce
baseUri: https://sc.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 trade receivable discounting status data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Trade Receivable Discounting Status
description: Retrieves trade receivable discounting status data from the Standard Chartered international banking systems.
tags:
- trade
- standard-chartered
- status
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-receivable-discounting-status
description: Retrieves trade receivable discounting status data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.trade-receivable-discounting-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /trade/receivable/discounting/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: trade-receivable-discounting-status
method: GET
Retrieves treasury cash pool balance data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Treasury Cash Pool Balance
description: Retrieves treasury cash pool balance data from the Standard Chartered international banking systems.
tags:
- treasury
- standard-chartered
- balance
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: treasury-cash-pool-balance
description: Retrieves treasury cash pool balance data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.treasury-cash-pool-balance
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /treasury/cash/pool/balance/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: treasury-cash-pool-balance
method: GET
Orchestrates correspondent banking review pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Correspondent Banking Review Pipeline
description: Orchestrates correspondent banking review pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- correspondent
- standard-chartered
- teams
- splunk
- bloomberg
capability:
exposes:
- type: mcp
namespace: correspondent
port: 8080
tools:
- name: correspondent-banking-review-pipeline
description: Orchestrates correspondent banking review pipeline across international banking 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: splunk.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: bloomberg.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/correspondent
operations:
- name: execute-1
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/correspondent
operations:
- name: execute-2
method: POST
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/correspondent
operations:
- name: execute-3
method: POST
Orchestrates corporate lending origination pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Corporate Lending Origination Pipeline
description: Orchestrates corporate lending origination pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- corporate
- standard-chartered
- jira
- teams
- splunk
capability:
exposes:
- type: mcp
namespace: corporate
port: 8080
tools:
- name: corporate-lending-origination-pipeline
description: Orchestrates corporate lending origination pipeline across international banking 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: splunk.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/corporate
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/corporate
operations:
- name: execute-2
method: POST
- type: http
namespace: splunk
baseUri: https://splunk.sc.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: splunk-resource
path: /api/corporate
operations:
- name: execute-3
method: POST
Orchestrates digital banking migration pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Digital Banking Migration Pipeline
description: Orchestrates digital banking migration pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- digital
- standard-chartered
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: digital
port: 8080
tools:
- name: digital-banking-migration-pipeline
description: Orchestrates digital banking migration pipeline across international banking 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/digital
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/digital
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/digital
operations:
- name: execute-3
method: POST
Retrieves corporate card program summary data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Corporate Card Program Summary
description: Retrieves corporate card program summary data from the Standard Chartered international banking systems.
tags:
- corporate
- standard-chartered
- summary
capability:
exposes:
- type: mcp
namespace: corporate
port: 8080
tools:
- name: corporate-card-program-summary
description: Retrieves corporate card program summary data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.corporate-card-program-summary
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /corporate/card/program/summary/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: corporate-card-program-summary
method: GET
Orchestrates supply chain finance onboarding pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Supply Chain Finance Onboarding Pipeline
description: Orchestrates supply chain finance onboarding pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- supply
- standard-chartered
- bloomberg
- confluence
- standard-chartered
capability:
exposes:
- type: mcp
namespace: supply
port: 8080
tools:
- name: supply-chain-finance-onboarding-pipeline
description: Orchestrates supply chain finance onboarding pipeline across international banking 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: bloomberg.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: standard-chartered.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/supply
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/supply
operations:
- name: execute-2
method: POST
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/supply
operations:
- name: execute-3
method: POST
Orchestrates trade settlement exception pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Trade Settlement Exception Pipeline
description: Orchestrates trade settlement exception pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- trade
- standard-chartered
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-settlement-exception-pipeline
description: Orchestrates trade settlement exception pipeline across international banking 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://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/trade
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/trade
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/trade
operations:
- name: execute-3
method: POST
Retrieves trade finance shipment status data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Trade Finance Shipment Status
description: Retrieves trade finance shipment status data from the Standard Chartered international banking systems.
tags:
- trade
- standard-chartered
- status
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-finance-shipment-status
description: Retrieves trade finance shipment status data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.trade-finance-shipment-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /trade/finance/shipment/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: trade-finance-shipment-status
method: GET
Orchestrates credit portfolio monitoring pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Credit Portfolio Monitoring Pipeline
description: Orchestrates credit portfolio monitoring pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- credit
- standard-chartered
- bloomberg
- confluence
- standard-chartered
capability:
exposes:
- type: mcp
namespace: credit
port: 8080
tools:
- name: credit-portfolio-monitoring-pipeline
description: Orchestrates credit portfolio monitoring pipeline across international banking 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: bloomberg.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: standard-chartered.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: bloomberg
baseUri: https://api.bloomberg.com/v1
authentication:
type: bearer
token: $secrets.bloomberg_token
resources:
- name: bloomberg-resource
path: /api/credit
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://sc.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/credit
operations:
- name: execute-2
method: POST
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: standard-chartered-resource
path: /api/credit
operations:
- name: execute-3
method: POST
Orchestrates data quality governance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Data Quality Governance Pipeline
description: Orchestrates data quality governance pipeline across international banking systems, coordinating multiple services and notifying stakeholders.
tags:
- data
- standard-chartered
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: data-quality-governance-pipeline
description: Orchestrates data quality governance pipeline across international banking 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://sc.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/data
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/data
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://sc.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/data
operations:
- name: execute-3
method: POST
Generates a customer account statement for a specified period from the core banking system and emails it via MailChimp.
naftiko: '0.5'
info:
label: Account Statement Generator
description: Generates a customer account statement for a specified period from the core banking system and emails it via MailChimp.
tags:
- banking
- statements
- mailchimp
capability:
exposes:
- type: mcp
namespace: statements
port: 8080
tools:
- name: generate-account-statement
description: Generate and email a customer account statement.
inputParameters:
- name: account_number
in: body
type: string
description: The customer account number.
- name: start_date
in: body
type: string
description: The statement start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: The statement end date in YYYY-MM-DD format.
steps:
- name: get-statement
type: call
call: core-banking.get-statement
with:
account: '{{account_number}}'
from: '{{start_date}}'
to: '{{end_date}}'
- name: email-statement
type: call
call: mailchimp.send-transactional
with:
template_name: account_statement
to_email: '{{get-statement.customer_email}}'
merge_vars:
customer_name: '{{get-statement.customer_name}}'
period: '{{start_date}} to {{end_date}}'
opening_balance: '{{get-statement.opening_balance}}'
closing_balance: '{{get-statement.closing_balance}}'
consumes:
- type: http
namespace: core-banking
baseUri: https://api.sc.com/core-banking/v1
authentication:
type: bearer
token: $secrets.sc_core_banking_token
resources:
- name: statements
path: /accounts/{{account}}/statement?from={{from}}&to={{to}}
inputParameters:
- name: account
in: path
- name: from
in: query
- name: to
in: query
operations:
- name: get-statement
method: GET
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
key: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Retrieves loan syndication participant lookup data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Loan Syndication Participant Lookup
description: Retrieves loan syndication participant lookup data from the Standard Chartered international banking systems.
tags:
- loan
- standard-chartered
- lookup
capability:
exposes:
- type: mcp
namespace: loan
port: 8080
tools:
- name: loan-syndication-participant-lookup
description: Retrieves loan syndication participant lookup data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.loan-syndication-participant-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /loan/syndication/participant/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: loan-syndication-participant-lookup
method: GET
Retrieves structured product valuation data from the Standard Chartered international banking systems.
naftiko: '0.5'
info:
label: Structured Product Valuation
description: Retrieves structured product valuation data from the Standard Chartered international banking systems.
tags:
- structured
- standard-chartered
- valuation
capability:
exposes:
- type: mcp
namespace: structured
port: 8080
tools:
- name: structured-product-valuation
description: Retrieves structured product valuation data from the Standard Chartered international banking systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: standard-chartered.structured-product-valuation
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: standard-chartered
baseUri: https://api.sc.com/v2
authentication:
type: bearer
token: $secrets.sc_api_token
resources:
- name: resource
path: /structured/product/valuation/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: structured-product-valuation
method: GET
When webhook deliveries fail repeatedly, creates a Jira incident ticket, queries Snowflake for failure patterns, and alerts the integrations team via Slack.
naftiko: '0.5'
info:
label: Stripe Webhook Failure Handler
description: When webhook deliveries fail repeatedly, creates a Jira incident ticket, queries Snowflake for failure patterns, and alerts the integrations team via Slack.
tags:
- integrations
- stripe
- jira
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: webhook-ops
port: 8080
tools:
- name: handle-webhook-failures
description: Given a webhook endpoint and failure count, investigate, create ticket, and alert.
inputParameters:
- name: endpoint_url
in: body
type: string
description: The webhook endpoint URL.
- name: failure_count
in: body
type: number
description: Number of consecutive failures.
- name: merchant_id
in: body
type: string
description: The merchant account ID.
steps:
- name: query-failure-pattern
type: call
call: snowflake.execute-statement
with:
statement: SELECT event_type, status_code, COUNT(*) FROM webhooks.delivery_logs WHERE merchant_id='{{merchant_id}}' AND status_code>=400 AND created_at>=DATEADD(hour, -24, CURRENT_TIMESTAMP()) GROUP BY event_type, status_code
- name: create-incident
type: call
call: jira.create-issue
with:
project_key: INT
issuetype: Bug
summary: 'Webhook failures: {{merchant_id}} — {{failure_count}} consecutive failures'
description: 'Endpoint: {{endpoint_url}}
Failure pattern: {{query-failure-pattern.data}}'
- name: alert-integrations
type: call
call: slack.post-message
with:
channel: integrations-alerts
text: 'Webhook failures: {{merchant_id}} endpoint {{endpoint_url}} — {{failure_count}} failures. Pattern: {{query-failure-pattern.data}}. Ticket: {{create-incident.key}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Tracks merchants migrating to new payment methods, queries Snowflake for adoption metrics, and posts progress to the payments product Slack channel.
naftiko: '0.5'
info:
label: Stripe Payment Method Migration Tracker
description: Tracks merchants migrating to new payment methods, queries Snowflake for adoption metrics, and posts progress to the payments product Slack channel.
tags:
- payments
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: pm-migration
port: 8080
tools:
- name: track-pm-migration
description: Given a payment method type, query adoption metrics and share progress.
inputParameters:
- name: payment_method
in: body
type: string
description: Payment method type (e.g., link, apple_pay, google_pay).
steps:
- name: query-adoption
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(DISTINCT merchant_id) as merchants, SUM(volume) as total_volume FROM payments.pm_adoption WHERE payment_method='{{payment_method}}' AND month=DATE_TRUNC('month', CURRENT_DATE())
- name: post-progress
type: call
call: slack.post-message
with:
channel: payments-product
text: '{{payment_method}} adoption: {{query-adoption.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Lists Stripe products and prices, then upserts matching product records in Salesforce for CRM-level revenue reporting and quoting accuracy.
naftiko: '0.5'
info:
label: Stripe Product Catalog Sync to Salesforce
description: Lists Stripe products and prices, then upserts matching product records in Salesforce for CRM-level revenue reporting and quoting accuracy.
tags:
- finance
- stripe
- salesforce
- product-catalog
- sync
capability:
exposes:
- type: mcp
namespace: catalog-ops
port: 8080
tools:
- name: sync-products-to-salesforce
description: Retrieve the active Stripe product catalog and upsert each product into Salesforce as a Product2 record with the Stripe price. Use weekly or post-product-launch to keep CRM and billing catalogs in sync.
inputParameters:
- name: active_only
in: body
type: boolean
description: If true, only sync active Stripe products.
steps:
- name: list-stripe-products
type: call
call: stripe-products.list-products
with:
active: '{{active_only}}'
limit: 100
- name: upsert-sf-products
type: call
call: salesforce-products.upsert-product
with:
Name: '{{list-stripe-products.data}}'
ExternalId__c: '{{list-stripe-products.id}}'
consumes:
- type: http
namespace: stripe-products
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: products
path: /products
inputParameters:
- name: active
in: query
- name: limit
in: query
operations:
- name: list-products
method: GET
- type: http
namespace: salesforce-products
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: product2
path: /sobjects/Product2
operations:
- name: upsert-product
method: POST
Before a production deploy, checks Datadog for active incidents, verifies GitHub CI status, and posts a deployment readiness report to Slack.
naftiko: '0.5'
info:
label: GitHub CI/CD Deployment Gate
description: Before a production deploy, checks Datadog for active incidents, verifies GitHub CI status, and posts a deployment readiness report to Slack.
tags:
- cicd
- github
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: deploy-ops
port: 8080
tools:
- name: check-deploy-readiness
description: Given a repo and branch, check CI status, verify no active incidents, and report readiness.
inputParameters:
- name: repo_name
in: body
type: string
description: The repository name.
- name: branch
in: body
type: string
description: The branch to deploy.
steps:
- name: check-ci-status
type: call
call: github.get-branch-status
with:
repo: '{{repo_name}}'
branch: '{{branch}}'
- name: post-readiness
type: call
call: slack.post-message
with:
channel: deployments
text: 'Deploy readiness for {{repo_name}}:{{branch}}: CI status={{check-ci-status.state}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: branch-status
path: /repos/stripe/{{repo}}/commits/{{branch}}/status
inputParameters:
- name: repo
in: path
- name: branch
in: path
operations:
- name: get-branch-status
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
On employee termination in Workday, deactivates the Salesforce user license, closes all open Jira tasks assigned to the employee, and notifies HR in Slack.
naftiko: '0.5'
info:
label: Workday Employee Offboarding
description: On employee termination in Workday, deactivates the Salesforce user license, closes all open Jira tasks assigned to the employee, and notifies HR in Slack.
tags:
- hr
- workday
- salesforce
- jira
- slack
- offboarding
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-employee
description: 'Given a Workday worker ID, deactivate the matching Salesforce user, close their open Jira issues, and post an offboarding completion notice to #hr-ops in Slack. Invoke on confirmed employee termination events.'
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID of the departing employee.
- name: salesforce_user_id
in: body
type: string
description: Salesforce user ID to deactivate.
- name: jira_account_id
in: body
type: string
description: Jira account ID to reassign or close open issues for.
steps:
- name: deactivate-sf-user
type: call
call: salesforce-users.update-user
with:
user_id: '{{salesforce_user_id}}'
IsActive: 'false'
- name: close-jira-issues
type: call
call: jira-offboard.search-issues
with:
jql: assignee={{jira_account_id}} AND status!=Done
- name: notify-hr
type: call
call: slack-offboard.post-message
with:
channel: hr-ops
text: Offboarding complete for worker {{worker_id}}. Salesforce user {{salesforce_user_id}} deactivated. Open Jira issues identified for reassignment.
consumes:
- type: http
namespace: salesforce-users
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: user-record
path: /sobjects/User/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: update-user
method: PATCH
- type: http
namespace: jira-offboard
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue-search
path: /issue/search
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: slack-offboard
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a chargeback dispute is opened on Stripe, gathers transaction metadata and automatically submits evidence to contest the dispute. Reduces manual risk team workload.
naftiko: '0.5'
info:
label: Stripe Dispute Evidence Submission
description: When a chargeback dispute is opened on Stripe, gathers transaction metadata and automatically submits evidence to contest the dispute. Reduces manual risk team workload.
tags:
- finance
- payments
- stripe
- disputes
- risk
capability:
exposes:
- type: mcp
namespace: risk-ops
port: 8080
tools:
- name: submit-dispute-evidence
description: Given a Stripe dispute ID, retrieve the associated charge, build an evidence payload from transaction metadata, and submit it to Stripe dispute evidence API. Use when responding to stripe.charge.dispute.created events.
inputParameters:
- name: dispute_id
in: body
type: string
description: Stripe dispute ID (dp_xxxxx) to contest.
- name: customer_email_evidence
in: body
type: string
description: Customer communication evidence text to include.
- name: service_date
in: body
type: string
description: Date of service or product delivery (YYYY-MM-DD).
steps:
- name: get-dispute
type: call
call: stripe-disputes.get-dispute
with:
id: '{{dispute_id}}'
- name: submit-evidence
type: call
call: stripe-dispute-evidence.update-evidence
with:
id: '{{dispute_id}}'
customer_email_address: '{{customer_email_evidence}}'
service_date: '{{service_date}}'
billing_address: '{{get-dispute.charge}}'
consumes:
- type: http
namespace: stripe-disputes
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: disputes
path: /disputes/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-dispute
method: GET
- type: http
namespace: stripe-dispute-evidence
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: dispute-evidence
path: /disputes/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: update-evidence
method: POST
Submits an internal document or support ticket to Anthropic Claude for summarization, returning a concise summary for agent triage or knowledge base ingestion.
naftiko: '0.5'
info:
label: Anthropic AI Document Summarization
description: Submits an internal document or support ticket to Anthropic Claude for summarization, returning a concise summary for agent triage or knowledge base ingestion.
tags:
- ai
- anthropic
- automation
- summarization
capability:
exposes:
- type: mcp
namespace: ai-ops
port: 8080
tools:
- name: summarize-document
description: Given document text, send it to Anthropic Claude for a concise summary. Use for support ticket triage, internal document distillation, or pre-processing before knowledge base ingestion.
inputParameters:
- name: document_text
in: body
type: string
description: Raw text content of the document or ticket to summarize.
- name: max_tokens
in: body
type: integer
description: Maximum token length for the summary response.
call: anthropic-api.create-message
with:
model: claude-opus-4-5
max_tokens: '{{max_tokens}}'
messages: '[{"role":"user","content":"Summarize the following document concisely:\n\n{{document_text}}"}]'
outputParameters:
- name: summary
type: string
mapping: $.content[0].text
consumes:
- type: http
namespace: anthropic-api
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 AWS costs spike, creates a Jira finops ticket and alerts the infrastructure team via Slack.
naftiko: '0.5'
info:
label: AWS Cost Anomaly Detector
description: When AWS costs spike, creates a Jira finops ticket and alerts the infrastructure team via Slack.
tags:
- finops
- aws
- jira
- slack
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given cost anomaly details, create a finops ticket and alert the team.
inputParameters:
- name: service_name
in: body
type: string
description: AWS service with cost spike.
- name: cost_increase_pct
in: body
type: number
description: Percentage increase.
- name: estimated_daily_cost
in: body
type: number
description: Estimated daily cost in USD.
steps:
- name: create-finops-ticket
type: call
call: jira.create-issue
with:
project_key: FINOPS
issuetype: Task
summary: 'Cost anomaly: {{service_name}} up {{cost_increase_pct}}% (${{estimated_daily_cost}}/day)'
- name: alert-infra
type: call
call: slack.post-message
with:
channel: infrastructure-costs
text: 'AWS cost anomaly: {{service_name}} increased {{cost_increase_pct}}% to ${{estimated_daily_cost}}/day. Ticket: {{create-finops-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a corporate card spend limit is breached, creates a Jira ticket for the finance team and alerts the cardholder's manager via Slack.
naftiko: '0.5'
info:
label: Stripe Issuing Spend Controls Manager
description: When a corporate card spend limit is breached, creates a Jira ticket for the finance team and alerts the cardholder's manager via Slack.
tags:
- finance
- stripe
- issuing
- jira
- slack
capability:
exposes:
- type: mcp
namespace: issuing-ops
port: 8080
tools:
- name: handle-spend-limit-breach
description: Given a card ID and spend details, create finance ticket and alert manager.
inputParameters:
- name: card_id
in: body
type: string
description: Stripe Issuing card ID.
- name: cardholder_name
in: body
type: string
description: Cardholder name.
- name: spend_amount
in: body
type: number
description: Transaction amount.
- name: limit_amount
in: body
type: number
description: Configured spend limit.
steps:
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: FIN
issuetype: Task
summary: 'Spend limit breach: {{cardholder_name}} — ${{spend_amount}} (limit: ${{limit_amount}})'
- name: alert-finance
type: call
call: slack.post-message
with:
channel: finance-alerts
text: 'Spend limit breach: {{cardholder_name}} card {{card_id}} — ${{spend_amount}} (limit: ${{limit_amount}}). Ticket: {{create-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves a Stripe product by ID including name, description, and active status.
naftiko: '0.5'
info:
label: Stripe Product Catalog Lookup
description: Retrieves a Stripe product by ID including name, description, and active status.
tags:
- billing
- stripe
- catalog
capability:
exposes:
- type: mcp
namespace: catalog
port: 8080
tools:
- name: get-product
description: Given a Stripe product ID, return its name, description, and status.
inputParameters:
- name: product_id
in: body
type: string
description: The Stripe product ID.
call: stripe-products.get-product
with:
id: '{{product_id}}'
outputParameters:
- name: name
type: string
mapping: $.name
- name: active
type: boolean
mapping: $.active
consumes:
- type: http
namespace: stripe-products
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: products
path: /products/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-product
method: GET
Retrieves the count of open Dependabot alerts for a given GitHub repository.
naftiko: '0.5'
info:
label: GitHub Repo Vulnerability Count
description: Retrieves the count of open Dependabot alerts for a given GitHub repository.
tags:
- security
- github
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: get-vulnerability-count
description: Given a repo name, return the count of open Dependabot vulnerability alerts.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name.
call: github-alerts.list-alerts
with:
repo: '{{repo_name}}'
outputParameters:
- name: alert_count
type: number
mapping: $.length
consumes:
- type: http
namespace: github-alerts
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: alerts
path: /repos/stripe/{{repo}}/dependabot/alerts
inputParameters:
- name: repo
in: path
operations:
- name: list-alerts
method: GET
Tracks adoption of Stripe embedded UI components, queries Snowflake for usage metrics, and posts a weekly adoption report to the product Slack channel.
naftiko: '0.5'
info:
label: Stripe Embedded Components Adoption Tracker
description: Tracks adoption of Stripe embedded UI components, queries Snowflake for usage metrics, and posts a weekly adoption report to the product Slack channel.
tags:
- product
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: embedded-ops
port: 8080
tools:
- name: track-embedded-adoption
description: Given a component name, pull usage data and post adoption report.
inputParameters:
- name: component_name
in: body
type: string
description: Embedded component name (e.g., PaymentElement, ExpressCheckout).
steps:
- name: query-adoption
type: call
call: snowflake.execute-statement
with:
statement: SELECT week, merchant_count, integration_count, volume FROM product.embedded_adoption WHERE component='{{component_name}}' ORDER BY week DESC LIMIT 4
- name: post-report
type: call
call: slack.post-message
with:
channel: embedded-product
text: '{{component_name}} adoption (last 4 weeks):
{{query-adoption.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for metered billing usage, reconciles against Stripe meter records, and posts usage summary to the billing ops Slack channel.
naftiko: '0.5'
info:
label: Stripe Billing Meter Usage Reporter
description: Queries Snowflake for metered billing usage, reconciles against Stripe meter records, and posts usage summary to the billing ops Slack channel.
tags:
- billing
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: billing-ops
port: 8080
tools:
- name: report-meter-usage
description: Given a meter ID and period, pull usage data, reconcile, and report.
inputParameters:
- name: meter_id
in: body
type: string
description: The Stripe billing meter ID.
- name: billing_period
in: body
type: string
description: The billing period (e.g., 2026-03).
steps:
- name: query-usage
type: call
call: snowflake.execute-statement
with:
statement: SELECT customer_id, SUM(quantity) as total_usage FROM billing.meter_events WHERE meter_id='{{meter_id}}' AND period='{{billing_period}}' GROUP BY customer_id ORDER BY total_usage DESC LIMIT 20
- name: post-report
type: call
call: slack.post-message
with:
channel: billing-operations
text: 'Meter usage report for {{meter_id}} ({{billing_period}}): Top 20 customers:
{{query-usage.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates or updates a Stripe webhook endpoint registration for a given URL and event list, enabling automated webhook infrastructure provisioning for new environments.
naftiko: '0.5'
info:
label: Stripe Webhook Endpoint Management
description: Creates or updates a Stripe webhook endpoint registration for a given URL and event list, enabling automated webhook infrastructure provisioning for new environments.
tags:
- devops
- stripe
- webhooks
- infrastructure
capability:
exposes:
- type: mcp
namespace: webhook-infra
port: 8080
tools:
- name: register-webhook-endpoint
description: Given a target URL and list of Stripe event types, create a new webhook endpoint registration in Stripe. Use during environment provisioning or when adding new event subscriptions.
inputParameters:
- name: url
in: body
type: string
description: HTTPS URL that Stripe will deliver webhook events to.
- name: events
in: body
type: string
description: Comma-separated list of Stripe event types to subscribe (e.g. payment_intent.succeeded,invoice.payment_failed).
call: stripe-webhooks.create-endpoint
with:
url: '{{url}}'
enabled_events: '{{events}}'
outputParameters:
- name: endpoint_id
type: string
mapping: $.id
- name: secret
type: string
mapping: $.secret
consumes:
- type: http
namespace: stripe-webhooks
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: webhook-endpoints
path: /webhook_endpoints
operations:
- name: create-endpoint
method: POST
Retrieves a Stripe price object by ID including unit amount, currency, and billing scheme.
naftiko: '0.5'
info:
label: Stripe Price Lookup
description: Retrieves a Stripe price object by ID including unit amount, currency, and billing scheme.
tags:
- billing
- stripe
- pricing
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-price
description: Given a Stripe price ID, return its unit amount, currency, and type.
inputParameters:
- name: price_id
in: body
type: string
description: The Stripe price ID.
call: stripe-prices.get-price
with:
id: '{{price_id}}'
outputParameters:
- name: unit_amount
type: number
mapping: $.unit_amount
- name: currency
type: string
mapping: $.currency
consumes:
- type: http
namespace: stripe-prices
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: prices
path: /prices/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-price
method: GET
Monitors Stripe Terminal device fleet health, creates Jira tickets for offline devices, and alerts the hardware operations team via Slack.
naftiko: '0.5'
info:
label: Stripe Terminal Device Health Monitor
description: Monitors Stripe Terminal device fleet health, creates Jira tickets for offline devices, and alerts the hardware operations team via Slack.
tags:
- hardware
- stripe
- jira
- slack
- terminal
capability:
exposes:
- type: mcp
namespace: terminal-ops
port: 8080
tools:
- name: monitor-terminal-health
description: Given a location ID, check terminal device health and escalate offline devices.
inputParameters:
- name: location_id
in: body
type: string
description: The Stripe Terminal location ID.
- name: merchant_name
in: body
type: string
description: The merchant name.
steps:
- name: create-hw-ticket
type: call
call: jira.create-issue
with:
project_key: HW
issuetype: Bug
summary: 'Terminal offline: Location {{location_id}} — {{merchant_name}}'
- name: alert-hw-ops
type: call
call: slack.post-message
with:
channel: terminal-operations
text: 'Terminal device offline at {{merchant_name}} (location: {{location_id}}). Ticket: {{create-hw-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When an SLO burn rate alert fires, creates a Jira investigation ticket, pages the owning team, and posts to the SRE Slack channel.
naftiko: '0.5'
info:
label: Datadog SLO Burn Rate Responder
description: When an SLO burn rate alert fires, creates a Jira investigation ticket, pages the owning team, and posts to the SRE Slack channel.
tags:
- sre
- datadog
- jira
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: slo-ops
port: 8080
tools:
- name: respond-to-slo-burn
description: Given an SLO name and burn rate, create investigation ticket, page team, and notify SRE.
inputParameters:
- name: slo_name
in: body
type: string
description: The SLO name.
- name: burn_rate
in: body
type: number
description: Current burn rate multiplier.
- name: owning_team
in: body
type: string
description: The team owning this SLO.
steps:
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: SRE
issuetype: Bug
summary: 'SLO burn: {{slo_name}} at {{burn_rate}}x'
description: 'Owning team: {{owning_team}}'
- name: page-team
type: call
call: pagerduty.create-incident
with:
title: 'SLO burn rate: {{slo_name}} at {{burn_rate}}x'
service_id: '{{owning_team}}_SRE'
- name: notify-sre
type: call
call: slack.post-message
with:
channel: sre-alerts
text: 'SLO burn: {{slo_name}} at {{burn_rate}}x. Team: {{owning_team}}. Jira: {{create-ticket.key}}. PD: {{page-team.incident.id}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
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: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for custom payment analytics, generates a summary with Anthropic AI, and posts the report to the analytics Slack channel.
naftiko: '0.5'
info:
label: Stripe Sigma Report Generator
description: Queries Snowflake for custom payment analytics, generates a summary with Anthropic AI, and posts the report to the analytics Slack channel.
tags:
- analytics
- snowflake
- anthropic
- slack
- ai
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: generate-sigma-report
description: Given a report type and date range, query data, summarize with AI, and share.
inputParameters:
- name: report_type
in: body
type: string
description: Type of report (e.g., revenue, disputes, churn).
- name: date_range
in: body
type: string
description: Date range (e.g., last_30_days).
steps:
- name: query-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM analytics.{{report_type}}_summary WHERE period='{{date_range}}'
- name: summarize
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
max_tokens: 1000
messages: '[{"role": "user", "content": "Analyze this {{report_type}} data and provide key insights and trends:\n{{query-data.data}}"}]'
- name: post-report
type: call
call: slack.post-message
with:
channel: analytics
text: '{{report_type}} report ({{date_range}}):
{{summarize.content}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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: x-api-key
value: $secrets.anthropic_api_key
placement: header
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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates a Stripe coupon and promotion code for a marketing campaign and logs the creation in Salesforce for CRM-level campaign tracking.
naftiko: '0.5'
info:
label: Stripe Coupon and Promotion Management
description: Creates a Stripe coupon and promotion code for a marketing campaign and logs the creation in Salesforce for CRM-level campaign tracking.
tags:
- finance
- stripe
- salesforce
- marketing
- promotions
capability:
exposes:
- type: mcp
namespace: promotions-ops
port: 8080
tools:
- name: create-promotion
description: Given a discount percentage, duration, and campaign name, create a Stripe coupon, generate a promotion code, and log the promotion in Salesforce as a campaign activity. Use when launching a new customer acquisition or retention promotion.
inputParameters:
- name: percent_off
in: body
type: number
description: Discount percentage for the coupon (e.g. 20 for 20% off).
- name: duration
in: body
type: string
description: 'Stripe coupon duration: once, repeating, or forever.'
- name: campaign_name
in: body
type: string
description: Internal campaign name for tracking in Salesforce.
- name: promo_code
in: body
type: string
description: Human-readable promotion code string (e.g. SAVE20).
steps:
- name: create-coupon
type: call
call: stripe-coupons.create-coupon
with:
percent_off: '{{percent_off}}'
duration: '{{duration}}'
name: '{{campaign_name}}'
- name: create-promo-code
type: call
call: stripe-promo-codes.create-code
with:
coupon: '{{create-coupon.id}}'
code: '{{promo_code}}'
- name: log-campaign
type: call
call: salesforce-campaigns.create-campaign
with:
Name: '{{campaign_name}}'
Stripe_Coupon_ID__c: '{{create-coupon.id}}'
Promo_Code__c: '{{promo_code}}'
consumes:
- type: http
namespace: stripe-coupons
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: coupons
path: /coupons
operations:
- name: create-coupon
method: POST
- type: http
namespace: stripe-promo-codes
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: promotion-codes
path: /promotion_codes
operations:
- name: create-code
method: POST
- type: http
namespace: salesforce-campaigns
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
Analyzes cross-border payment success rates from Snowflake, identifies routing optimizations, and posts recommendations to the payments infrastructure Slack channel.
naftiko: '0.5'
info:
label: Stripe Cross-Border Payment Optimizer
description: Analyzes cross-border payment success rates from Snowflake, identifies routing optimizations, and posts recommendations to the payments infrastructure Slack channel.
tags:
- payments
- international
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: payments-infra
port: 8080
tools:
- name: optimize-cross-border
description: Given a corridor, analyze success rates and post optimization recommendations.
inputParameters:
- name: source_country
in: body
type: string
description: Source country code.
- name: destination_country
in: body
type: string
description: Destination country code.
steps:
- name: query-corridor-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT payment_method, success_rate, avg_latency_ms, volume FROM payments.cross_border_corridors WHERE source='{{source_country}}' AND destination='{{destination_country}}' ORDER BY success_rate DESC
- name: post-recommendations
type: call
call: slack.post-message
with:
channel: payments-infrastructure
text: 'Cross-border corridor {{source_country}} -> {{destination_country}}:
{{query-corridor-data.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Link adoption metrics from Snowflake and posts a weekly adoption report to the product Slack channel.
naftiko: '0.5'
info:
label: Stripe Link Adoption Dashboard Sync
description: Queries Link adoption metrics from Snowflake and posts a weekly adoption report to the product Slack channel.
tags:
- payments
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: link-ops
port: 8080
tools:
- name: sync-link-adoption
description: Pull Link adoption data and share weekly summary.
inputParameters:
- name: week_start
in: body
type: string
description: Week start date YYYY-MM-DD.
steps:
- name: query-link-metrics
type: call
call: snowflake.execute-statement
with:
statement: SELECT new_users, returning_users, conversion_rate FROM product.link_metrics WHERE week_start='{{week_start}}'
- name: post-report
type: call
call: slack.post-message
with:
channel: link-product
text: 'Link adoption week of {{week_start}}: {{query-link-metrics.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves the count of open bugs grouped by severity for a given Jira project.
naftiko: '0.5'
info:
label: Jira Bug Count by Severity
description: Retrieves the count of open bugs grouped by severity for a given Jira project.
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: eng-metrics
port: 8080
tools:
- name: get-bug-counts
description: Given a Jira project key, return the count of open bugs by severity.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
call: jira-search.search-issues
with:
jql: project={{project_key}} AND issuetype=Bug AND status!=Done
outputParameters:
- name: total
type: number
mapping: $.total
consumes:
- type: http
namespace: jira-search
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search
operations:
- name: search-issues
method: GET
Queries Snowflake for monthly revenue data, reconciles deferred revenue entries, and posts a revenue recognition summary to the finance Slack channel.
naftiko: '0.5'
info:
label: Stripe Revenue Recognition Pipeline
description: Queries Snowflake for monthly revenue data, reconciles deferred revenue entries, and posts a revenue recognition summary to the finance Slack channel.
tags:
- finance
- revenue
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: rev-rec
port: 8080
tools:
- name: run-rev-rec
description: Given a fiscal month, pull revenue data and post recognition summary.
inputParameters:
- name: fiscal_month
in: body
type: string
description: Fiscal month (e.g., 2026-03).
steps:
- name: query-revenue
type: call
call: snowflake.execute-statement
with:
statement: SELECT revenue_type, SUM(recognized_amount) as recognized, SUM(deferred_amount) as deferred FROM finance.rev_rec WHERE month='{{fiscal_month}}' GROUP BY revenue_type
- name: post-summary
type: call
call: slack.post-message
with:
channel: finance-accounting
text: 'Revenue recognition for {{fiscal_month}}:
{{query-revenue.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves a Stripe invoice by ID including line items, amount due, and payment status.
naftiko: '0.5'
info:
label: Stripe Invoice Lookup
description: Retrieves a Stripe invoice by ID including line items, amount due, and payment status.
tags:
- finance
- payments
- stripe
- billing
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-invoice
description: Given a Stripe invoice ID, return its status, amount due, and line items.
inputParameters:
- name: invoice_id
in: body
type: string
description: 'The Stripe invoice ID (format: in_xxxxx).'
call: stripe-invoices.get-invoice
with:
id: '{{invoice_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount_due
type: number
mapping: $.amount_due
- name: currency
type: string
mapping: $.currency
consumes:
- type: http
namespace: stripe-invoices
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: invoices
path: /invoices/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-invoice
method: GET
When a new employee record is created in Workday, creates a Jira onboarding task, sends a Slack welcome message to the team channel, and registers the employee in the internal identity directory.
naftiko: '0.5'
info:
label: Workday New Hire Provisioning
description: When a new employee record is created in Workday, creates a Jira onboarding task, sends a Slack welcome message to the team channel, and registers the employee in the internal identity directory.
tags:
- hr
- workday
- jira
- slack
- onboarding
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: provision-new-hire
description: Given a Workday worker ID and start date, fetch employee details, open a Jira onboarding task, and post a Slack welcome message to the employee's team channel. Use when HR confirms a new hire record in Workday.
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID for the new hire.
- name: start_date
in: body
type: string
description: Employee start date in YYYY-MM-DD format.
- name: team_channel
in: body
type: string
description: Slack channel for the employee's team.
steps:
- name: get-worker
type: call
call: workday-workers.get-worker
with:
worker_id: '{{worker_id}}'
- name: create-onboarding-task
type: call
call: jira-hr.create-issue
with:
project_key: HR
issuetype: Task
summary: 'Onboarding: {{get-worker.fullName}} starting {{start_date}}'
description: 'New hire onboarding for {{get-worker.fullName}}. Worker ID: {{worker_id}}. Start: {{start_date}}. Department: {{get-worker.department}}'
- name: post-welcome
type: call
call: slack-hr.post-message
with:
channel: '{{team_channel}}'
text: 'Please welcome {{get-worker.fullName}} to the team! They start on {{start_date}}. Onboarding task: {{create-onboarding-task.key}}'
consumes:
- type: http
namespace: workday-workers
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: jira-hr
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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-hr
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a production incident is declared, creates a Jira P1 ticket, pages on-call via PagerDuty, opens a Slack incident channel, and posts initial triage data.
naftiko: '0.5'
info:
label: Production Incident Response Orchestrator
description: When a production incident is declared, creates a Jira P1 ticket, pages on-call via PagerDuty, opens a Slack incident channel, and posts initial triage data.
tags:
- sre
- incident-response
- jira
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: incident-mgmt
port: 8080
tools:
- name: declare-incident
description: Given incident details, create P1 ticket, page on-call, and open incident channel.
inputParameters:
- name: incident_summary
in: body
type: string
description: Brief incident summary.
- name: affected_service
in: body
type: string
description: The affected service.
- name: severity
in: body
type: string
description: 'Severity: p1, p2, p3.'
steps:
- name: create-incident-ticket
type: call
call: jira.create-issue
with:
project_key: INC
issuetype: Bug
summary: '[{{severity}}] {{incident_summary}} — {{affected_service}}'
priority: Highest
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: '[{{severity}}] {{incident_summary}} — {{affected_service}}'
service_id: '{{affected_service}}_SRE'
- name: notify-war-room
type: call
call: slack.post-message
with:
channel: incidents
text: 'INCIDENT DECLARED [{{severity}}]: {{incident_summary}} | Service: {{affected_service}} | Jira: {{create-incident-ticket.key}} | PD: {{page-oncall.incident.id}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
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: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Snowflake data pipeline fails, creates a PagerDuty incident, opens a Jira ticket, and alerts the data engineering Slack channel.
naftiko: '0.5'
info:
label: Stripe Data Pipeline Failure Alert
description: When a Snowflake data pipeline fails, creates a PagerDuty incident, opens a Jira ticket, and alerts the data engineering Slack channel.
tags:
- data-engineering
- snowflake
- pagerduty
- jira
- slack
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a pipeline name and error, page on-call, create ticket, and alert.
inputParameters:
- name: pipeline_name
in: body
type: string
description: Failed pipeline name.
- name: error_message
in: body
type: string
description: Error message.
steps:
- name: page-data-oncall
type: call
call: pagerduty.create-incident
with:
title: 'Pipeline failure: {{pipeline_name}}'
service_id: DATA_ENG
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: DATA
issuetype: Bug
summary: 'Pipeline failure: {{pipeline_name}}'
description: 'Error: {{error_message}}'
- name: alert-data-eng
type: call
call: slack.post-message
with:
channel: data-engineering
text: 'Pipeline failure: {{pipeline_name}}. Error: {{error_message}}. PD: {{page-data-oncall.incident.id}}. Jira: {{create-ticket.key}}'
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: create-incident
method: POST
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a subscription is about to cancel, queries usage data from Snowflake, generates a retention offer with AI, and notifies the customer success team via Slack.
naftiko: '0.5'
info:
label: Stripe Subscription Churn Prevention
description: When a subscription is about to cancel, queries usage data from Snowflake, generates a retention offer with AI, and notifies the customer success team via Slack.
tags:
- subscriptions
- stripe
- snowflake
- anthropic
- slack
- ai
capability:
exposes:
- type: mcp
namespace: retention
port: 8080
tools:
- name: prevent-subscription-churn
description: Given a subscription ID, analyze usage, generate retention offer, and notify CS.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Stripe subscription ID.
- name: customer_name
in: body
type: string
description: Customer name.
- name: cancel_reason
in: body
type: string
description: Stated cancellation reason.
steps:
- name: query-usage
type: call
call: snowflake.execute-statement
with:
statement: SELECT feature, usage_count FROM billing.feature_usage WHERE subscription_id='{{subscription_id}}' AND month=DATE_TRUNC('month', CURRENT_DATE()) ORDER BY usage_count DESC LIMIT 5
- name: generate-offer
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
max_tokens: 500
messages: '[{"role": "user", "content": "Generate a retention offer for {{customer_name}} who wants to cancel because: {{cancel_reason}}. Their top used features: {{query-usage.data}}"}]'
- name: notify-cs
type: call
call: slack.post-message
with:
channel: customer-success
text: 'Churn prevention — {{customer_name}} ({{subscription_id}}): Cancel reason: {{cancel_reason}}
Suggested offer: {{generate-offer.content}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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: x-api-key
value: $secrets.anthropic_api_key
placement: header
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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Validates an incoming Stripe webhook signature, parses the event type, and routes it to the appropriate internal processing queue via GitHub Actions dispatch.
naftiko: '0.5'
info:
label: Stripe Webhook Event Validator
description: Validates an incoming Stripe webhook signature, parses the event type, and routes it to the appropriate internal processing queue via GitHub Actions dispatch.
tags:
- devops
- stripe
- github
- webhooks
- automation
capability:
exposes:
- type: mcp
namespace: webhook-ops
port: 8080
tools:
- name: validate-and-route-webhook
description: Given a raw Stripe webhook payload and signature header, verify the signature, extract the event type, and trigger a GitHub Actions repository dispatch to route processing. Use as the first handler in the Stripe webhook ingestion pipeline.
inputParameters:
- name: event_type
in: body
type: string
description: Stripe event type extracted after signature validation (e.g. invoice.payment_failed).
- name: event_id
in: body
type: string
description: Stripe event ID (evt_xxxxx) for idempotency tracking.
- name: repo_owner
in: body
type: string
description: GitHub repository owner for dispatch target.
- name: repo_name
in: body
type: string
description: GitHub repository name for dispatch target.
steps:
- name: dispatch-workflow
type: call
call: github-dispatch.trigger-dispatch
with:
owner: '{{repo_owner}}'
repo: '{{repo_name}}'
event_type: '{{event_type}}'
client_payload: '{{event_id}}'
consumes:
- type: http
namespace: github-dispatch
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: repo-dispatches
path: /repos/{{owner}}/{{repo}}/dispatches
inputParameters:
- name: owner
in: path
- name: repo
in: path
operations:
- name: trigger-dispatch
method: POST
When a merchant support ticket is created, uses Anthropic to draft a response based on the ticket context, posts the draft for agent review in Slack.
naftiko: '0.5'
info:
label: Stripe Merchant Support AI Responder
description: When a merchant support ticket is created, uses Anthropic to draft a response based on the ticket context, posts the draft for agent review in Slack.
tags:
- support
- anthropic
- slack
- ai
capability:
exposes:
- type: mcp
namespace: support-ai
port: 8080
tools:
- name: draft-support-response
description: Given a support ticket, generate an AI response draft and share with agents.
inputParameters:
- name: ticket_subject
in: body
type: string
description: Support ticket subject.
- name: ticket_body
in: body
type: string
description: Support ticket body.
- name: merchant_id
in: body
type: string
description: Merchant account ID.
steps:
- name: generate-draft
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
max_tokens: 500
messages: '[{"role": "user", "content": "Draft a helpful, professional support response for this Stripe merchant inquiry:\nSubject: {{ticket_subject}}\nBody: {{ticket_body}}"}]'
- name: post-draft
type: call
call: slack.post-message
with:
channel: support-ai-drafts
text: 'AI draft for merchant {{merchant_id}}:
Subject: {{ticket_subject}}
---
{{generate-draft.content}}'
consumes:
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: create-message
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a quarterly PCI audit is due, creates a Jira audit epic, assigns tasks to responsible teams, and notifies the compliance team via Slack.
naftiko: '0.5'
info:
label: PCI Compliance Audit Workflow
description: When a quarterly PCI audit is due, creates a Jira audit epic, assigns tasks to responsible teams, and notifies the compliance team via Slack.
tags:
- compliance
- pci
- jira
- slack
- security
capability:
exposes:
- type: mcp
namespace: pci-ops
port: 8080
tools:
- name: initiate-pci-audit
description: Given a quarter and audit scope, create tracking epic and notify compliance.
inputParameters:
- name: audit_quarter
in: body
type: string
description: Audit quarter (e.g., Q1-2026).
- name: audit_scope
in: body
type: string
description: Scope of PCI audit (e.g., cardholder_data_environment, network_segmentation).
steps:
- name: create-audit-epic
type: call
call: jira.create-issue
with:
project_key: COMPLY
issuetype: Epic
summary: 'PCI-DSS audit: {{audit_quarter}} — {{audit_scope}}'
- name: notify-compliance
type: call
call: slack.post-message
with:
channel: pci-compliance
text: 'PCI audit initiated for {{audit_quarter}}: {{audit_scope}}. Epic: {{create-audit-epic.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for tax obligation data, generates tax summary reports, and posts them to the tax operations Slack channel.
naftiko: '0.5'
info:
label: Stripe Tax Reporting Generator
description: Queries Snowflake for tax obligation data, generates tax summary reports, and posts them to the tax operations Slack channel.
tags:
- finance
- tax
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: tax-ops
port: 8080
tools:
- name: generate-tax-report
description: Given a jurisdiction and period, pull tax data and share report.
inputParameters:
- name: jurisdiction
in: body
type: string
description: Tax jurisdiction (e.g., US, EU, UK).
- name: tax_period
in: body
type: string
description: Tax period (e.g., 2026-Q1).
steps:
- name: query-tax-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT tax_type, SUM(tax_amount) as total, COUNT(*) as transactions FROM tax.obligations WHERE jurisdiction='{{jurisdiction}}' AND period='{{tax_period}}' GROUP BY tax_type
- name: post-report
type: call
call: slack.post-message
with:
channel: tax-operations
text: 'Tax report for {{jurisdiction}} — {{tax_period}}:
{{query-tax-data.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates a Stripe Connect account for a new marketplace seller, generates an onboarding link, and records the account in Salesforce. Used during partner or platform merchant activation.
naftiko: '0.5'
info:
label: Stripe Connect Account Onboarding
description: Creates a Stripe Connect account for a new marketplace seller, generates an onboarding link, and records the account in Salesforce. Used during partner or platform merchant activation.
tags:
- finance
- payments
- stripe
- salesforce
- connect
- onboarding
capability:
exposes:
- type: mcp
namespace: connect-ops
port: 8080
tools:
- name: onboard-connect-account
description: Given a seller email and business type, create a Stripe Connect Express account, generate an account link for KYC onboarding, and upsert the Salesforce partner record with the Stripe account ID. Invoke during marketplace seller registration.
inputParameters:
- name: seller_email
in: body
type: string
description: Primary email address for the marketplace seller.
- name: business_type
in: body
type: string
description: 'Stripe business type: individual or company.'
- name: salesforce_account_id
in: body
type: string
description: Salesforce Account ID to update with the Stripe Connect ID.
steps:
- name: create-connect-account
type: call
call: stripe-connect.create-account
with:
type: express
email: '{{seller_email}}'
business_type: '{{business_type}}'
- name: create-account-link
type: call
call: stripe-connect-links.create-link
with:
account: '{{create-connect-account.id}}'
refresh_url: https://dashboard.stripe.com/connect/accounts
return_url: https://dashboard.stripe.com/connect/accounts
type: account_onboarding
- name: update-sf-partner
type: call
call: salesforce-connect.update-account
with:
account_id: '{{salesforce_account_id}}'
Stripe_Connect_ID__c: '{{create-connect-account.id}}'
consumes:
- type: http
namespace: stripe-connect
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: connect-accounts
path: /accounts
operations:
- name: create-account
method: POST
- type: http
namespace: stripe-connect-links
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: account-links
path: /account_links
operations:
- name: create-link
method: POST
- type: http
namespace: salesforce-connect
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: account-record
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
Tracks Stripe Climate carbon removal orders, logs volume in Snowflake, and posts monthly carbon offset summary to the sustainability Slack channel.
naftiko: '0.5'
info:
label: Stripe Climate Order Tracker
description: Tracks Stripe Climate carbon removal orders, logs volume in Snowflake, and posts monthly carbon offset summary to the sustainability Slack channel.
tags:
- sustainability
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: climate-ops
port: 8080
tools:
- name: track-climate-orders
description: Given a month, query climate order data and post summary.
inputParameters:
- name: month
in: body
type: string
description: Month in YYYY-MM format.
steps:
- name: query-climate-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT SUM(metric_tons) as total_tons, SUM(amount_usd) as total_spend FROM climate.carbon_orders WHERE order_month='{{month}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: sustainability
text: 'Stripe Climate report for {{month}}: {{query-climate-data.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Stripe Atlas incorporation completes, creates a Salesforce lead, provisions the new company's Stripe account, and sends welcome email via SendGrid.
naftiko: '0.5'
info:
label: Stripe Atlas Incorporation Workflow
description: When a Stripe Atlas incorporation completes, creates a Salesforce lead, provisions the new company's Stripe account, and sends welcome email via SendGrid.
tags:
- atlas
- stripe
- salesforce
- sendgrid
capability:
exposes:
- type: mcp
namespace: atlas-ops
port: 8080
tools:
- name: process-atlas-incorporation
description: Given a newly incorporated company, create CRM lead, provision account, and send welcome.
inputParameters:
- name: company_name
in: body
type: string
description: The incorporated company name.
- name: founder_email
in: body
type: string
description: Founder's email address.
- name: incorporation_state
in: body
type: string
description: State of incorporation.
steps:
- name: create-lead
type: call
call: salesforce.create-lead
with:
Company: '{{company_name}}'
Email: '{{founder_email}}'
LeadSource: Stripe Atlas
- name: send-welcome
type: call
call: sendgrid.send-email
with:
to: '{{founder_email}}'
subject: Welcome to Stripe, {{company_name}}!
body: 'Your {{incorporation_state}} incorporation is complete. Your Stripe account is ready. Lead: {{create-lead.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://stripe.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: 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 a Stripe Connect transfer by ID including amount, destination, and status.
naftiko: '0.5'
info:
label: Stripe Transfer Lookup
description: Retrieves a Stripe Connect transfer by ID including amount, destination, and status.
tags:
- finance
- payments
- stripe
- connect
capability:
exposes:
- type: mcp
namespace: connect
port: 8080
tools:
- name: get-transfer
description: Given a Stripe transfer ID, return its amount, destination account, and status.
inputParameters:
- name: transfer_id
in: body
type: string
description: 'The Stripe transfer ID (format: tr_xxxxx).'
call: stripe-transfers.get-transfer
with:
id: '{{transfer_id}}'
outputParameters:
- name: amount
type: number
mapping: $.amount
- name: destination
type: string
mapping: $.destination
consumes:
- type: http
namespace: stripe-transfers
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: transfers
path: /transfers/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-transfer
method: GET
When a new fraud pattern is detected, creates a Stripe Radar rule, logs the rule in Jira for audit, and notifies the risk team via Slack.
naftiko: '0.5'
info:
label: Stripe Radar Rule Deployment
description: When a new fraud pattern is detected, creates a Stripe Radar rule, logs the rule in Jira for audit, and notifies the risk team via Slack.
tags:
- fraud
- stripe
- jira
- slack
- security
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: deploy-radar-rule
description: Given a fraud pattern and rule definition, create a Radar rule, log in Jira, and notify risk team.
inputParameters:
- name: rule_name
in: body
type: string
description: Name for the new Radar rule.
- name: rule_predicate
in: body
type: string
description: The Radar rule predicate expression.
- name: fraud_pattern
in: body
type: string
description: Description of the fraud pattern detected.
steps:
- name: create-audit-ticket
type: call
call: jira.create-issue
with:
project_key: RISK
issuetype: Task
summary: 'Radar rule deployment: {{rule_name}}'
description: 'Pattern: {{fraud_pattern}}
Rule: {{rule_predicate}}'
- name: notify-risk
type: call
call: slack.post-message
with:
channel: risk-operations
text: 'New Radar rule deployed: {{rule_name}}. Pattern: {{fraud_pattern}}. Audit: {{create-audit-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Workday for current headcount, compares against plan in Snowflake, and posts variance report to the people ops Slack channel.
naftiko: '0.5'
info:
label: Workday Headcount Variance Reporter
description: Queries Workday for current headcount, compares against plan in Snowflake, and posts variance report to the people ops Slack channel.
tags:
- hr
- workday
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: people-ops
port: 8080
tools:
- name: report-headcount-variance
description: Given a department, compare actual vs planned headcount and report.
inputParameters:
- name: department
in: body
type: string
description: Department name.
steps:
- name: query-variance
type: call
call: snowflake.execute-statement
with:
statement: SELECT planned_hc, actual_hc, actual_hc-planned_hc as variance FROM hr.headcount_plan WHERE department='{{department}}' AND quarter=DATE_TRUNC('quarter', CURRENT_DATE())
- name: post-report
type: call
call: slack.post-message
with:
channel: people-ops
text: 'Headcount variance for {{department}}: {{query-variance.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Fetches Dependabot security alerts for a GitHub repository, filters critical severity findings, and creates Jira security tickets for each critical vulnerability.
naftiko: '0.5'
info:
label: GitHub Security Vulnerability Scan Alert
description: Fetches Dependabot security alerts for a GitHub repository, filters critical severity findings, and creates Jira security tickets for each critical vulnerability.
tags:
- devops
- github
- jira
- security
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-security-alerts
description: Given a GitHub repo owner and name, fetch all open Dependabot critical security alerts and create a Jira security ticket for each. Use as a daily security scanning agent or post-deploy vulnerability check.
inputParameters:
- name: owner
in: body
type: string
description: GitHub repository owner or organization name.
- name: repo
in: body
type: string
description: GitHub repository name to scan for vulnerabilities.
steps:
- name: get-alerts
type: call
call: github-security.get-dependabot-alerts
with:
owner: '{{owner}}'
repo: '{{repo}}'
severity: critical
- name: create-sec-ticket
type: call
call: jira-security.create-issue
with:
project_key: SEC
issuetype: Bug
summary: 'Critical vulnerability in {{repo}}: {{get-alerts.number}} alerts'
description: 'Critical Dependabot alerts detected in {{owner}}/{{repo}}. Alert count: {{get-alerts.total_count}}. Immediate remediation required.'
consumes:
- type: http
namespace: github-security
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: dependabot-alerts
path: /repos/{{owner}}/{{repo}}/dependabot/alerts
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: severity
in: query
operations:
- name: get-dependabot-alerts
method: GET
- type: http
namespace: jira-security
baseUri: https://stripe.atlassian.net/rest/api/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 Stripe subscription by ID including current period, plan, and billing status.
naftiko: '0.5'
info:
label: Stripe Subscription Lookup
description: Retrieves a Stripe subscription by ID including current period, plan, and billing status.
tags:
- finance
- payments
- stripe
- subscriptions
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-subscription
description: Given a Stripe subscription ID, return its status, plan, and current period details.
inputParameters:
- name: subscription_id
in: body
type: string
description: 'The Stripe subscription ID (format: sub_xxxxx).'
call: stripe-subs.get-subscription
with:
id: '{{subscription_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: plan_id
type: string
mapping: $.plan.id
- name: current_period_end
type: number
mapping: $.current_period_end
consumes:
- type: http
namespace: stripe-subs
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: subscriptions
path: /subscriptions/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-subscription
method: GET
Retrieves a Stripe event by ID including type, data, and timestamp.
naftiko: '0.5'
info:
label: Stripe Event Lookup
description: Retrieves a Stripe event by ID including type, data, and timestamp.
tags:
- integrations
- stripe
capability:
exposes:
- type: mcp
namespace: events
port: 8080
tools:
- name: get-event
description: Given a Stripe event ID, return its type, data object, and creation time.
inputParameters:
- name: event_id
in: body
type: string
description: The Stripe event ID.
call: stripe-events.get-event
with:
id: '{{event_id}}'
outputParameters:
- name: type
type: string
mapping: $.type
- name: created
type: number
mapping: $.created
consumes:
- type: http
namespace: stripe-events
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: events
path: /events/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-event
method: GET
When a new integration partner needs a test environment, provisions sandbox credentials, creates a Jira onboarding ticket, and sends credentials via SendGrid.
naftiko: '0.5'
info:
label: Stripe Sandbox Environment Provisioner
description: When a new integration partner needs a test environment, provisions sandbox credentials, creates a Jira onboarding ticket, and sends credentials via SendGrid.
tags:
- partnerships
- jira
- sendgrid
- sandbox
capability:
exposes:
- type: mcp
namespace: sandbox-ops
port: 8080
tools:
- name: provision-sandbox
description: Given partner details, create onboarding ticket and send sandbox credentials.
inputParameters:
- name: partner_name
in: body
type: string
description: Partner company name.
- name: partner_email
in: body
type: string
description: Partner technical contact.
- name: integration_type
in: body
type: string
description: Type of integration.
steps:
- name: create-onboarding-ticket
type: call
call: jira.create-issue
with:
project_key: PARTNER
issuetype: Task
summary: 'Sandbox provisioning: {{partner_name}} — {{integration_type}}'
- name: send-credentials
type: call
call: sendgrid.send-email
with:
to: '{{partner_email}}'
subject: Your Stripe sandbox is ready
body: 'Welcome {{partner_name}}! Your sandbox for {{integration_type}} is provisioned. Ticket: {{create-onboarding-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
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
When a security incident is detected, creates a Jira security ticket, logs in Snowflake for compliance, pages security on-call, and notifies leadership via Slack.
naftiko: '0.5'
info:
label: Security Incident Response Playbook
description: When a security incident is detected, creates a Jira security ticket, logs in Snowflake for compliance, pages security on-call, and notifies leadership via Slack.
tags:
- security
- incident-response
- jira
- snowflake
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: security-ir
port: 8080
tools:
- name: execute-security-playbook
description: Given incident details, create security ticket, log for compliance, page on-call, and notify leadership.
inputParameters:
- name: incident_type
in: body
type: string
description: Type of security incident.
- name: severity
in: body
type: string
description: 'Severity: critical, high, medium.'
- name: affected_systems
in: body
type: string
description: Comma-separated list of affected systems.
steps:
- name: create-security-ticket
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Bug
summary: '[{{severity}}] Security incident: {{incident_type}}'
description: 'Affected systems: {{affected_systems}}'
priority: Highest
- name: log-incident
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO security.incidents (type, severity, affected_systems, ticket_key, detected_at) VALUES ('{{incident_type}}', '{{severity}}', '{{affected_systems}}', '{{create-security-ticket.key}}', CURRENT_TIMESTAMP())
- name: page-security
type: call
call: pagerduty.create-incident
with:
title: '[{{severity}}] Security: {{incident_type}}'
service_id: SECURITY_OPS
- name: notify-leadership
type: call
call: slack.post-message
with:
channel: security-leadership
text: 'SECURITY INCIDENT [{{severity}}]: {{incident_type}}. Systems: {{affected_systems}}. Jira: {{create-security-ticket.key}}. PD: {{page-security.incident.id}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a customer cancels their subscription, cancels the Stripe subscription at period end, logs a churn event in Salesforce, and notifies the customer success team in Slack.
naftiko: '0.5'
info:
label: Stripe Customer Cancellation Workflow
description: When a customer cancels their subscription, cancels the Stripe subscription at period end, logs a churn event in Salesforce, and notifies the customer success team in Slack.
tags:
- finance
- stripe
- salesforce
- slack
- churn
- customer-success
capability:
exposes:
- type: mcp
namespace: churn-ops
port: 8080
tools:
- name: handle-cancellation
description: 'Given a Stripe subscription ID and Salesforce account ID, set the subscription to cancel at period end, update the Salesforce account stage to Churned, and notify #customer-success in Slack. Use when a customer cancellation request is confirmed.'
inputParameters:
- name: subscription_id
in: body
type: string
description: Stripe subscription ID (sub_xxxxx) to cancel.
- name: salesforce_account_id
in: body
type: string
description: Salesforce account ID to mark as churned.
steps:
- name: cancel-subscription
type: call
call: stripe-cancel.update-subscription
with:
subscription_id: '{{subscription_id}}'
cancel_at_period_end: 'true'
- name: update-sf-stage
type: call
call: salesforce-churn.update-account
with:
account_id: '{{salesforce_account_id}}'
CustomerStage__c: Churned
ChurnDate__c: '{{cancel-subscription.current_period_end}}'
- name: notify-cs-team
type: call
call: slack-cs.post-message
with:
channel: customer-success
text: 'Cancellation received: Subscription {{subscription_id}} set to cancel at period end. Salesforce account {{salesforce_account_id}} updated to Churned.'
consumes:
- type: http
namespace: stripe-cancel
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: subscription-update
path: /subscriptions/{{subscription_id}}
inputParameters:
- name: subscription_id
in: path
operations:
- name: update-subscription
method: POST
- type: http
namespace: salesforce-churn
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: account-churn
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
- type: http
namespace: slack-cs
baseUri: 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 Stripe billing portal session for a customer and returns the portal URL, enabling self-service subscription management from the Stripe dashboard or embedded product.
naftiko: '0.5'
info:
label: Stripe Billing Portal Session Creation
description: Creates a Stripe billing portal session for a customer and returns the portal URL, enabling self-service subscription management from the Stripe dashboard or embedded product.
tags:
- finance
- stripe
- billing
- self-service
capability:
exposes:
- type: mcp
namespace: self-service
port: 8080
tools:
- name: create-billing-portal-session
description: Given a Stripe customer ID and return URL, create a billing portal session and return the session URL. Use when a customer requests access to manage their subscription, payment methods, or invoices.
inputParameters:
- name: customer_id
in: body
type: string
description: Stripe customer ID (cus_xxxxx) requesting portal access.
- name: return_url
in: body
type: string
description: URL to redirect the customer to after leaving the billing portal.
call: stripe-portal.create-session
with:
customer: '{{customer_id}}'
return_url: '{{return_url}}'
outputParameters:
- name: portal_url
type: string
mapping: $.url
consumes:
- type: http
namespace: stripe-portal
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: billing-portal-sessions
path: /billing_portal/sessions
operations:
- name: create-session
method: POST
Retrieves p99 payment processing latency from Datadog APM for Stripe's payment services.
naftiko: '0.5'
info:
label: Datadog Payment Latency Check
description: Retrieves p99 payment processing latency from Datadog APM for Stripe's payment services.
tags:
- observability
- datadog
- payments
capability:
exposes:
- type: mcp
namespace: payment-monitoring
port: 8080
tools:
- name: get-payment-latency
description: Given a service name, return p99 latency for payment processing. Use for SLO tracking.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog service name.
call: datadog-apm.query-timeseries
with:
query: avg:trace.http.request.duration.by_service_95p{service:{{service_name}}}
outputParameters:
- name: p99_latency_ms
type: number
mapping: $.series[0].pointlist[-1][1]
consumes:
- type: http
namespace: datadog-apm
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: query
path: /query
operations:
- name: query-timeseries
method: GET
When an enterprise deal closes in Salesforce, provisions a Stripe account, creates onboarding Jira tickets, and notifies the solutions engineering team via Slack.
naftiko: '0.5'
info:
label: Salesforce Enterprise Deal to Stripe Provisioning
description: When an enterprise deal closes in Salesforce, provisions a Stripe account, creates onboarding Jira tickets, and notifies the solutions engineering team via Slack.
tags:
- sales
- salesforce
- stripe
- jira
- slack
capability:
exposes:
- type: mcp
namespace: enterprise-ops
port: 8080
tools:
- name: provision-enterprise-account
description: Given a Salesforce opportunity, provision Stripe account, create onboarding tickets, and notify SE team.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID.
- name: account_name
in: body
type: string
description: Enterprise account name.
- name: deal_value
in: body
type: number
description: Annual deal value.
steps:
- name: create-onboarding-epic
type: call
call: jira.create-issue
with:
project_key: ENT
issuetype: Epic
summary: 'Enterprise onboarding: {{account_name}} (${{deal_value}})'
- name: notify-se-team
type: call
call: slack.post-message
with:
channel: solutions-engineering
text: 'New enterprise deal closed! {{account_name}} (${{deal_value}}). Onboarding: {{create-onboarding-epic.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries GitHub for open pull requests and open Jira bugs, then posts a morning digest summary to the engineering Slack channel to kick off the day's prioritization.
naftiko: '0.5'
info:
label: Slack Engineering Channel Digest
description: Queries GitHub for open pull requests and open Jira bugs, then posts a morning digest summary to the engineering Slack channel to kick off the day's prioritization.
tags:
- devops
- github
- jira
- slack
- reporting
- engineering
capability:
exposes:
- type: mcp
namespace: morning-digest
port: 8080
tools:
- name: publish-engineering-digest
description: 'Given a GitHub repo and Jira project key, fetch open PRs awaiting review and open high-priority bugs, then post a consolidated morning digest to the #engineering Slack channel. Invoke as a daily scheduled agent.'
inputParameters:
- name: owner
in: body
type: string
description: GitHub repository owner.
- name: repo
in: body
type: string
description: GitHub repository name.
- name: jira_project
in: body
type: string
description: Jira project key to check for open bugs.
steps:
- name: get-open-prs
type: call
call: github-open-prs.list-pull-requests
with:
owner: '{{owner}}'
repo: '{{repo}}'
state: open
- name: get-open-bugs
type: call
call: jira-bugs.search-issues
with:
jql: project={{jira_project}} AND issuetype=Bug AND status!=Done ORDER BY priority ASC
- name: post-digest
type: call
call: slack-morning.post-message
with:
channel: engineering
text: 'Good morning! Open PRs in {{repo}}: {{get-open-prs.total_count}}. Open bugs in {{jira_project}}: {{get-open-bugs.total}}. Let''s ship!'
consumes:
- type: http
namespace: github-open-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: jira-bugs
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue-search
path: /issue/search
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: slack-morning
baseUri: 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 Stripe invoice payment fails, retries the charge, logs the event to Datadog, and creates a Jira task for the collections team if retries are exhausted.
naftiko: '0.5'
info:
label: Failed Payment Retry Orchestration
description: When a Stripe invoice payment fails, retries the charge, logs the event to Datadog, and creates a Jira task for the collections team if retries are exhausted.
tags:
- finance
- payments
- stripe
- datadog
- jira
- incident-response
- billing
capability:
exposes:
- type: mcp
namespace: billing-ops
port: 8080
tools:
- name: handle-payment-failure
description: Given a Stripe invoice ID and customer ID, retry the payment, emit a Datadog metric event, and open a Jira collections task if the retry also fails. Use in response to Stripe invoice.payment_failed webhooks.
inputParameters:
- name: invoice_id
in: body
type: string
description: Stripe invoice ID (in_xxxxx) that failed payment.
- name: customer_id
in: body
type: string
description: Stripe customer ID associated with the failed invoice.
- name: attempt_count
in: body
type: integer
description: Number of prior payment attempts already made.
steps:
- name: retry-invoice
type: call
call: stripe-invoices.pay-invoice
with:
invoice_id: '{{invoice_id}}'
- name: log-metric
type: call
call: datadog-metrics.post-metric
with:
metric: stripe.payment.failure
value: 1
tags: invoice:{{invoice_id}},customer:{{customer_id}},attempts:{{attempt_count}}
- name: create-collections-task
type: call
call: jira-issues.create-issue
with:
project_key: BILL
issuetype: Task
summary: 'Collections follow-up: invoice {{invoice_id}} for customer {{customer_id}}'
description: 'Invoice {{invoice_id}} has failed payment after {{attempt_count}} attempts. Stripe retry initiated: {{retry-invoice.status}}'
consumes:
- type: http
namespace: stripe-invoices
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: invoice-pay
path: /invoices/{{invoice_id}}/pay
inputParameters:
- name: invoice_id
in: path
operations:
- name: pay-invoice
method: POST
- type: http
namespace: datadog-metrics
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: metrics
path: /series
operations:
- name: post-metric
method: POST
- type: http
namespace: jira-issues
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
When a new regulatory change is identified, creates a Jira compliance epic, documents requirements in Confluence, and notifies the legal team via Slack.
naftiko: '0.5'
info:
label: Stripe Regulatory Change Tracker
description: When a new regulatory change is identified, creates a Jira compliance epic, documents requirements in Confluence, and notifies the legal team via Slack.
tags:
- legal
- regulatory
- jira
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: track-regulatory-change
description: Given a regulation and jurisdiction, create compliance tracking and notify legal.
inputParameters:
- name: regulation_name
in: body
type: string
description: Name of the regulation.
- name: jurisdiction
in: body
type: string
description: Jurisdiction (e.g., EU, US, UK).
- name: effective_date
in: body
type: string
description: Effective date.
steps:
- name: create-compliance-epic
type: call
call: jira.create-issue
with:
project_key: LEGAL
issuetype: Epic
summary: 'Regulatory: {{regulation_name}} ({{jurisdiction}}) — effective {{effective_date}}'
- name: create-requirements-doc
type: call
call: confluence.create-page
with:
spaceKey: LEGAL
title: '{{regulation_name}} — {{jurisdiction}}'
body: 'Effective: {{effective_date}}
Epic: {{create-compliance-epic.key}}
Status: Analysis'
- name: notify-legal
type: call
call: slack.post-message
with:
channel: legal-regulatory
text: 'New regulatory change: {{regulation_name}} ({{jurisdiction}}), effective {{effective_date}}. Epic: {{create-compliance-epic.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: confluence
baseUri: https://stripe.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: 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 a Stripe customer record by ID including email, subscription status, and payment methods.
naftiko: '0.5'
info:
label: Stripe Customer Lookup
description: Retrieves a Stripe customer record by ID including email, subscription status, and payment methods.
tags:
- finance
- payments
- stripe
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-stripe-customer
description: Given a Stripe customer ID, return their profile, email, and default payment method. Use for support triage.
inputParameters:
- name: customer_id
in: body
type: string
description: 'The Stripe customer ID (format: cus_xxxxx).'
call: stripe-customers.get-customer
with:
id: '{{customer_id}}'
outputParameters:
- name: email
type: string
mapping: $.email
- name: name
type: string
mapping: $.name
- name: default_source
type: string
mapping: $.default_source
consumes:
- type: http
namespace: stripe-customers
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: customers
path: /customers/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-customer
method: GET
Retrieves a Stripe refund by ID including amount, status, and reason.
naftiko: '0.5'
info:
label: Stripe Refund Lookup
description: Retrieves a Stripe refund by ID including amount, status, and reason.
tags:
- finance
- payments
- stripe
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-refund
description: Given a refund ID, return its status, amount, and reason.
inputParameters:
- name: refund_id
in: body
type: string
description: The Stripe refund ID.
call: stripe-refunds.get-refund
with:
id: '{{refund_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: number
mapping: $.amount
consumes:
- type: http
namespace: stripe-refunds
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: refunds
path: /refunds/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-refund
method: GET
Monitors Connect platform account health metrics, creates Jira tickets for accounts with compliance issues, and alerts the platform team via Slack.
naftiko: '0.5'
info:
label: Stripe Connect Account Health Monitor
description: Monitors Connect platform account health metrics, creates Jira tickets for accounts with compliance issues, and alerts the platform team via Slack.
tags:
- connect
- stripe
- jira
- slack
capability:
exposes:
- type: mcp
namespace: connect-health
port: 8080
tools:
- name: monitor-connect-health
description: Given a platform account ID, check compliance status and escalate issues.
inputParameters:
- name: platform_id
in: body
type: string
description: The Connect platform account ID.
- name: issue_type
in: body
type: string
description: Type of compliance issue.
steps:
- name: create-compliance-ticket
type: call
call: jira.create-issue
with:
project_key: CONNECT
issuetype: Task
summary: 'Connect compliance: {{platform_id}} — {{issue_type}}'
- name: alert-platform-team
type: call
call: slack.post-message
with:
channel: connect-platform-ops
text: 'Connect compliance issue: Platform {{platform_id}} — {{issue_type}}. Ticket: {{create-compliance-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Datadog for infrastructure metric anomalies over the past 24 hours and posts a cost anomaly report to the platform engineering Slack channel.
naftiko: '0.5'
info:
label: Datadog Infrastructure Cost Anomaly Detection
description: Queries Datadog for infrastructure metric anomalies over the past 24 hours and posts a cost anomaly report to the platform engineering Slack channel.
tags:
- cloud
- datadog
- slack
- cost-management
- observability
capability:
exposes:
- type: mcp
namespace: platform-ops
port: 8080
tools:
- name: detect-infra-cost-anomaly
description: 'Query Datadog for AWS infrastructure cost anomalies detected in the past 24 hours and post a ranked report to the #platform-eng Slack channel. Use daily for cloud spend governance.'
inputParameters:
- name: threshold_percent
in: body
type: number
description: Percentage increase threshold to flag as an anomaly (e.g. 20 for 20% above baseline).
steps:
- name: query-anomalies
type: call
call: datadog-anomalies.query-metrics
with:
query: anomalies(avg:aws.ec2.estimated_charges{*}, adaptive, 2)
from: '-86400'
to: '0'
- name: post-anomaly-report
type: call
call: slack-platform.post-message
with:
channel: platform-eng
text: 'Infrastructure cost anomaly report (last 24h): Threshold {{threshold_percent}}%. Results: {{query-anomalies.series}}'
consumes:
- type: http
namespace: datadog-anomalies
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: metrics-query
path: /query
inputParameters:
- name: query
in: query
- name: from
in: query
- name: to
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: slack-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
When a GitHub release is published, posts release notes to Slack and creates a Confluence changelog entry.
naftiko: '0.5'
info:
label: GitHub Release Deployment Announcer
description: When a GitHub release is published, posts release notes to Slack and creates a Confluence changelog entry.
tags:
- engineering
- github
- slack
- confluence
capability:
exposes:
- type: mcp
namespace: release-ops
port: 8080
tools:
- name: announce-release
description: Given a repo and release tag, fetch notes, post to Slack, and update Confluence.
inputParameters:
- name: repo_name
in: body
type: string
description: Repository name.
- name: release_tag
in: body
type: string
description: Release tag.
steps:
- name: get-release
type: call
call: github.get-release
with:
repo: '{{repo_name}}'
tag: '{{release_tag}}'
- name: post-announcement
type: call
call: slack.post-message
with:
channel: releases
text: 'Release {{release_tag}} for {{repo_name}}:
{{get-release.body}}'
- name: update-changelog
type: call
call: confluence.create-page
with:
spaceKey: ENG
title: Release {{release_tag}} — {{repo_name}}
body: '{{get-release.body}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: releases
path: /repos/stripe/{{repo}}/releases/tags/{{tag}}
inputParameters:
- name: repo
in: path
- name: tag
in: path
operations:
- name: get-release
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: confluence
baseUri: https://stripe.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
Fetches Stripe balance transactions for the prior day, aggregates MRR and churn metrics, and posts a digest to a Slack finance channel. Runs on a daily schedule.
naftiko: '0.5'
info:
label: Stripe Revenue Metrics Daily Digest
description: Fetches Stripe balance transactions for the prior day, aggregates MRR and churn metrics, and posts a digest to a Slack finance channel. Runs on a daily schedule.
tags:
- finance
- payments
- stripe
- slack
- reporting
- mrr
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: digest-daily-revenue
description: 'Retrieve Stripe balance transactions for a given date, compute total volume and refund rate, and post a formatted summary to the Slack #finance-daily channel. Invoke as a scheduled daily agent task.'
inputParameters:
- name: report_date
in: body
type: string
description: Date to report on in YYYY-MM-DD format.
steps:
- name: get-balance-transactions
type: call
call: stripe-balance.list-transactions
with:
created_gte: '{{report_date}}'
limit: 100
- name: post-digest
type: call
call: slack-finance.post-message
with:
channel: finance-daily
text: 'Stripe Daily Digest for {{report_date}}: Transactions fetched. Review balance data: {{get-balance-transactions.data}}'
consumes:
- type: http
namespace: stripe-balance
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: balance-transactions
path: /balance_transactions
inputParameters:
- name: created_gte
in: query
- name: limit
in: query
operations:
- name: list-transactions
method: GET
- type: http
namespace: slack-finance
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Salesforce lead converts, automatically creates a Stripe customer and starts a free trial subscription, enabling a zero-touch trial activation flow.
naftiko: '0.5'
info:
label: Salesforce Lead to Stripe Trial Activation
description: When a Salesforce lead converts, automatically creates a Stripe customer and starts a free trial subscription, enabling a zero-touch trial activation flow.
tags:
- crm
- salesforce
- stripe
- trial
- sales
capability:
exposes:
- type: mcp
namespace: trial-ops
port: 8080
tools:
- name: activate-trial-from-lead
description: Given a Salesforce lead ID and Stripe trial price ID, retrieve lead contact details, create a Stripe customer, start a trial subscription, and update the Salesforce lead with the Stripe customer and subscription IDs. Use for automated trial activation at lead conversion.
inputParameters:
- name: lead_id
in: body
type: string
description: Salesforce lead ID to activate trial for.
- name: trial_price_id
in: body
type: string
description: Stripe price ID for the trial plan.
- name: trial_days
in: body
type: integer
description: Number of trial days to grant.
steps:
- name: get-lead
type: call
call: salesforce-leads.get-lead
with:
lead_id: '{{lead_id}}'
- name: create-trial-customer
type: call
call: stripe-trial.create-customer
with:
email: '{{get-lead.Email}}'
name: '{{get-lead.Name}}'
- name: start-trial
type: call
call: stripe-trial-subs.create-subscription
with:
customer: '{{create-trial-customer.id}}'
price: '{{trial_price_id}}'
trial_period_days: '{{trial_days}}'
- name: update-lead
type: call
call: salesforce-leads-update.update-lead
with:
lead_id: '{{lead_id}}'
Stripe_Customer_ID__c: '{{create-trial-customer.id}}'
Stripe_Subscription_ID__c: '{{start-trial.id}}'
consumes:
- type: http
namespace: salesforce-leads
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: leads
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: stripe-trial
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: customers
path: /customers
operations:
- name: create-customer
method: POST
- type: http
namespace: stripe-trial-subs
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: salesforce-leads-update
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: lead-update
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
When a Salesforce opportunity closes as Won, automatically creates a matching Stripe subscription for the customer and updates the Salesforce record with the subscription ID.
naftiko: '0.5'
info:
label: Salesforce Opportunity to Stripe Subscription Sync
description: When a Salesforce opportunity closes as Won, automatically creates a matching Stripe subscription for the customer and updates the Salesforce record with the subscription ID.
tags:
- crm
- finance
- salesforce
- stripe
- billing
- revenue-operations
capability:
exposes:
- type: mcp
namespace: rev-ops
port: 8080
tools:
- name: sync-opportunity-to-subscription
description: Given a closed-won Salesforce opportunity ID and Stripe price ID, retrieve opportunity details, create a Stripe subscription for the customer, and write the subscription ID back to the Salesforce opportunity. Use at deal close to automate billing activation.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID (18-char format) of the closed-won deal.
- name: stripe_price_id
in: body
type: string
description: Stripe price ID (price_xxxxx) for the subscription plan.
steps:
- name: get-opportunity
type: call
call: salesforce-opps.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-subscription
type: call
call: stripe-subscriptions.create-subscription
with:
customer: '{{get-opportunity.Stripe_Customer_ID__c}}'
price: '{{stripe_price_id}}'
- name: update-opportunity
type: call
call: salesforce-opps-update.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
Stripe_Subscription_ID__c: '{{create-subscription.id}}'
consumes:
- type: http
namespace: salesforce-opps
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: stripe-subscriptions
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: salesforce-opps-update
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: opportunity-update
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: update-opportunity
method: PATCH
When a Stripe Identity verification session completes, updates Salesforce contact record, logs in Snowflake, and notifies compliance team via Slack.
naftiko: '0.5'
info:
label: Stripe Identity Verification Handler
description: When a Stripe Identity verification session completes, updates Salesforce contact record, logs in Snowflake, and notifies compliance team via Slack.
tags:
- compliance
- stripe
- salesforce
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: handle-verification-result
description: Given a verification session ID and result, update CRM, log for audit, and notify compliance.
inputParameters:
- name: session_id
in: body
type: string
description: Stripe Identity verification session ID.
- name: result
in: body
type: string
description: 'Verification result: verified, unverified, or requires_input.'
- name: customer_id
in: body
type: string
description: Salesforce contact ID.
steps:
- name: update-crm
type: call
call: salesforce.update-contact
with:
contact_id: '{{customer_id}}'
Identity_Verified__c: '{{result}}'
- name: log-verification
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO compliance.identity_verifications (session_id, result, customer_id, verified_at) VALUES ('{{session_id}}', '{{result}}', '{{customer_id}}', CURRENT_TIMESTAMP())
- name: notify-compliance
type: call
call: slack.post-message
with:
channel: compliance-verifications
text: 'Identity verification {{result}}: Session {{session_id}} for customer {{customer_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://stripe.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: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries OKR progress from Snowflake, creates a Confluence progress report, and posts a summary to the leadership Slack channel.
naftiko: '0.5'
info:
label: Quarterly OKR Tracking Sync
description: Queries OKR progress from Snowflake, creates a Confluence progress report, and posts a summary to the leadership Slack channel.
tags:
- business
- snowflake
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: okr-ops
port: 8080
tools:
- name: sync-okr-progress
description: Given a quarter, pull OKR data, create a Confluence report, and share summary.
inputParameters:
- name: quarter
in: body
type: string
description: The quarter (e.g., Q1-2026).
steps:
- name: query-okrs
type: call
call: snowflake.execute-statement
with:
statement: SELECT team, objective, key_result, progress_pct FROM business.okr_tracking WHERE quarter='{{quarter}}' ORDER BY team, progress_pct
- name: create-report
type: call
call: confluence.create-page
with:
spaceKey: OPS
title: 'OKR Progress: {{quarter}}'
body: '{{query-okrs.data}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: leadership
text: 'OKR progress for {{quarter}} posted: {{create-report._links.webui}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: confluence
baseUri: https://stripe.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: 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
Given a Stripe payment intent ID, retrieves full payment status, amount, currency, and customer metadata. Use for support triage or reconciliation workflows.
naftiko: '0.5'
info:
label: Payment Intent Lookup
description: Given a Stripe payment intent ID, retrieves full payment status, amount, currency, and customer metadata. Use for support triage or reconciliation workflows.
tags:
- finance
- payments
- stripe
- lookup
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment-intent
description: Given a Stripe payment intent ID, return its status, amount, currency, and attached customer record. Invoke when a support agent or reconciliation job needs to verify a transaction state.
inputParameters:
- name: payment_intent_id
in: body
type: string
description: 'The Stripe payment intent ID (format: pi_xxxxx).'
call: stripe.get-payment-intent
with:
id: '{{payment_intent_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: number
mapping: $.amount
- name: currency
type: string
mapping: $.currency
- name: customer_id
type: string
mapping: $.customer
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/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-payment-intent
method: GET
Queries Snowflake for Payment Links conversion and revenue data, and posts performance summary to the product Slack channel.
naftiko: '0.5'
info:
label: Stripe Payment Links Performance
description: Queries Snowflake for Payment Links conversion and revenue data, and posts performance summary to the product Slack channel.
tags:
- payments
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: payment-links
port: 8080
tools:
- name: get-payment-links-performance
description: Given a date range, pull Payment Links metrics and share.
inputParameters:
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
steps:
- name: query-metrics
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as links_created, SUM(revenue) as total_revenue, AVG(conversion_rate) as avg_conversion FROM product.payment_links WHERE created_date>='{{start_date}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: payment-links-product
text: 'Payment Links performance since {{start_date}}: {{query-metrics.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Lists Stripe payouts for a date range, compares totals against internal ledger entries in Snowflake, and flags discrepancies to the finance team via Slack.
naftiko: '0.5'
info:
label: Stripe Payout Reconciliation
description: Lists Stripe payouts for a date range, compares totals against internal ledger entries in Snowflake, and flags discrepancies to the finance team via Slack.
tags:
- finance
- payments
- stripe
- snowflake
- slack
- reconciliation
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: reconcile-payouts
description: 'Given a start and end date, fetch Stripe payout records and compare against the Snowflake ledger view. Post a Slack summary with any discrepancies to #finance-reconciliation. Use for month-end close or daily cash reconciliation.'
inputParameters:
- name: start_date
in: body
type: string
description: Reconciliation window start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: Reconciliation window end date in YYYY-MM-DD format.
steps:
- name: list-payouts
type: call
call: stripe-payouts.list-payouts
with:
arrival_date_gte: '{{start_date}}'
arrival_date_lte: '{{end_date}}'
- name: query-ledger
type: call
call: snowflake-ledger.query-payouts
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: post-reconciliation
type: call
call: slack-recon.post-message
with:
channel: finance-reconciliation
text: 'Payout reconciliation {{start_date}} to {{end_date}}: Stripe payouts retrieved. Ledger query complete. Review discrepancies manually.'
consumes:
- type: http
namespace: stripe-payouts
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payouts
path: /payouts
inputParameters:
- name: arrival_date_gte
in: query
- name: arrival_date_lte
in: query
operations:
- name: list-payouts
method: GET
- type: http
namespace: snowflake-ledger
baseUri: https://stripe.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: ledger-statements
path: /statements
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: query-payouts
method: POST
- type: http
namespace: slack-recon
baseUri: 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 payment fails, retrieves the payment intent, creates a Jira support ticket, and notifies the merchant success team via Slack.
naftiko: '0.5'
info:
label: Stripe Payment Failure Recovery Workflow
description: When a payment fails, retrieves the payment intent, creates a Jira support ticket, and notifies the merchant success team via Slack.
tags:
- payments
- stripe
- jira
- slack
capability:
exposes:
- type: mcp
namespace: payment-recovery
port: 8080
tools:
- name: recover-failed-payment
description: Given a failed payment intent ID, fetch details, create support ticket, and notify the team.
inputParameters:
- name: payment_intent_id
in: body
type: string
description: The failed Stripe payment intent ID.
- name: merchant_name
in: body
type: string
description: The merchant name.
steps:
- name: get-payment
type: call
call: stripe.get-payment-intent
with:
id: '{{payment_intent_id}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: SUPPORT
issuetype: Bug
summary: 'Payment failure: {{merchant_name}} — {{payment_intent_id}}'
description: 'Status: {{get-payment.status}}. Amount: {{get-payment.amount}}. Error: {{get-payment.last_payment_error}}'
- name: notify-team
type: call
call: slack.post-message
with:
channel: merchant-success
text: 'Payment failure for {{merchant_name}}: {{payment_intent_id}} (${{get-payment.amount}}). Ticket: {{create-ticket.key}}'
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/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-payment-intent
method: GET
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves details of a Stripe dispute by ID including reason, amount, and evidence deadline.
naftiko: '0.5'
info:
label: Stripe Dispute Lookup
description: Retrieves details of a Stripe dispute by ID including reason, amount, and evidence deadline.
tags:
- finance
- payments
- stripe
- disputes
capability:
exposes:
- type: mcp
namespace: disputes
port: 8080
tools:
- name: get-dispute
description: Given a Stripe dispute ID, return its status, reason, amount, and evidence due date.
inputParameters:
- name: dispute_id
in: body
type: string
description: 'The Stripe dispute ID (format: dp_xxxxx).'
call: stripe-disputes.get-dispute
with:
id: '{{dispute_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: reason
type: string
mapping: $.reason
- name: amount
type: number
mapping: $.amount
consumes:
- type: http
namespace: stripe-disputes
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: disputes
path: /disputes/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-dispute
method: GET
Queries Snowflake for checkout conversion funnel data, analyzes drop-off with Anthropic AI, and posts insights to the payments product Slack channel.
naftiko: '0.5'
info:
label: Stripe Checkout Conversion Analyzer
description: Queries Snowflake for checkout conversion funnel data, analyzes drop-off with Anthropic AI, and posts insights to the payments product Slack channel.
tags:
- analytics
- snowflake
- anthropic
- slack
- ai
capability:
exposes:
- type: mcp
namespace: checkout-analytics
port: 8080
tools:
- name: analyze-checkout-conversion
description: Given a merchant segment, pull funnel data, analyze with AI, and share insights.
inputParameters:
- name: merchant_segment
in: body
type: string
description: Merchant segment (e.g., smb, mid_market, enterprise).
steps:
- name: query-funnel
type: call
call: snowflake.execute-statement
with:
statement: SELECT step, count, conversion_rate FROM checkout.funnel_metrics WHERE segment='{{merchant_segment}}' AND date=CURRENT_DATE()-1
- name: analyze-dropoff
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
max_tokens: 800
messages: '[{"role": "user", "content": "Analyze this checkout conversion funnel data for {{merchant_segment}} merchants and identify key drop-off points with recommendations:\n{{query-funnel.data}}"}]'
- name: share-insights
type: call
call: slack.post-message
with:
channel: checkout-product
text: 'Checkout conversion analysis — {{merchant_segment}}:
{{analyze-dropoff.content}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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: x-api-key
value: $secrets.anthropic_api_key
placement: header
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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When Stripe Radar flags a high-risk payment, looks up the customer profile, creates a Jira security ticket, and notifies the fraud team in Slack for manual review.
naftiko: '0.5'
info:
label: Stripe Fraud Alert Triage
description: When Stripe Radar flags a high-risk payment, looks up the customer profile, creates a Jira security ticket, and notifies the fraud team in Slack for manual review.
tags:
- finance
- payments
- stripe
- jira
- slack
- fraud
- risk
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: triage-fraud-alert
description: 'Given a Stripe payment intent ID flagged by Radar, retrieve the full charge and customer details, open a Jira fraud-review ticket, and alert the #fraud-ops Slack channel with context for manual review.'
inputParameters:
- name: payment_intent_id
in: body
type: string
description: Stripe payment intent ID flagged by Radar (pi_xxxxx).
- name: radar_score
in: body
type: number
description: Stripe Radar risk score (0-100) attached to the payment.
steps:
- name: get-charge-details
type: call
call: stripe-fraud.get-payment-intent
with:
id: '{{payment_intent_id}}'
- name: create-fraud-ticket
type: call
call: jira-fraud.create-issue
with:
project_key: FRAUD
issuetype: Task
summary: 'Radar fraud alert: {{payment_intent_id}} score {{radar_score}}'
description: 'Payment intent {{payment_intent_id}} flagged with Radar score {{radar_score}}. Amount: {{get-charge-details.amount}}. Customer: {{get-charge-details.customer}}'
- name: notify-fraud-team
type: call
call: slack-fraud.post-message
with:
channel: fraud-ops
text: 'Fraud Alert: {{payment_intent_id}} | Radar Score: {{radar_score}} | Jira: {{create-fraud-ticket.key}} | Requires manual review'
consumes:
- type: http
namespace: stripe-fraud
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payment-intents
path: /payment_intents/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-payment-intent
method: GET
- type: http
namespace: jira-fraud
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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-fraud
baseUri: 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 daily Stripe payout data, reconciles against Snowflake ledger entries, and posts a reconciliation summary to the finance Slack channel.
naftiko: '0.5'
info:
label: Stripe Treasury Reconciliation
description: Pulls daily Stripe payout data, reconciles against Snowflake ledger entries, and posts a reconciliation summary to the finance Slack channel.
tags:
- finance
- stripe
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: run-daily-reconciliation
description: Given a date, pull Stripe payouts, compare with Snowflake ledger, and report discrepancies.
inputParameters:
- name: reconciliation_date
in: body
type: string
description: Date to reconcile in YYYY-MM-DD format.
steps:
- name: query-ledger
type: call
call: snowflake.execute-statement
with:
statement: SELECT SUM(amount) as ledger_total, COUNT(*) as entries FROM finance.payout_ledger WHERE payout_date='{{reconciliation_date}}'
- name: post-reconciliation
type: call
call: slack.post-message
with:
channel: finance-treasury
text: 'Daily reconciliation for {{reconciliation_date}}: Ledger total: {{query-ledger.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Collects developer documentation feedback, creates Jira improvement tickets, and posts weekly feedback digest to the docs team Slack channel.
naftiko: '0.5'
info:
label: Stripe Developer Docs Feedback Pipeline
description: Collects developer documentation feedback, creates Jira improvement tickets, and posts weekly feedback digest to the docs team Slack channel.
tags:
- documentation
- jira
- slack
- developer-experience
capability:
exposes:
- type: mcp
namespace: docs-ops
port: 8080
tools:
- name: process-docs-feedback
description: Given feedback details, create improvement tickets and notify the docs team.
inputParameters:
- name: page_url
in: body
type: string
description: Documentation page URL.
- name: feedback_type
in: body
type: string
description: 'Type: unclear, outdated, missing_example, error.'
- name: feedback_text
in: body
type: string
description: Feedback text.
steps:
- name: create-improvement-ticket
type: call
call: jira.create-issue
with:
project_key: DOCS
issuetype: Task
summary: 'Docs feedback ({{feedback_type}}): {{page_url}}'
description: '{{feedback_text}}'
- name: notify-docs-team
type: call
call: slack.post-message
with:
channel: docs-team
text: 'New docs feedback ({{feedback_type}}): {{page_url}}. Ticket: {{create-improvement-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Financial Connections account link is established, logs the connection in Snowflake, updates Salesforce, and notifies the partnerships team via Slack.
naftiko: '0.5'
info:
label: Stripe Financial Connections Sync
description: When a Financial Connections account link is established, logs the connection in Snowflake, updates Salesforce, and notifies the partnerships team via Slack.
tags:
- financial-services
- stripe
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: finconn-ops
port: 8080
tools:
- name: sync-financial-connection
description: Given a Financial Connections session, log the link, update CRM, and notify team.
inputParameters:
- name: session_id
in: body
type: string
description: Financial Connections session ID.
- name: institution_name
in: body
type: string
description: Connected financial institution name.
- name: merchant_id
in: body
type: string
description: The merchant account ID.
steps:
- name: log-connection
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO finconn.linked_accounts (session_id, institution, merchant_id, linked_at) VALUES ('{{session_id}}', '{{institution_name}}', '{{merchant_id}}', CURRENT_TIMESTAMP())
- name: notify-partnerships
type: call
call: slack.post-message
with:
channel: financial-partnerships
text: 'New Financial Connection: {{institution_name}} linked for merchant {{merchant_id}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Initiates a full or partial refund on a Stripe charge and notifies the support team in Slack. Triggered by a support escalation or automated dispute workflow.
naftiko: '0.5'
info:
label: Stripe Charge Refund
description: Initiates a full or partial refund on a Stripe charge and notifies the support team in Slack. Triggered by a support escalation or automated dispute workflow.
tags:
- finance
- payments
- stripe
- refund
- slack
capability:
exposes:
- type: mcp
namespace: payment-ops
port: 8080
tools:
- name: refund-charge
description: Given a Stripe charge ID and optional partial amount, issue a refund and post a Slack notification to the payments-ops channel. Use when a customer refund is approved.
inputParameters:
- name: charge_id
in: body
type: string
description: 'The Stripe charge ID to refund (format: ch_xxxxx).'
- name: amount
in: body
type: integer
description: Amount in cents to refund. Omit for full refund.
- name: reason
in: body
type: string
description: 'Refund reason: duplicate, fraudulent, or requested_by_customer.'
steps:
- name: issue-refund
type: call
call: stripe-refund.create-refund
with:
charge: '{{charge_id}}'
amount: '{{amount}}'
reason: '{{reason}}'
- name: notify-slack
type: call
call: slack-notify.post-message
with:
channel: payments-ops
text: 'Refund issued: {{charge_id}} | Amount: {{amount}} cents | Reason: {{reason}} | Refund ID: {{issue-refund.id}}'
consumes:
- type: http
namespace: stripe-refund
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: slack-notify
baseUri: 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 dispute outcome data from Snowflake and posts a monthly win rate analysis to the risk operations Slack channel.
naftiko: '0.5'
info:
label: Stripe Dispute Win Rate Tracker
description: Queries dispute outcome data from Snowflake and posts a monthly win rate analysis to the risk operations Slack channel.
tags:
- disputes
- snowflake
- slack
- analytics
capability:
exposes:
- type: mcp
namespace: dispute-analytics
port: 8080
tools:
- name: track-dispute-win-rate
description: Given a month, pull dispute outcomes and share analysis.
inputParameters:
- name: month
in: body
type: string
description: Month in YYYY-MM format.
steps:
- name: query-outcomes
type: call
call: snowflake.execute-statement
with:
statement: SELECT reason, COUNT(*) as total, SUM(CASE WHEN outcome='won' THEN 1 ELSE 0 END) as won, ROUND(SUM(CASE WHEN outcome='won' THEN 1 ELSE 0 END)*100.0/COUNT(*),1) as win_rate FROM disputes.outcomes WHERE month='{{month}}' GROUP BY reason
- name: post-analysis
type: call
call: slack.post-message
with:
channel: risk-operations
text: 'Dispute win rates for {{month}}:
{{query-outcomes.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Connect payout fails, retrieves failure reason, creates a Jira support ticket, and notifies the Connect operations team via Slack.
naftiko: '0.5'
info:
label: Stripe Connect Payout Failure Handler
description: When a Connect payout fails, retrieves failure reason, creates a Jira support ticket, and notifies the Connect operations team via Slack.
tags:
- payments
- stripe
- connect
- jira
- slack
capability:
exposes:
- type: mcp
namespace: connect-ops
port: 8080
tools:
- name: handle-payout-failure
description: Given a failed payout ID and account, create support ticket and notify ops.
inputParameters:
- name: payout_id
in: body
type: string
description: The failed payout ID.
- name: account_id
in: body
type: string
description: The Connect account ID.
- name: failure_code
in: body
type: string
description: The payout failure code.
steps:
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: CONNECT
issuetype: Bug
summary: 'Payout failure: {{account_id}} — {{failure_code}}'
description: Payout {{payout_id}} failed with code {{failure_code}}.
- name: notify-ops
type: call
call: slack.post-message
with:
channel: connect-operations
text: 'Payout failure: Account {{account_id}}, Payout {{payout_id}}, Code: {{failure_code}}. Ticket: {{create-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Stripe API version is being deprecated, queries Snowflake for merchants using the old version, creates Jira migration tickets, and sends notification emails via SendGrid.
naftiko: '0.5'
info:
label: Stripe API Deprecation Notifier
description: When a Stripe API version is being deprecated, queries Snowflake for merchants using the old version, creates Jira migration tickets, and sends notification emails via SendGrid.
tags:
- api-management
- snowflake
- jira
- sendgrid
capability:
exposes:
- type: mcp
namespace: api-lifecycle
port: 8080
tools:
- name: notify-api-deprecation
description: Given an API version and deprecation date, find affected merchants, create tickets, and send notifications.
inputParameters:
- name: api_version
in: body
type: string
description: The API version being deprecated.
- name: deprecation_date
in: body
type: string
description: Deprecation date.
- name: replacement_version
in: body
type: string
description: The replacement API version.
steps:
- name: find-affected-merchants
type: call
call: snowflake.execute-statement
with:
statement: SELECT merchant_id, merchant_email, api_version FROM merchants.api_usage WHERE api_version='{{api_version}}'
- name: create-migration-epic
type: call
call: jira.create-issue
with:
project_key: API
issuetype: Epic
summary: 'API deprecation: v{{api_version}} -> v{{replacement_version}} by {{deprecation_date}}'
description: 'Affected merchants: {{find-affected-merchants.data}}'
- name: send-notifications
type: call
call: sendgrid.send-email
with:
to: api-deprecation-list@stripe.com
subject: Stripe API version {{api_version}} deprecation notice
body: API version {{api_version}} will be deprecated on {{deprecation_date}}. Please upgrade to {{replacement_version}}.
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
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
When launching in a new country, creates a Jira expansion epic, documents regulatory requirements in Confluence, and notifies the international team via Slack.
naftiko: '0.5'
info:
label: Stripe International Expansion Tracker
description: When launching in a new country, creates a Jira expansion epic, documents regulatory requirements in Confluence, and notifies the international team via Slack.
tags:
- international
- jira
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: intl-ops
port: 8080
tools:
- name: track-country-launch
description: Given a country and launch details, create tracking epic, document requirements, and notify team.
inputParameters:
- name: country
in: body
type: string
description: Country name.
- name: launch_date
in: body
type: string
description: Target launch date.
- name: payment_methods
in: body
type: string
description: Supported payment methods.
steps:
- name: create-expansion-epic
type: call
call: jira.create-issue
with:
project_key: INTL
issuetype: Epic
summary: 'Country launch: {{country}} — target {{launch_date}}'
- name: create-requirements-doc
type: call
call: confluence.create-page
with:
spaceKey: INTL
title: 'Launch: {{country}}'
body: 'Target date: {{launch_date}}
Payment methods: {{payment_methods}}
Epic: {{create-expansion-epic.key}}'
- name: notify-intl-team
type: call
call: slack.post-message
with:
channel: international-expansion
text: 'Country launch: {{country}} targeting {{launch_date}}. Methods: {{payment_methods}}. Epic: {{create-expansion-epic.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: confluence
baseUri: https://stripe.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: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Stripe Issuing card fraud alert is triggered, freezes the card, creates a Jira investigation ticket, and notifies the fraud team via Slack.
naftiko: '0.5'
info:
label: Stripe Issuing Card Fraud Alert
description: When a Stripe Issuing card fraud alert is triggered, freezes the card, creates a Jira investigation ticket, and notifies the fraud team via Slack.
tags:
- fraud
- stripe
- issuing
- jira
- slack
capability:
exposes:
- type: mcp
namespace: issuing-fraud
port: 8080
tools:
- name: handle-card-fraud
description: Given a card ID and fraud details, freeze the card, create investigation ticket, and alert fraud team.
inputParameters:
- name: card_id
in: body
type: string
description: The Stripe Issuing card ID.
- name: fraud_type
in: body
type: string
description: Type of fraud detected.
- name: transaction_id
in: body
type: string
description: The suspicious transaction ID.
steps:
- name: create-investigation
type: call
call: jira.create-issue
with:
project_key: FRAUD
issuetype: Bug
summary: 'Issuing fraud: Card {{card_id}} — {{fraud_type}}'
description: 'Transaction: {{transaction_id}}'
priority: High
- name: alert-fraud-team
type: call
call: slack.post-message
with:
channel: issuing-fraud-alerts
text: 'Card fraud alert: {{card_id}} — {{fraud_type}}. Transaction: {{transaction_id}}. Ticket: {{create-investigation.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new engineer joins Stripe, creates a Jira onboarding epic, provisions GitHub org access, provisions Okta account, and sends a Slack welcome.
naftiko: '0.5'
info:
label: Engineer Onboarding Orchestrator
description: When a new engineer joins Stripe, creates a Jira onboarding epic, provisions GitHub org access, provisions Okta account, and sends a Slack welcome.
tags:
- hr
- onboarding
- jira
- github
- okta
- slack
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: onboard-engineer
description: Given employee details, create Jira epic, provision GitHub and Okta access, and welcome on Slack.
inputParameters:
- name: employee_name
in: body
type: string
description: New hire's full name.
- name: github_username
in: body
type: string
description: GitHub username.
- name: team_name
in: body
type: string
description: Engineering team name.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
steps:
- name: create-onboarding-epic
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Epic
summary: 'Onboarding: {{employee_name}} — {{team_name}} — {{start_date}}'
- name: provision-github
type: call
call: github.add-org-member
with:
username: '{{github_username}}'
role: member
- name: welcome-slack
type: call
call: slack.post-message
with:
channel: '{{team_name}}-engineering'
text: 'Welcome {{employee_name}} to the {{team_name}} team! Starting {{start_date}}. Onboarding: {{create-onboarding-epic.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: org-members
path: /orgs/stripe/memberships/{{username}}
inputParameters:
- name: username
in: path
operations:
- name: add-org-member
method: PUT
- 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
Submits an incoming support message to OpenAI for intent classification, then routes the Zendesk ticket to the appropriate support queue based on the classified intent.
naftiko: '0.5'
info:
label: OpenAI-Assisted Support Ticket Routing
description: Submits an incoming support message to OpenAI for intent classification, then routes the Zendesk ticket to the appropriate support queue based on the classified intent.
tags:
- ai
- openai
- support
- automation
- triage
capability:
exposes:
- type: mcp
namespace: support-ai
port: 8080
tools:
- name: route-support-ticket
description: Given a support ticket subject and body, call OpenAI to classify the intent (billing, technical, fraud, general), then update the ticket's Zendesk group assignment accordingly. Use at ticket ingestion for zero-touch triage routing.
inputParameters:
- name: ticket_id
in: body
type: string
description: Zendesk ticket ID to route.
- name: ticket_subject
in: body
type: string
description: Zendesk ticket subject line.
- name: ticket_body
in: body
type: string
description: Full text body of the support ticket.
steps:
- name: classify-intent
type: call
call: openai-classify.create-completion
with:
model: gpt-4o
messages: '[{"role":"system","content":"Classify this support ticket into one of: billing, technical, fraud, general. Return only the category."},{"role":"user","content":"Subject: {{ticket_subject}}\n\n{{ticket_body}}"}]'
max_tokens: 10
- name: update-ticket-group
type: call
call: zendesk-tickets.update-ticket
with:
ticket_id: '{{ticket_id}}'
group_name: '{{classify-intent.choices[0].message.content}}'
consumes:
- type: http
namespace: openai-classify
baseUri: https://api.openai.com/v1
authentication:
type: bearer
token: $secrets.openai_api_key
resources:
- name: chat-completions
path: /chat/completions
operations:
- name: create-completion
method: POST
- type: http
namespace: zendesk-tickets
baseUri: https://stripe.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_api_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: update-ticket
method: PUT
When a Connect account's KYC verification fails, retrieves account requirements, creates a Jira compliance ticket, and notifies the partner via SendGrid.
naftiko: '0.5'
info:
label: Stripe Connect KYC Verification Flow
description: When a Connect account's KYC verification fails, retrieves account requirements, creates a Jira compliance ticket, and notifies the partner via SendGrid.
tags:
- compliance
- stripe
- connect
- jira
- sendgrid
capability:
exposes:
- type: mcp
namespace: connect-compliance
port: 8080
tools:
- name: handle-kyc-failure
description: Given a Connect account ID, retrieve verification requirements, create a compliance ticket, and notify the partner.
inputParameters:
- name: account_id
in: body
type: string
description: The Stripe Connect account ID.
- name: partner_email
in: body
type: string
description: Partner's email address.
steps:
- name: get-account
type: call
call: stripe-connect.get-account
with:
account_id: '{{account_id}}'
- name: create-compliance-ticket
type: call
call: jira.create-issue
with:
project_key: COMPLY
issuetype: Task
summary: 'KYC failure: Connect account {{account_id}}'
description: 'Requirements: {{get-account.requirements.currently_due}}'
- name: notify-partner
type: call
call: sendgrid.send-email
with:
to: '{{partner_email}}'
subject: 'Action required: Complete your Stripe verification'
body: 'Your account {{account_id}} requires additional verification. Please complete the following: {{get-account.requirements.currently_due}}'
consumes:
- type: http
namespace: stripe-connect
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: accounts
path: /accounts/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
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
When a pull request is opened in a Stripe engineering repository, automatically assigns reviewers based on CODEOWNERS and posts a review reminder in the team's Slack channel.
naftiko: '0.5'
info:
label: GitHub Code Review Assignment
description: When a pull request is opened in a Stripe engineering repository, automatically assigns reviewers based on CODEOWNERS and posts a review reminder in the team's Slack channel.
tags:
- devops
- github
- slack
- code-review
capability:
exposes:
- type: mcp
namespace: eng-ops
port: 8080
tools:
- name: assign-pr-reviewers
description: Given a GitHub pull request number and repo, fetch PR details, assign reviewers, and post a review request to the relevant Slack engineering channel. Use as a post-PR-open webhook handler.
inputParameters:
- name: pr_number
in: body
type: integer
description: GitHub pull request number.
- name: owner
in: body
type: string
description: GitHub repository owner or org name.
- name: repo
in: body
type: string
description: GitHub repository name.
- name: reviewers
in: body
type: string
description: Comma-separated list of GitHub usernames to assign as reviewers.
- name: slack_channel
in: body
type: string
description: Slack channel to post the review request notification.
steps:
- name: get-pr
type: call
call: github-prs.get-pull-request
with:
owner: '{{owner}}'
repo: '{{repo}}'
pull_number: '{{pr_number}}'
- name: assign-reviewers
type: call
call: github-reviewers.request-reviewers
with:
owner: '{{owner}}'
repo: '{{repo}}'
pull_number: '{{pr_number}}'
reviewers: '{{reviewers}}'
- name: notify-team
type: call
call: slack-eng.post-message
with:
channel: '{{slack_channel}}'
text: 'Review requested: {{get-pr.title}} (PR #{{pr_number}}) in {{repo}} — assigned to {{reviewers}}'
consumes:
- type: http
namespace: github-prs
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pull-requests
path: /repos/{{owner}}/{{repo}}/pulls/{{pull_number}}
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: get-pull-request
method: GET
- type: http
namespace: github-reviewers
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: review-requests
path: /repos/{{owner}}/{{repo}}/pulls/{{pull_number}}/requested_reviewers
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: request-reviewers
method: POST
- type: http
namespace: slack-eng
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Executes a merchant analytics query against Snowflake and returns aggregated payment volume data.
naftiko: '0.5'
info:
label: Snowflake Merchant Analytics Query
description: Executes a merchant analytics query against Snowflake and returns aggregated payment volume data.
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: query-merchant-analytics
description: Given a merchant ID, return payment volume, transaction count, and average transaction value.
inputParameters:
- name: merchant_id
in: body
type: string
description: The merchant account ID.
call: snowflake-analytics.execute-statement
with:
statement: SELECT SUM(amount) as total_volume, COUNT(*) as txn_count, AVG(amount) as avg_txn FROM payments.transactions WHERE merchant_id='{{merchant_id}}' AND created_at>=DATEADD(day, -30, CURRENT_DATE())
outputParameters:
- name: total_volume
type: number
mapping: $.data[0][0]
- name: txn_count
type: number
mapping: $.data[0][1]
consumes:
- type: http
namespace: snowflake-analytics
baseUri: https://stripe.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Lists recent Stripe Checkout sessions for a specified product, computes conversion rate and abandonment metrics, and posts an analytics summary to the growth team's Slack channel.
naftiko: '0.5'
info:
label: Stripe Checkout Session Analytics
description: Lists recent Stripe Checkout sessions for a specified product, computes conversion rate and abandonment metrics, and posts an analytics summary to the growth team's Slack channel.
tags:
- finance
- stripe
- analytics
- growth
- reporting
capability:
exposes:
- type: mcp
namespace: growth-analytics
port: 8080
tools:
- name: analyze-checkout-sessions
description: 'Fetch recent Stripe Checkout sessions for a date range, compute session counts by status (open, complete, expired), and post a conversion summary to the #growth Slack channel. Use for weekly funnel analysis or A/B test measurement.'
inputParameters:
- name: start_date
in: body
type: string
description: Start of the reporting window in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End of the reporting window in YYYY-MM-DD format.
steps:
- name: list-sessions
type: call
call: stripe-checkout.list-sessions
with:
created_gte: '{{start_date}}'
created_lte: '{{end_date}}'
limit: 100
- name: post-analytics
type: call
call: slack-growth.post-message
with:
channel: growth
text: 'Checkout session analytics {{start_date}} to {{end_date}}: Sessions retrieved {{list-sessions.data}}. Review conversion rates in Stripe dashboard.'
consumes:
- type: http
namespace: stripe-checkout
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: checkout-sessions
path: /checkout/sessions
inputParameters:
- name: created_gte
in: query
- name: created_lte
in: query
- name: limit
in: query
operations:
- name: list-sessions
method: GET
- type: http
namespace: slack-growth
baseUri: 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 Radar ML model performance metrics, analyzes trends, and posts a weekly model health report to the risk team Slack channel.
naftiko: '0.5'
info:
label: Stripe Radar Model Performance Monitor
description: Queries Snowflake for Radar ML model performance metrics, analyzes trends, and posts a weekly model health report to the risk team Slack channel.
tags:
- fraud
- machine-learning
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: radar-ml
port: 8080
tools:
- name: monitor-radar-model
description: Given a model version, pull performance metrics and share report.
inputParameters:
- name: model_version
in: body
type: string
description: Radar model version.
steps:
- name: query-performance
type: call
call: snowflake.execute-statement
with:
statement: SELECT date, precision, recall, f1_score, false_positive_rate FROM ml.radar_model_metrics WHERE model_version='{{model_version}}' ORDER BY date DESC LIMIT 7
- name: post-report
type: call
call: slack.post-message
with:
channel: radar-ml-team
text: 'Radar model {{model_version}} performance (last 7 days):
{{query-performance.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates a Stripe invoice for a customer, adds line items, finalizes it, and sends it via email. Used by the billing team or automated billing agents at the end of a billing cycle.
naftiko: '0.5'
info:
label: Stripe Invoice Generation and Delivery
description: Creates a Stripe invoice for a customer, adds line items, finalizes it, and sends it via email. Used by the billing team or automated billing agents at the end of a billing cycle.
tags:
- finance
- stripe
- billing
- invoicing
capability:
exposes:
- type: mcp
namespace: invoicing
port: 8080
tools:
- name: generate-and-send-invoice
description: Given a Stripe customer ID, price ID, and quantity, create a draft invoice, add the line item, finalize the invoice, and trigger email delivery to the customer. Use at billing cycle close or for one-off manual billing.
inputParameters:
- name: customer_id
in: body
type: string
description: Stripe customer ID (cus_xxxxx) to invoice.
- name: price_id
in: body
type: string
description: Stripe price ID (price_xxxxx) to add as line item.
- name: quantity
in: body
type: integer
description: Quantity of the price units to invoice.
steps:
- name: create-invoice
type: call
call: stripe-invoice-create.create-invoice
with:
customer: '{{customer_id}}'
- name: add-line-item
type: call
call: stripe-invoice-items.create-invoice-item
with:
customer: '{{customer_id}}'
invoice: '{{create-invoice.id}}'
price: '{{price_id}}'
quantity: '{{quantity}}'
- name: finalize-invoice
type: call
call: stripe-invoice-finalize.finalize-invoice
with:
invoice_id: '{{create-invoice.id}}'
- name: send-invoice
type: call
call: stripe-invoice-send.send-invoice
with:
invoice_id: '{{create-invoice.id}}'
consumes:
- type: http
namespace: stripe-invoice-create
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: invoices
path: /invoices
operations:
- name: create-invoice
method: POST
- type: http
namespace: stripe-invoice-items
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: invoice-items
path: /invoiceitems
operations:
- name: create-invoice-item
method: POST
- type: http
namespace: stripe-invoice-finalize
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: invoice-finalize
path: /invoices/{{invoice_id}}/finalize
inputParameters:
- name: invoice_id
in: path
operations:
- name: finalize-invoice
method: POST
- type: http
namespace: stripe-invoice-send
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: invoice-send
path: /invoices/{{invoice_id}}/send
inputParameters:
- name: invoice_id
in: path
operations:
- name: send-invoice
method: POST
Retrieves the current Stripe account balance including available and pending amounts by currency.
naftiko: '0.5'
info:
label: Stripe Balance Lookup
description: Retrieves the current Stripe account balance including available and pending amounts by currency.
tags:
- finance
- payments
- stripe
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-stripe-balance
description: Return the current Stripe account balance with available and pending amounts. Use for reconciliation and treasury dashboards.
inputParameters: []
call: stripe-balance.get-balance
with: {}
outputParameters:
- name: available
type: array
mapping: $.available
- name: pending
type: array
mapping: $.pending
consumes:
- type: http
namespace: stripe-balance
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: balance
path: /balance
operations:
- name: get-balance
method: GET
When a merchant's payment volume drops significantly, queries Snowflake for analytics, updates Salesforce account health, and alerts the merchant success team via Slack.
naftiko: '0.5'
info:
label: Merchant Churn Risk Alert
description: When a merchant's payment volume drops significantly, queries Snowflake for analytics, updates Salesforce account health, and alerts the merchant success team via Slack.
tags:
- analytics
- snowflake
- salesforce
- slack
- customer-success
capability:
exposes:
- type: mcp
namespace: merchant-success
port: 8080
tools:
- name: alert-churn-risk
description: Given a merchant ID and volume decline percentage, pull analytics, update Salesforce, and alert the team.
inputParameters:
- name: merchant_id
in: body
type: string
description: The merchant account ID.
- name: decline_pct
in: body
type: number
description: Volume decline percentage.
steps:
- name: query-analytics
type: call
call: snowflake.execute-statement
with:
statement: SELECT total_volume, txn_count, avg_txn_size FROM payments.merchant_monthly WHERE merchant_id='{{merchant_id}}' ORDER BY month DESC LIMIT 3
- name: update-salesforce
type: call
call: salesforce.update-account
with:
account_id: '{{merchant_id}}'
Churn_Risk__c: High
- name: alert-team
type: call
call: slack.post-message
with:
channel: merchant-success-alerts
text: 'Churn risk: Merchant {{merchant_id}} volume dropped {{decline_pct}}%. Last 3 months: {{query-analytics.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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://stripe.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: 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 Datadog SLO status for a given service and posts a compliance report to Slack. Triggered weekly or on-demand for engineering reliability reviews.
naftiko: '0.5'
info:
label: Datadog SLO Compliance Check
description: Retrieves Datadog SLO status for a given service and posts a compliance report to Slack. Triggered weekly or on-demand for engineering reliability reviews.
tags:
- devops
- datadog
- slack
- observability
- slo
- reliability
capability:
exposes:
- type: mcp
namespace: reliability-ops
port: 8080
tools:
- name: check-slo-compliance
description: Given a Datadog SLO ID, retrieve its current status and error budget remaining, then post a compliance summary to a Slack channel. Use for weekly reliability reviews or ad-hoc SLO checks.
inputParameters:
- name: slo_id
in: body
type: string
description: Datadog SLO ID to check compliance for.
- name: slack_channel
in: body
type: string
description: Slack channel to post the SLO compliance report.
steps:
- name: get-slo
type: call
call: datadog-slos.get-slo
with:
slo_id: '{{slo_id}}'
- name: post-slo-report
type: call
call: slack-reliability.post-message
with:
channel: '{{slack_channel}}'
text: 'SLO Compliance for {{slo_id}}: Status {{get-slo.data.overall_status}} | Error budget: {{get-slo.data.overall_error_budget_remaining}}%'
consumes:
- type: http
namespace: datadog-slos
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slos
path: /slo/{{slo_id}}
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo
method: GET
- type: http
namespace: slack-reliability
baseUri: 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 Jira issue is escalated to P1 priority, posts an alert to the #escalations Slack channel and creates a Datadog event for correlated observability tracking.
naftiko: '0.5'
info:
label: Jira Escalation to Slack and Datadog
description: 'When a Jira issue is escalated to P1 priority, posts an alert to the #escalations Slack channel and creates a Datadog event for correlated observability tracking.'
tags:
- devops
- jira
- slack
- datadog
- escalation
- incident-response
capability:
exposes:
- type: mcp
namespace: escalation-ops
port: 8080
tools:
- name: handle-jira-escalation
description: 'Given a Jira issue key and escalation reason, post an escalation notice to #escalations in Slack and create a correlated Datadog event. Use when a Jira automation or human escalates an issue to P1.'
inputParameters:
- name: issue_key
in: body
type: string
description: Jira issue key being escalated (e.g. OPS-1234).
- name: escalation_reason
in: body
type: string
description: Text describing why the issue was escalated to P1.
- name: service_tag
in: body
type: string
description: Service or component tag for Datadog event correlation.
steps:
- name: post-escalation
type: call
call: slack-escalation.post-message
with:
channel: escalations
text: 'P1 ESCALATION: {{issue_key}} | Reason: {{escalation_reason}} | https://stripe.atlassian.net/browse/{{issue_key}}'
- name: log-dd-event
type: call
call: datadog-escalation.create-event
with:
title: 'Jira P1 Escalation: {{issue_key}}'
text: '{{escalation_reason}}'
tags: service:{{service_tag}},source:jira,priority:p1
consumes:
- type: http
namespace: slack-escalation
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
- type: http
namespace: datadog-escalation
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
Queries Snowflake for Connect platform fees, reconciles against Stripe records, and posts a daily fee summary to the finance Slack channel.
naftiko: '0.5'
info:
label: Stripe Connect Fee Reconciliation
description: Queries Snowflake for Connect platform fees, reconciles against Stripe records, and posts a daily fee summary to the finance Slack channel.
tags:
- finance
- stripe
- connect
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: connect-finance
port: 8080
tools:
- name: reconcile-connect-fees
description: Given a date, pull Connect fee data and share reconciliation.
inputParameters:
- name: reconciliation_date
in: body
type: string
description: Date YYYY-MM-DD.
steps:
- name: query-fees
type: call
call: snowflake.execute-statement
with:
statement: SELECT platform_id, SUM(application_fee) as total_fees, COUNT(*) as txns FROM connect.application_fees WHERE fee_date='{{reconciliation_date}}' GROUP BY platform_id ORDER BY total_fees DESC LIMIT 10
- name: post-reconciliation
type: call
call: slack.post-message
with:
channel: connect-finance
text: 'Connect fee reconciliation for {{reconciliation_date}}:
{{query-fees.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://stripe.snowflakecomputing.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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When an employee departs, revokes GitHub access, disables Okta account, creates a Jira deprovisioning ticket, and notifies the team via Slack.
naftiko: '0.5'
info:
label: Workday Employee Offboarding Orchestrator
description: When an employee departs, revokes GitHub access, disables Okta account, creates a Jira deprovisioning ticket, and notifies the team via Slack.
tags:
- hr
- offboarding
- workday
- github
- okta
- jira
- slack
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-employee
description: Given employee details, revoke all access, create deprovisioning ticket, and notify.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID.
- name: github_username
in: body
type: string
description: GitHub username.
- name: employee_name
in: body
type: string
description: Employee name.
- name: team_name
in: body
type: string
description: Team name.
steps:
- name: revoke-github
type: call
call: github.remove-org-member
with:
username: '{{github_username}}'
- name: create-deprov-ticket
type: call
call: jira.create-issue
with:
project_key: IT
issuetype: Task
summary: 'Offboarding: {{employee_name}} — access deprovisioning'
- name: notify-team
type: call
call: slack.post-message
with:
channel: '{{team_name}}-engineering'
text: '{{employee_name}} has departed. Access revoked. Deprovisioning: {{create-deprov-ticket.key}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: org-members
path: /orgs/stripe/members/{{username}}
inputParameters:
- name: username
in: path
operations:
- name: remove-org-member
method: DELETE
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When Datadog fires a P1 monitor alert, automatically creates a Jira incident ticket, notifies the on-call engineer via Slack, and logs the event in the incident management workflow.
naftiko: '0.5'
info:
label: Datadog Incident Alert to Jira
description: When Datadog fires a P1 monitor alert, automatically creates a Jira incident ticket, notifies the on-call engineer via Slack, and logs the event in the incident management workflow.
tags:
- devops
- datadog
- jira
- slack
- incident-response
- observability
capability:
exposes:
- type: mcp
namespace: incident-ops
port: 8080
tools:
- name: handle-p1-alert
description: 'Given a Datadog monitor ID and alert message, retrieve monitor details, open a Jira P1 incident, and notify the #incidents Slack channel. Invoke from Datadog webhook integrations on ALERT state transitions.'
inputParameters:
- name: monitor_id
in: body
type: integer
description: Datadog monitor ID that fired the alert.
- name: alert_message
in: body
type: string
description: Alert body text from the Datadog notification.
- name: service
in: body
type: string
description: Service name associated with the triggered monitor.
steps:
- name: get-monitor
type: call
call: datadog-monitors.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: jira-incident.create-issue
with:
project_key: OPS
issuetype: Incident
summary: 'P1 Alert: {{service}} — {{alert_message}}'
description: 'Datadog monitor {{monitor_id}} fired.
Service: {{service}}
Message: {{alert_message}}
Monitor name: {{get-monitor.name}}'
priority: Highest
- name: notify-oncall
type: call
call: slack-incidents.post-message
with:
channel: incidents
text: 'P1 ALERT: {{service}} | Monitor: {{monitor_id}} | Jira: {{create-incident.key}} | {{alert_message}}'
consumes:
- type: http
namespace: datadog-monitors
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: monitors
path: /monitor/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: jira-incident
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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-incidents
baseUri: 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 Stripe subscription by ID and returns plan, status, current period end, and trial information. Used by support and billing agents to answer customer inquiries.
naftiko: '0.5'
info:
label: Stripe Subscription Status Check
description: Looks up a Stripe subscription by ID and returns plan, status, current period end, and trial information. Used by support and billing agents to answer customer inquiries.
tags:
- finance
- payments
- stripe
- billing
- subscriptions
- lookup
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-subscription
description: Given a Stripe subscription ID, return current plan name, status, current period end date, and trial end date. Invoke for customer billing inquiries or churn risk analysis.
inputParameters:
- name: subscription_id
in: body
type: string
description: 'Stripe subscription ID (format: sub_xxxxx).'
call: stripe-subs.get-subscription
with:
id: '{{subscription_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: current_period_end
type: number
mapping: $.current_period_end
- name: plan_id
type: string
mapping: $.plan.id
- name: trial_end
type: number
mapping: $.trial_end
consumes:
- type: http
namespace: stripe-subs
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: subscriptions
path: /subscriptions/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-subscription
method: GET
Retrieves status and arrival date of a Stripe payout.
naftiko: '0.5'
info:
label: Stripe Payout Status Lookup
description: Retrieves status and arrival date of a Stripe payout.
tags:
- finance
- stripe
- payouts
capability:
exposes:
- type: mcp
namespace: treasury
port: 8080
tools:
- name: get-payout-status
description: Given a payout ID, return status and estimated arrival date.
inputParameters:
- name: payout_id
in: body
type: string
description: The Stripe payout ID.
call: stripe-payouts.get-payout
with:
id: '{{payout_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: arrival_date
type: number
mapping: $.arrival_date
consumes:
- type: http
namespace: stripe-payouts
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payouts
path: /payouts/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-payout
method: GET
When a new business customer is approved, creates a Stripe customer record, attaches a default payment method, and provisions a Salesforce account. Spans Stripe and Salesforce.
naftiko: '0.5'
info:
label: Stripe Customer Onboarding
description: When a new business customer is approved, creates a Stripe customer record, attaches a default payment method, and provisions a Salesforce account. Spans Stripe and Salesforce.
tags:
- finance
- payments
- stripe
- salesforce
- onboarding
- crm
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: onboard-business-customer
description: Given a business name, email, and payment method token, create a Stripe customer, attach the payment method, then create or update the matching Salesforce account. Use during B2B customer activation.
inputParameters:
- name: business_name
in: body
type: string
description: Legal business name for the new customer.
- name: email
in: body
type: string
description: Primary billing email address.
- name: payment_method_id
in: body
type: string
description: Stripe payment method ID (pm_xxxxx) to attach as default.
steps:
- name: create-customer
type: call
call: stripe-customers.create-customer
with:
name: '{{business_name}}'
email: '{{email}}'
- name: attach-payment
type: call
call: stripe-payment-methods.attach-method
with:
payment_method_id: '{{payment_method_id}}'
customer: '{{create-customer.id}}'
- name: create-sf-account
type: call
call: salesforce-accounts.create-account
with:
Name: '{{business_name}}'
Stripe_Customer_ID__c: '{{create-customer.id}}'
BillingEmail: '{{email}}'
consumes:
- type: http
namespace: stripe-customers
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: customers
path: /customers
operations:
- name: create-customer
method: POST
- type: http
namespace: stripe-payment-methods
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payment-method-attach
path: /payment_methods/{{payment_method_id}}/attach
inputParameters:
- name: payment_method_id
in: path
operations:
- name: attach-method
method: POST
- type: http
namespace: salesforce-accounts
baseUri: https://stripe.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: accounts
path: /sobjects/Account
operations:
- name: create-account
method: POST
When a new service is created, triggers a Terraform run, creates a Jira provisioning ticket, and notifies platform engineering via Slack.
naftiko: '0.5'
info:
label: Terraform Infrastructure Provisioning
description: When a new service is created, triggers a Terraform run, creates a Jira provisioning ticket, and notifies platform engineering via Slack.
tags:
- infrastructure
- terraform
- jira
- slack
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: provision-infrastructure
description: Given service details, trigger Terraform, create ticket, and notify team.
inputParameters:
- name: service_name
in: body
type: string
description: New service name.
- name: environment
in: body
type: string
description: Target environment.
steps:
- name: create-provisioning-ticket
type: call
call: jira.create-issue
with:
project_key: INFRA
issuetype: Task
summary: 'Provision: {{service_name}} in {{environment}}'
- name: notify-platform
type: call
call: slack.post-message
with:
channel: platform-engineering
text: 'Infrastructure provisioning: {{service_name}} in {{environment}}. Ticket: {{create-provisioning-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://stripe.atlassian.net/rest/api/3
authentication:
type: 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_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
On pull request merge to main, runs pre-deployment checks via GitHub Actions, posts build status to Slack, and creates a Datadog deployment event marker.
naftiko: '0.5'
info:
label: GitHub Pull Request Deployment Gate
description: On pull request merge to main, runs pre-deployment checks via GitHub Actions, posts build status to Slack, and creates a Datadog deployment event marker.
tags:
- devops
- github
- datadog
- slack
- cicd
- deployment
capability:
exposes:
- type: mcp
namespace: deploy-ops
port: 8080
tools:
- name: handle-pr-merge-deployment
description: Given a merged PR number, repo, and commit SHA, trigger a GitHub Actions workflow, post a Slack deployment notice, and create a Datadog deployment marker. Use as the post-merge deployment orchestration step.
inputParameters:
- name: pr_number
in: body
type: integer
description: Merged pull request number.
- name: repo
in: body
type: string
description: Repository name in owner/repo format.
- name: commit_sha
in: body
type: string
description: SHA of the merge commit triggering deployment.
- name: service_name
in: body
type: string
description: Service or component being deployed.
steps:
- name: trigger-workflow
type: call
call: github-actions.trigger-dispatch
with:
repo: '{{repo}}'
event_type: deploy
client_payload: '{{commit_sha}}'
- name: post-deploy-notice
type: call
call: slack-deploy.post-message
with:
channel: deployments
text: 'Deploying {{service_name}} from PR #{{pr_number}} commit {{commit_sha}}'
- name: create-dd-marker
type: call
call: datadog-deploy.create-event
with:
title: 'Deployment: {{service_name}}'
text: 'PR #{{pr_number}} merged — commit {{commit_sha}} deploying to production'
tags: service:{{service_name}},env:production
consumes:
- type: http
namespace: github-actions
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: dispatches
path: /repos/{{repo}}/dispatches
inputParameters:
- name: repo
in: path
operations:
- name: trigger-dispatch
method: POST
- type: http
namespace: slack-deploy
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
- type: http
namespace: datadog-deploy
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
Retrieves Stripe Tax Rate objects for a given jurisdiction to support tax calculation and compliance reporting workflows.
naftiko: '0.5'
info:
label: Stripe Tax Rate Lookup
description: Retrieves Stripe Tax Rate objects for a given jurisdiction to support tax calculation and compliance reporting workflows.
tags:
- finance
- stripe
- tax
- compliance
- lookup
capability:
exposes:
- type: mcp
namespace: tax-ops
port: 8080
tools:
- name: get-tax-rate
description: Given a Stripe tax rate ID, return the display name, percentage, jurisdiction, and inclusive/exclusive type. Use during invoice generation or tax compliance review.
inputParameters:
- name: tax_rate_id
in: body
type: string
description: Stripe tax rate ID (txr_xxxxx) to retrieve.
call: stripe-tax.get-tax-rate
with:
id: '{{tax_rate_id}}'
outputParameters:
- name: display_name
type: string
mapping: $.display_name
- name: percentage
type: number
mapping: $.percentage
- name: jurisdiction
type: string
mapping: $.jurisdiction
- name: inclusive
type: boolean
mapping: $.inclusive
consumes:
- type: http
namespace: stripe-tax
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: tax-rates
path: /tax_rates/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-tax-rate
method: GET
Queries Snowflake for transaction volume metrics by region and card type.
naftiko: '0.5'
info:
label: Visa Transaction Volume Query
description: Queries Snowflake for transaction volume metrics by region and card type.
tags:
- payments
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: visa_transaction_vol
port: 8080
tools:
- name: query-data
description: Queries Snowflake for transaction volume metrics by region and card type.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
At month end, queries Oracle ERP for open AP items and journal entries requiring action, then creates a period-close ServiceNow task for the finance controller team.
naftiko: '0.5'
info:
label: Oracle Period-Close Financial Checklist
description: At month end, queries Oracle ERP for open AP items and journal entries requiring action, then creates a period-close ServiceNow task for the finance controller team.
tags:
- finance
- period-close
- oracle
- servicenow
- reporting
capability:
exposes:
- type: mcp
namespace: finance-period-close
port: 8080
tools:
- name: run-period-close-checklist
description: Given a fiscal period and Oracle ledger ID, fetch open AP and pending journal items, then create a ServiceNow period-close task for the finance team.
inputParameters:
- name: fiscal_period
in: body
type: string
description: Fiscal period in YYYYMM format.
- name: ledger_id
in: body
type: string
description: Oracle General Ledger ledger ID.
- name: finance_group
in: body
type: string
description: ServiceNow assignment group for the finance controller team.
steps:
- name: get-open-ap
type: call
call: oracle-payables.get-open-invoices
with:
fiscal_period: '{{fiscal_period}}'
ledger_id: '{{ledger_id}}'
- name: create-close-task
type: call
call: servicenow-period.create-task
with:
short_description: 'Period close: {{fiscal_period}} — {{get-open-ap.count}} open AP items'
description: 'Oracle ERP open AP items for period {{fiscal_period}}: {{get-open-ap.count}} invoices totaling {{get-open-ap.total_amount}} {{get-open-ap.currency}}. Clear before period close.'
assignment_group: '{{finance_group}}'
consumes:
- type: http
namespace: oracle-payables
baseUri: https://visa.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: invoices
path: /invoices
operations:
- name: get-open-invoices
method: GET
- type: http
namespace: servicenow-period
baseUri: https://visa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
Triggers a Tableau workbook refresh for Visa's executive payment KPI dashboards and notifies the business intelligence leadership team via Microsoft Teams.
naftiko: '0.5'
info:
label: Tableau Payment KPI Dashboard Refresh
description: Triggers a Tableau workbook refresh for Visa's executive payment KPI dashboards and notifies the business intelligence leadership team via Microsoft Teams.
tags:
- analytics
- tableau
- microsoft-teams
- reporting
- dashboards
- payments
capability:
exposes:
- type: mcp
namespace: payment-dashboards
port: 8080
tools:
- name: refresh-payment-kpi-dashboard
description: Trigger a Tableau workbook refresh for a payment KPI dashboard and notify the BI leadership Teams channel on completion.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook LUID to refresh.
- name: site_id
in: body
type: string
description: Tableau server site ID.
- name: notify_channel_id
in: body
type: string
description: Microsoft Teams channel ID for BI leadership notification.
steps:
- name: trigger-refresh
type: call
call: tableau.refresh-workbook
with:
site_id: '{{site_id}}'
workbook_id: '{{workbook_id}}'
- name: notify-bi-leaders
type: call
call: msteams-bi.post-message
with:
channel_id: '{{notify_channel_id}}'
text: 'Payment KPI dashboard refresh complete. Workbook: {{workbook_id}}, Job: {{trigger-refresh.job_id}}, Status: {{trigger-refresh.status}}.'
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.visa.com/api/2.8
authentication:
type: apikey
key: X-Tableau-Auth
value: $secrets.tableau_token
placement: header
resources:
- name: workbook-refresh
path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
inputParameters:
- name: site_id
in: path
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- type: http
namespace: msteams-bi
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Generates a QBR report from Snowflake analytics, creates a Salesforce activity record, and posts highlights to Slack.
naftiko: '0.5'
info:
label: Visa Quarterly Business Review Generator
description: Generates a QBR report from Snowflake analytics, creates a Salesforce activity record, and posts highlights to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- analytics
capability:
exposes:
- type: mcp
namespace: visa_quarterly_busin
port: 8080
tools:
- name: handle-event
description: Generates a QBR report from Snowflake analytics, creates a Salesforce activity record, and posts highlights to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a Splunk fraud detection alert fires, creates a CrowdStrike investigation, opens a P1 ServiceNow security incident, and pages the fraud operations team via PagerDuty.
naftiko: '0.5'
info:
label: Fraud Alert Investigation Handler
description: When a Splunk fraud detection alert fires, creates a CrowdStrike investigation, opens a P1 ServiceNow security incident, and pages the fraud operations team via PagerDuty.
tags:
- security
- fraud
- splunk
- crowdstrike
- servicenow
- pagerduty
- incident-response
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: handle-fraud-alert
description: Given a Splunk fraud alert ID and affected account or entity, create a CrowdStrike detection, open a P1 ServiceNow security incident, and trigger PagerDuty for the fraud ops team.
inputParameters:
- name: alert_id
in: body
type: string
description: The Splunk alert ID or correlation search ID.
- name: entity_id
in: body
type: string
description: The affected account, card, or entity identifier.
- name: fraud_type
in: body
type: string
description: Type of fraud detected (e.g., account_takeover, card_not_present, identity_theft).
- name: severity
in: body
type: string
description: 'Alert severity: critical, high, or medium.'
steps:
- name: get-alert-details
type: call
call: splunk.get-alert-results
with:
alert_id: '{{alert_id}}'
- name: create-cs-detection
type: call
call: crowdstrike.create-detection
with:
hostname: fraud-ops-investigation
description: 'Fraud event {{fraud_type}} for entity {{entity_id}}. Splunk alert: {{alert_id}}.'
- name: create-p1-incident
type: call
call: servicenow-fraud.create-incident
with:
short_description: '[{{severity}}] Fraud alert: {{fraud_type}} — entity {{entity_id}}'
description: 'Splunk alert {{alert_id}} detected {{fraud_type}} for {{entity_id}}. CrowdStrike detection: {{create-cs-detection.detection_id}}. Details: {{get-alert-details.results}}'
category: fraud_investigation
urgency: '1'
- name: page-fraud-team
type: call
call: pagerduty.create-incident
with:
title: 'Fraud Alert: {{fraud_type}} — {{entity_id}}'
body: 'ServiceNow: {{create-p1-incident.number}}. CrowdStrike: {{create-cs-detection.detection_id}}. Splunk: {{alert_id}}.'
service_id: FRAUD_OPS_SERVICE
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.visa.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: alert-results
path: /search/jobs/{{alert_id}}/results
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert-results
method: GET
- type: http
namespace: crowdstrike
baseUri: https://api.crowdstrike.com
authentication:
type: bearer
token: $secrets.crowdstrike_token
resources:
- name: detections
path: /detects/entities/detects/v2
operations:
- name: create-detection
method: PATCH
- type: http
namespace: servicenow-fraud
baseUri: https://visa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
When encryption keys approach expiration, triggers rotation, creates a ServiceNow change request, and notifies the security team via Slack.
naftiko: '0.5'
info:
label: Visa Encryption Key Rotation Workflow
description: When encryption keys approach expiration, triggers rotation, creates a ServiceNow change request, and notifies the security team via Slack.
tags:
- security
- servicenow
- slack
- encryption
capability:
exposes:
- type: mcp
namespace: visa_encryption_key_
port: 8080
tools:
- name: handle-event
description: When encryption keys approach expiration, triggers rotation, creates a ServiceNow change request, and notifies the security team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns merchant category, location, and transaction history from Snowflake.
naftiko: '0.5'
info:
label: Visa Merchant Detail Lookup
description: Returns merchant category, location, and transaction history from Snowflake.
tags:
- payments
- snowflake
- merchants
capability:
exposes:
- type: mcp
namespace: visa_merchant_detail
port: 8080
tools:
- name: query-data
description: Returns merchant category, location, and transaction history from Snowflake.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When debit routing anomalies are detected in Snowflake, creates a Jira investigation task and alerts the debit network team via Slack.
naftiko: '0.5'
info:
label: Visa Debit Network Routing Alert
description: When debit routing anomalies are detected in Snowflake, creates a Jira investigation task and alerts the debit network team via Slack.
tags:
- payments
- snowflake
- jira
- slack
- debit
capability:
exposes:
- type: mcp
namespace: visa_debit_network_r
port: 8080
tools:
- name: handle-event
description: When debit routing anomalies are detected in Snowflake, creates a Jira investigation task and alerts the debit network team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a partner exceeds API rate limits, logs the event in Splunk, creates a Jira ticket, and notifies the developer relations team via Slack.
naftiko: '0.5'
info:
label: Visa API Rate Limit Breach Handler
description: When a partner exceeds API rate limits, logs the event in Splunk, creates a Jira ticket, and notifies the developer relations team via Slack.
tags:
- api-management
- splunk
- jira
- slack
capability:
exposes:
- type: mcp
namespace: visa_api_rate_limit_
port: 8080
tools:
- name: handle-event
description: When a partner exceeds API rate limits, logs the event in Splunk, creates a Jira ticket, and notifies the developer relations team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[api-management] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: api-management-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When settlement reconciliation detects a mismatch, queries Snowflake for details, creates a Jira ticket, and alerts finance via Slack.
naftiko: '0.5'
info:
label: Visa Settlement Reconciliation Alert
description: When settlement reconciliation detects a mismatch, queries Snowflake for details, creates a Jira ticket, and alerts finance via Slack.
tags:
- payments
- snowflake
- jira
- slack
- settlements
capability:
exposes:
- type: mcp
namespace: visa_settlement_reco
port: 8080
tools:
- name: handle-event
description: When settlement reconciliation detects a mismatch, queries Snowflake for details, creates a Jira ticket, and alerts finance via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries cross-border transaction volumes by corridor from Snowflake.
naftiko: '0.5'
info:
label: Snowflake Cross-Border Volume Query
description: Queries cross-border transaction volumes by corridor from Snowflake.
tags:
- payments
- snowflake
- cross-border
capability:
exposes:
- type: mcp
namespace: snowflake_cross_bord
port: 8080
tools:
- name: query-data
description: Queries cross-border transaction volumes by corridor from Snowflake.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When CrowdStrike detects a new threat, queries Splunk for exposure, creates a ServiceNow incident, and pages the CSIRT team.
naftiko: '0.5'
info:
label: Visa Cybersecurity Threat Intelligence Handler
description: When CrowdStrike detects a new threat, queries Splunk for exposure, creates a ServiceNow incident, and pages the CSIRT team.
tags:
- security
- crowdstrike
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: visa_cybersecurity_t
port: 8080
tools:
- name: handle-event
description: When CrowdStrike detects a new threat, queries Splunk for exposure, creates a ServiceNow incident, and pages the CSIRT team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When tokens approach expiration, queries Snowflake for affected issuers, creates a Jira renewal task, and notifies the digital payments team.
naftiko: '0.5'
info:
label: Visa Token Lifecycle Management Alert
description: When tokens approach expiration, queries Snowflake for affected issuers, creates a Jira renewal task, and notifies the digital payments team.
tags:
- payments
- snowflake
- jira
- slack
- tokenization
capability:
exposes:
- type: mcp
namespace: visa_token_lifecycle
port: 8080
tools:
- name: handle-event
description: When tokens approach expiration, queries Snowflake for affected issuers, creates a Jira renewal task, and notifies the digital payments team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When ISO 8583 message validation errors spike, queries Splunk for patterns, creates a Jira ticket, and alerts the integration team via Slack.
naftiko: '0.5'
info:
label: Visa ISO Message Format Validation Alert
description: When ISO 8583 message validation errors spike, queries Splunk for patterns, creates a Jira ticket, and alerts the integration team via Slack.
tags:
- payments
- splunk
- jira
- slack
- iso-8583
capability:
exposes:
- type: mcp
namespace: visa_iso_message_for
port: 8080
tools:
- name: handle-event
description: When ISO 8583 message validation errors spike, queries Splunk for patterns, creates a Jira ticket, and alerts the integration team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for fraud detection metrics including false positive rates.
naftiko: '0.5'
info:
label: Snowflake Fraud Metrics Query
description: Queries Snowflake for fraud detection metrics including false positive rates.
tags:
- security
- snowflake
- fraud-detection
capability:
exposes:
- type: mcp
namespace: snowflake_fraud_metr
port: 8080
tools:
- name: query-data
description: Queries Snowflake for fraud detection metrics including false positive rates.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Queries Snowflake for daily settlement totals by currency and network.
naftiko: '0.5'
info:
label: Snowflake Settlement Report Query
description: Queries Snowflake for daily settlement totals by currency and network.
tags:
- payments
- snowflake
- settlements
capability:
exposes:
- type: mcp
namespace: snowflake_settlement
port: 8080
tools:
- name: query-data
description: Queries Snowflake for daily settlement totals by currency and network.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Enriches Salesforce issuer account records with transaction health scores from Snowflake to provide account managers with a real-time view of relationship health.
naftiko: '0.5'
info:
label: Salesforce Issuer Relationship Health Dashboard Sync
description: Enriches Salesforce issuer account records with transaction health scores from Snowflake to provide account managers with a real-time view of relationship health.
tags:
- crm
- salesforce
- snowflake
- customer-success
- data-enrichment
- payments
capability:
exposes:
- type: mcp
namespace: issuer-health-sync
port: 8080
tools:
- name: sync-issuer-health-score
description: Given a Salesforce account ID and issuer BIN range, query Snowflake for transaction health KPIs and update the Salesforce account with a calculated health score.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce issuer account ID (18-character).
- name: bin_range
in: body
type: string
description: Bank Identification Number (BIN) range for the issuer.
steps:
- name: get-transaction-kpis
type: call
call: snowflake-issuer.execute-query
with:
statement: SELECT avg_approval_rate, decline_rate, dispute_rate, transaction_volume FROM payments.issuer_health WHERE bin_range = '{{bin_range}}' AND report_date = CURRENT_DATE
- name: update-sf-account
type: call
call: salesforce-issuers.update-account
with:
account_id: '{{account_id}}'
approval_rate__c: '{{get-transaction-kpis.avg_approval_rate}}'
decline_rate__c: '{{get-transaction-kpis.decline_rate}}'
dispute_rate__c: '{{get-transaction-kpis.dispute_rate}}'
consumes:
- type: http
namespace: snowflake-issuer
baseUri: https://visa.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-issuers
baseUri: https://visa.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
Returns issuer bank account details from Salesforce including relationship tier and volume.
naftiko: '0.5'
info:
label: Salesforce Issuer Account Lookup
description: Returns issuer bank account details from Salesforce including relationship tier and volume.
tags:
- payments
- salesforce
- issuers
capability:
exposes:
- type: mcp
namespace: salesforce_issuer_ac
port: 8080
tools:
- name: query-data
description: Returns issuer bank account details from Salesforce including relationship tier and volume.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Monitors Datadog SLOs for Visa's payment authorization and settlement services and creates P1 ServiceNow incidents when SLO compliance drops below the defined threshold.
naftiko: '0.5'
info:
label: Datadog Payment Processing SLO Monitor
description: Monitors Datadog SLOs for Visa's payment authorization and settlement services and creates P1 ServiceNow incidents when SLO compliance drops below the defined threshold.
tags:
- observability
- datadog
- servicenow
- slo
- payment-processing
- incident-response
capability:
exposes:
- type: mcp
namespace: payment-slo-monitor
port: 8080
tools:
- name: check-payment-slo-compliance
description: Fetch SLO compliance data from Datadog for payment processing services and create a P1 ServiceNow incident if compliance drops below the threshold. Use for continuous payment SLO monitoring.
inputParameters:
- name: slo_id
in: body
type: string
description: The Datadog SLO ID for the payment service to check.
- name: compliance_threshold
in: body
type: number
description: Minimum acceptable SLO compliance percentage (e.g., 99.9).
- name: timeframe
in: body
type: string
description: 'Compliance check window: 7d, 30d.'
steps:
- name: get-slo-status
type: call
call: datadog.get-slo-history
with:
slo_id: '{{slo_id}}'
timeframe: '{{timeframe}}'
- name: create-p1-incident
type: call
call: servicenow-slo.create-incident
with:
short_description: 'Payment SLO breach: {{slo_id}} below {{compliance_threshold}}%'
description: Datadog SLO {{slo_id}} compliance dropped to {{get-slo-status.overall_compliance}}%, below threshold of {{compliance_threshold}}%. Immediate remediation required.
urgency: '1'
impact: '1'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slo-history
path: /slo/history
operations:
- name: get-slo-history
method: GET
- type: http
namespace: servicenow-slo
baseUri: https://visa.service-now.com/api/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 3D Secure authentication failure rates spike, queries Snowflake for issuer patterns, creates a Jira ticket, and alerts the authentication team.
naftiko: '0.5'
info:
label: Visa 3DS Authentication Failure Handler
description: When 3D Secure authentication failure rates spike, queries Snowflake for issuer patterns, creates a Jira ticket, and alerts the authentication team.
tags:
- payments
- snowflake
- jira
- slack
- 3ds
capability:
exposes:
- type: mcp
namespace: visa_3ds_authenticat
port: 8080
tools:
- name: handle-event
description: When 3D Secure authentication failure rates spike, queries Snowflake for issuer patterns, creates a Jira ticket, and alerts the authentication team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a transaction anomaly is detected, queries Splunk for details, creates a ServiceNow incident, and pages the fraud team via PagerDuty.
naftiko: '0.5'
info:
label: Visa Transaction Anomaly Investigation
description: When a transaction anomaly is detected, queries Splunk for details, creates a ServiceNow incident, and pages the fraud team via PagerDuty.
tags:
- payments
- splunk
- servicenow
- pagerduty
- fraud
capability:
exposes:
- type: mcp
namespace: visa_transaction_ano
port: 8080
tools:
- name: handle-event
description: When a transaction anomaly is detected, queries Splunk for details, creates a ServiceNow incident, and pages the fraud team via PagerDuty.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Tracks Click to Pay enrollment metrics from Snowflake, updates Salesforce issuer records, and posts weekly growth stats to Slack.
naftiko: '0.5'
info:
label: Visa Click-to-Pay Enrollment Tracker
description: Tracks Click to Pay enrollment metrics from Snowflake, updates Salesforce issuer records, and posts weekly growth stats to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- digital-payments
capability:
exposes:
- type: mcp
namespace: visa_click_to_pay_en
port: 8080
tools:
- name: handle-event
description: Tracks Click to Pay enrollment metrics from Snowflake, updates Salesforce issuer records, and posts weekly growth stats to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When an employee changes roles in Workday, updates their Okta group memberships to provision access for new applications and deprovision access for previous role applications.
naftiko: '0.5'
info:
label: Okta Application Provisioning for New Role
description: When an employee changes roles in Workday, updates their Okta group memberships to provision access for new applications and deprovision access for previous role applications.
tags:
- identity
- hr
- okta
- workday
- access-management
- role-change
capability:
exposes:
- type: mcp
namespace: role-based-provisioning
port: 8080
tools:
- name: reprovision-access-for-role-change
description: Given a Workday employee ID, new role group ID, and previous role group ID in Okta, remove the employee from the old group and add them to the new group to align application access with their new role.
inputParameters:
- name: employee_email
in: body
type: string
description: Work email address of the employee changing roles.
- name: new_role_group_id
in: body
type: string
description: Okta group ID for the new role's application access.
- name: previous_role_group_id
in: body
type: string
description: Okta group ID for the previous role's application access.
steps:
- name: get-okta-user
type: call
call: okta-user.get-user
with:
login: '{{employee_email}}'
- name: remove-old-group
type: call
call: okta-groups-remove.remove-user-from-group
with:
group_id: '{{previous_role_group_id}}'
user_id: '{{get-okta-user.id}}'
- name: add-new-group
type: call
call: okta-groups-add.add-user-to-group
with:
group_id: '{{new_role_group_id}}'
user_id: '{{get-okta-user.id}}'
consumes:
- type: http
namespace: okta-user
baseUri: https://visa.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: users
path: /users/{{login}}
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: okta-groups-remove
baseUri: https://visa.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: group-members
path: /groups/{{group_id}}/users/{{user_id}}
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: remove-user-from-group
method: DELETE
- type: http
namespace: okta-groups-add
baseUri: https://visa.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: group-members
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
Retrieves payment API specification documentation from Confluence.
naftiko: '0.5'
info:
label: Confluence Payment Spec Lookup
description: Retrieves payment API specification documentation from Confluence.
tags:
- documentation
- confluence
- api-specs
capability:
exposes:
- type: mcp
namespace: confluence_payment_s
port: 8080
tools:
- name: query-data
description: Retrieves payment API specification documentation from Confluence.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.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 fraud rule is approved, deploys to production, verifies via Datadog, logs in ServiceNow, and notifies the fraud team via Slack.
naftiko: '0.5'
info:
label: Visa Payment Fraud Rule Deployment
description: When a new fraud rule is approved, deploys to production, verifies via Datadog, logs in ServiceNow, and notifies the fraud team via Slack.
tags:
- security
- datadog
- servicenow
- slack
- fraud-detection
capability:
exposes:
- type: mcp
namespace: visa_payment_fraud_r
port: 8080
tools:
- name: handle-event
description: When a new fraud rule is approved, deploys to production, verifies via Datadog, logs in ServiceNow, and notifies the fraud team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for chargeback rates by merchant category and region.
naftiko: '0.5'
info:
label: Visa Chargeback Rate Query
description: Queries Snowflake for chargeback rates by merchant category and region.
tags:
- payments
- snowflake
- chargebacks
capability:
exposes:
- type: mcp
namespace: visa_chargeback_rate
port: 8080
tools:
- name: query-data
description: Queries Snowflake for chargeback rates by merchant category and region.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Updates Salesforce account records with the latest NPS survey scores and verbatim comments to enable account teams to identify at-risk relationships.
naftiko: '0.5'
info:
label: Salesforce Account NPS Update
description: Updates Salesforce account records with the latest NPS survey scores and verbatim comments to enable account teams to identify at-risk relationships.
tags:
- crm
- customer-success
- salesforce
- nps
- reporting
capability:
exposes:
- type: mcp
namespace: crm-nps
port: 8080
tools:
- name: update-account-nps
description: Given a Salesforce account ID, NPS score, and comment, update the account record with the latest survey result. Use after NPS surveys are completed by banking or merchant partners.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID (18-character).
- name: nps_score
in: body
type: integer
description: The NPS score (0–10).
- name: nps_comment
in: body
type: string
description: Verbatim NPS comment from the partner.
- name: survey_date
in: body
type: string
description: Date of the NPS survey in YYYY-MM-DD format.
call: salesforce-nps.update-account
with:
account_id: '{{account_id}}'
nps_score__c: '{{nps_score}}'
nps_comment__c: '{{nps_comment}}'
nps_date__c: '{{survey_date}}'
consumes:
- type: http
namespace: salesforce-nps
baseUri: https://visa.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
Returns the last refresh status and time for payment KPI dashboards.
naftiko: '0.5'
info:
label: Tableau Payment Dashboard Refresh Status
description: Returns the last refresh status and time for payment KPI dashboards.
tags:
- analytics
- tableau
- dashboards
capability:
exposes:
- type: mcp
namespace: tableau_payment_dash
port: 8080
tools:
- name: query-data
description: Returns the last refresh status and time for payment KPI dashboards.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Monitors real-time payment processing metrics from Datadog, creates PagerDuty alerts for anomalies, and posts status to Slack.
naftiko: '0.5'
info:
label: Visa Real-Time Payment Monitoring
description: Monitors real-time payment processing metrics from Datadog, creates PagerDuty alerts for anomalies, and posts status to Slack.
tags:
- payments
- datadog
- pagerduty
- slack
- real-time
capability:
exposes:
- type: mcp
namespace: visa_real_time_payme
port: 8080
tools:
- name: handle-event
description: Monitors real-time payment processing metrics from Datadog, creates PagerDuty alerts for anomalies, and posts status to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors GitHub Dependabot critical vulnerability alerts across Visa's payment platform repositories and creates ServiceNow security incidents for immediate remediation.
naftiko: '0.5'
info:
label: GitHub Dependabot Critical Vulnerability Triage
description: Monitors GitHub Dependabot critical vulnerability alerts across Visa's payment platform repositories and creates ServiceNow security incidents for immediate remediation.
tags:
- security
- github
- servicenow
- vulnerability
- dependency-management
- pci-dss
capability:
exposes:
- type: mcp
namespace: vuln-triage
port: 8080
tools:
- name: triage-critical-vulnerability
description: Given a GitHub repository and Dependabot alert number, create a ServiceNow security incident for critical vulnerability tracking and assign it to the platform security team.
inputParameters:
- name: repository
in: body
type: string
description: GitHub repository in owner/repo format.
- name: alert_number
in: body
type: integer
description: Dependabot alert number.
steps:
- name: get-alert
type: call
call: github-dep.get-dependabot-alert
with:
repo: '{{repository}}'
alert_number: '{{alert_number}}'
- name: create-snow-incident
type: call
call: servicenow-dep.create-incident
with:
short_description: 'Critical vulnerability: {{get-alert.security_advisory.cve_id}} in {{repository}}'
description: 'Package: {{get-alert.dependency.package.name}}. CVE: {{get-alert.security_advisory.cve_id}}. CVSS: {{get-alert.security_advisory.cvss_score}}. Requires remediation within SLA.'
category: security
urgency: '1'
consumes:
- type: http
namespace: github-dep
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: dependabot-alerts
path: /repos/{{repo}}/dependabot/alerts/{{alert_number}}
inputParameters:
- name: repo
in: path
- name: alert_number
in: path
operations:
- name: get-dependabot-alert
method: GET
- type: http
namespace: servicenow-dep
baseUri: https://visa.service-now.com/api/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 Datadog detects network latency spikes, queries Snowflake for affected corridors, creates a Jira ticket, and alerts the network team.
naftiko: '0.5'
info:
label: Visa Payment Network Latency Investigation
description: When Datadog detects network latency spikes, queries Snowflake for affected corridors, creates a Jira ticket, and alerts the network team.
tags:
- infrastructure
- datadog
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: visa_payment_network
port: 8080
tools:
- name: handle-event
description: When Datadog detects network latency spikes, queries Snowflake for affected corridors, creates a Jira ticket, and alerts the network team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[infrastructure] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: infrastructure-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a regulatory deadline approaches, queries Snowflake for required data, creates a Jira task, and notifies the legal team via Slack.
naftiko: '0.5'
info:
label: Visa Regulatory Filing Workflow
description: When a regulatory deadline approaches, queries Snowflake for required data, creates a Jira task, and notifies the legal team via Slack.
tags:
- compliance
- snowflake
- jira
- slack
- regulatory
capability:
exposes:
- type: mcp
namespace: visa_regulatory_fili
port: 8080
tools:
- name: handle-event
description: When a regulatory deadline approaches, queries Snowflake for required data, creates a Jira task, and notifies the legal team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[compliance] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: compliance-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors PSD2 SCA compliance rates from Snowflake, creates Jira tickets for non-compliant issuers, and alerts the European operations team.
naftiko: '0.5'
info:
label: Visa PSD2 Compliance Monitoring
description: Monitors PSD2 SCA compliance rates from Snowflake, creates Jira tickets for non-compliant issuers, and alerts the European operations team.
tags:
- compliance
- snowflake
- jira
- slack
- psd2
capability:
exposes:
- type: mcp
namespace: visa_psd2_compliance
port: 8080
tools:
- name: handle-event
description: Monitors PSD2 SCA compliance rates from Snowflake, creates Jira tickets for non-compliant issuers, and alerts the European operations team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[compliance] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: compliance-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for prepaid program health metrics, updates Salesforce records, and posts a health summary to Slack.
naftiko: '0.5'
info:
label: Visa Prepaid Card Program Health Check
description: Queries Snowflake for prepaid program health metrics, updates Salesforce records, and posts a health summary to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- prepaid
capability:
exposes:
- type: mcp
namespace: visa_prepaid_card_pr
port: 8080
tools:
- name: handle-event
description: Queries Snowflake for prepaid program health metrics, updates Salesforce records, and posts a health summary to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Tracks terminal certification status from Snowflake, creates Jira tasks for expiring certifications, and notifies the terminal team via Slack.
naftiko: '0.5'
info:
label: Visa Payment Terminal Certification Tracker
description: Tracks terminal certification status from Snowflake, creates Jira tasks for expiring certifications, and notifies the terminal team via Slack.
tags:
- payments
- snowflake
- jira
- slack
- terminals
capability:
exposes:
- type: mcp
namespace: visa_payment_termina
port: 8080
tools:
- name: handle-event
description: Tracks terminal certification status from Snowflake, creates Jira tasks for expiring certifications, and notifies the terminal team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Assigns mandatory PCI-DSS and AML compliance training in Workday Learning to employees based on their role and tracks completion via a ServiceNow monitoring task.
naftiko: '0.5'
info:
label: Workday Learning Compliance Assignment
description: Assigns mandatory PCI-DSS and AML compliance training in Workday Learning to employees based on their role and tracks completion via a ServiceNow monitoring task.
tags:
- hr
- learning
- compliance
- workday
- servicenow
- pci-dss
capability:
exposes:
- type: mcp
namespace: compliance-learning
port: 8080
tools:
- name: assign-compliance-training
description: Given an employee ID and training course ID, assign the mandatory compliance course in Workday Learning and create a ServiceNow tracking task for completion monitoring.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID.
- name: course_id
in: body
type: string
description: Workday Learning course ID to assign.
- name: due_date
in: body
type: string
description: Training completion due date in YYYY-MM-DD format.
- name: compliance_type
in: body
type: string
description: Compliance category (e.g., PCI-DSS, AML, GDPR, Ethics).
steps:
- name: assign-course
type: call
call: workday-lms.assign-learning
with:
worker_id: '{{employee_id}}'
course_id: '{{course_id}}'
due_date: '{{due_date}}'
- name: create-tracking-task
type: call
call: servicenow-learning.create-task
with:
short_description: '{{compliance_type}} training assigned to employee {{employee_id}}'
description: 'Course {{course_id}} assigned. Compliance type: {{compliance_type}}. Due: {{due_date}}.'
due_date: '{{due_date}}'
consumes:
- type: http
namespace: workday-lms
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: learning-assignments
path: /learningCourseTopics
operations:
- name: assign-learning
method: POST
- type: http
namespace: servicenow-learning
baseUri: https://visa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
When a PagerDuty incident escalates to a critical severity, automatically creates a corresponding ServiceNow P1 incident and notifies the incident commander via Microsoft Teams.
naftiko: '0.5'
info:
label: PagerDuty Incident Escalation to ServiceNow
description: When a PagerDuty incident escalates to a critical severity, automatically creates a corresponding ServiceNow P1 incident and notifies the incident commander via Microsoft Teams.
tags:
- itsm
- incident-response
- pagerduty
- servicenow
- microsoft-teams
- escalation
capability:
exposes:
- type: mcp
namespace: incident-escalation
port: 8080
tools:
- name: escalate-pagerduty-incident
description: Given a PagerDuty incident ID, fetch its details, create a P1 ServiceNow incident, and notify the incident commander via Teams. Use when on-call escalation reaches critical severity.
inputParameters:
- name: pagerduty_incident_id
in: body
type: string
description: The PagerDuty incident ID to escalate.
- name: incident_commander_upn
in: body
type: string
description: UPN of the incident commander to notify via Teams.
steps:
- name: get-pd-incident
type: call
call: pagerduty.get-incident
with:
incident_id: '{{pagerduty_incident_id}}'
- name: create-snow-incident
type: call
call: servicenow-p1.create-incident
with:
short_description: 'P1 Escalation: {{get-pd-incident.title}}'
description: 'PagerDuty incident {{pagerduty_incident_id}} escalated. Service: {{get-pd-incident.service.name}}. Status: {{get-pd-incident.status}}.'
urgency: '1'
impact: '1'
- name: notify-ic
type: call
call: msteams-ic.send-message
with:
recipient_upn: '{{incident_commander_upn}}'
text: 'P1 Incident Escalated: {{get-pd-incident.title}}. ServiceNow: {{create-snow-incident.number}}. PagerDuty: {{pagerduty_incident_id}}. Bridge required immediately.'
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/{{incident_id}}
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: servicenow-p1
baseUri: https://visa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-ic
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 interchange rates are updated, queries Snowflake for affected merchants, creates Jira notification tasks, and alerts the pricing team via Slack.
naftiko: '0.5'
info:
label: Visa Interchange Rate Update Workflow
description: When interchange rates are updated, queries Snowflake for affected merchants, creates Jira notification tasks, and alerts the pricing team via Slack.
tags:
- payments
- snowflake
- jira
- slack
- interchange
capability:
exposes:
- type: mcp
namespace: visa_interchange_rat
port: 8080
tools:
- name: handle-event
description: When interchange rates are updated, queries Snowflake for affected merchants, creates Jira notification tasks, and alerts the pricing team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Pulls sprint completion metrics from Jira and posts a delivery velocity digest to the product engineering Microsoft Teams channel at the end of each sprint.
naftiko: '0.5'
info:
label: Jira Sprint Velocity and Delivery Report
description: Pulls sprint completion metrics from Jira and posts a delivery velocity digest to the product engineering Microsoft Teams channel at the end of each sprint.
tags:
- devops
- jira
- microsoft-teams
- reporting
- agile
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: digest-sprint-delivery
description: Given a Jira board ID and sprint ID, fetch sprint velocity metrics and post a delivery digest to the product engineering Teams channel.
inputParameters:
- name: board_id
in: body
type: string
description: Jira board ID.
- name: sprint_id
in: body
type: string
description: Jira sprint ID to report on.
- name: teams_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the sprint digest.
steps:
- name: get-sprint-data
type: call
call: jira.get-sprint
with:
board_id: '{{board_id}}'
sprint_id: '{{sprint_id}}'
- name: post-digest
type: call
call: msteams-product.post-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Sprint Digest: {{get-sprint-data.name}}. Done: {{get-sprint-data.issues_done}}, Incomplete: {{get-sprint-data.issues_not_done}}, Velocity: {{get-sprint-data.story_points_completed}} pts.'
consumes:
- type: http
namespace: jira
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: sprints
path: /board/{{board_id}}/sprint/{{sprint_id}}
inputParameters:
- name: board_id
in: path
- name: sprint_id
in: path
operations:
- name: get-sprint
method: GET
- type: http
namespace: msteams-product
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Generates acquirer performance reports from Snowflake, updates Salesforce account records, and posts summaries to Slack.
naftiko: '0.5'
info:
label: Visa Acquirer Performance Report
description: Generates acquirer performance reports from Snowflake, updates Salesforce account records, and posts summaries to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- acquirers
capability:
exposes:
- type: mcp
namespace: visa_acquirer_perfor
port: 8080
tools:
- name: handle-event
description: Generates acquirer performance reports from Snowflake, updates Salesforce account records, and posts summaries to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new cross-border corridor is activated, verifies regulatory compliance via Snowflake, creates a Jira task, and notifies compliance via Slack.
naftiko: '0.5'
info:
label: Visa Cross-Border Compliance Check
description: When a new cross-border corridor is activated, verifies regulatory compliance via Snowflake, creates a Jira task, and notifies compliance via Slack.
tags:
- payments
- snowflake
- jira
- slack
- cross-border
capability:
exposes:
- type: mcp
namespace: visa_cross_border_co
port: 8080
tools:
- name: handle-event
description: When a new cross-border corridor is activated, verifies regulatory compliance via Snowflake, creates a Jira task, and notifies compliance via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for contactless adoption metrics by region, updates Salesforce records, and posts a weekly digest to Slack.
naftiko: '0.5'
info:
label: Visa Contactless Payment Adoption Digest
description: Queries Snowflake for contactless adoption metrics by region, updates Salesforce records, and posts a weekly digest to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- contactless
capability:
exposes:
- type: mcp
namespace: visa_contactless_pay
port: 8080
tools:
- name: handle-event
description: Queries Snowflake for contactless adoption metrics by region, updates Salesforce records, and posts a weekly digest to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns user access permissions for payment processing systems from Okta.
naftiko: '0.5'
info:
label: Okta Payment System Access Check
description: Returns user access permissions for payment processing systems from Okta.
tags:
- security
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: okta_payment_system_
port: 8080
tools:
- name: query-data
description: Returns user access permissions for payment processing systems from Okta.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When an API version is scheduled for deprecation, identifies active consumers from Snowflake, creates Jira migration tasks, and notifies via Slack.
naftiko: '0.5'
info:
label: Visa Payment API Version Deprecation
description: When an API version is scheduled for deprecation, identifies active consumers from Snowflake, creates Jira migration tasks, and notifies via Slack.
tags:
- api-management
- snowflake
- jira
- slack
- deprecation
capability:
exposes:
- type: mcp
namespace: visa_payment_api_ver
port: 8080
tools:
- name: handle-event
description: When an API version is scheduled for deprecation, identifies active consumers from Snowflake, creates Jira migration tasks, and notifies via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[api-management] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: api-management-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Executes Snowflake analytics queries on Visa's transaction data and delivers a formatted daily transaction volume and approval rate report to the payments leadership Teams channel.
naftiko: '0.5'
info:
label: Snowflake Transaction Analytics Report
description: Executes Snowflake analytics queries on Visa's transaction data and delivers a formatted daily transaction volume and approval rate report to the payments leadership Teams channel.
tags:
- analytics
- snowflake
- microsoft-teams
- reporting
- payments
capability:
exposes:
- type: mcp
namespace: payments-analytics
port: 8080
tools:
- name: digest-transaction-analytics
description: Run a Snowflake transaction analytics query and post a daily volume and approval rate digest to the payments leadership Teams channel.
inputParameters:
- name: reporting_date
in: body
type: string
description: The reporting date in YYYY-MM-DD format.
- name: region
in: body
type: string
description: Transaction region filter (e.g., NAP, LAP, CEMEA, AP).
- name: teams_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the payments leadership team.
steps:
- name: run-analytics-query
type: call
call: snowflake.execute-query
with:
statement: SELECT region, SUM(transaction_count) as volume, AVG(approval_rate) as approval_rate, SUM(transaction_amount_usd) as total_value FROM payments.daily_transactions WHERE transaction_date = '{{reporting_date}}' AND region = '{{region}}' GROUP BY region
- name: post-digest
type: call
call: msteams-payments.post-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Transaction Digest ({{reporting_date}}, {{region}}): Volume {{run-analytics-query.volume}}, Approval rate {{run-analytics-query.approval_rate}}%, Total value ${{run-analytics-query.total_value}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://visa.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-payments
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 potential data breach is detected, creates a ServiceNow P1 incident, pages the security team, and initiates a Splunk forensic search.
naftiko: '0.5'
info:
label: Visa Cardholder Data Breach Response
description: When a potential data breach is detected, creates a ServiceNow P1 incident, pages the security team, and initiates a Splunk forensic search.
tags:
- security
- servicenow
- pagerduty
- splunk
- data-breach
capability:
exposes:
- type: mcp
namespace: visa_cardholder_data
port: 8080
tools:
- name: handle-event
description: When a potential data breach is detected, creates a ServiceNow P1 incident, pages the security team, and initiates a Splunk forensic search.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Uses Anthropic to analyze incoming regulatory compliance documents and payments industry guidelines, extracting obligations and action items stored in SharePoint for compliance teams.
naftiko: '0.5'
info:
label: Anthropic Regulatory Document Analysis
description: Uses Anthropic to analyze incoming regulatory compliance documents and payments industry guidelines, extracting obligations and action items stored in SharePoint for compliance teams.
tags:
- ai
- compliance
- anthropic
- sharepoint
- regulation
capability:
exposes:
- type: mcp
namespace: regulatory-analysis
port: 8080
tools:
- name: analyze-regulatory-document
description: Given a regulatory document text, use Anthropic to extract compliance obligations, deadlines, and required actions, then store the structured analysis in SharePoint.
inputParameters:
- name: document_text
in: body
type: string
description: The full text of the regulatory document to analyze.
- name: document_title
in: body
type: string
description: Title of the regulatory document.
- name: sharepoint_site_id
in: body
type: string
description: SharePoint site ID for the compliance document library.
- name: regulation_type
in: body
type: string
description: Type of regulation (e.g., PCI-DSS, GDPR, AML, Basel-III).
steps:
- name: analyze-document
type: call
call: anthropic.create-message
with:
model: claude-opus-4-5
max_tokens: 2048
prompt: 'Analyze this {{regulation_type}} regulatory document. Extract: 1) Key compliance obligations (bulleted list), 2) Applicable deadlines, 3) Required actions for Visa as a payment network. Be specific and concise. Document: {{document_text}}'
- name: store-analysis
type: call
call: sharepoint-compliance.upload-file
with:
site_id: '{{sharepoint_site_id}}'
folder_path: ComplianceAnalysis/{{regulation_type}}
file_name: '{{document_title}}_analysis.txt'
content: '{{analyze-document.content}}'
consumes:
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: create-message
method: POST
- type: http
namespace: sharepoint-compliance
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
Assesses merchant risk by querying transaction patterns from Snowflake, updates the risk score in Salesforce, and alerts the risk team via Slack.
naftiko: '0.5'
info:
label: Visa Merchant Risk Assessment
description: Assesses merchant risk by querying transaction patterns from Snowflake, updates the risk score in Salesforce, and alerts the risk team via Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- risk
capability:
exposes:
- type: mcp
namespace: visa_merchant_risk_a
port: 8080
tools:
- name: handle-event
description: Assesses merchant risk by querying transaction patterns from Snowflake, updates the risk score in Salesforce, and alerts the risk team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns current headcount and open positions for payment operations from Workday.
naftiko: '0.5'
info:
label: Workday Payment Ops Headcount
description: Returns current headcount and open positions for payment operations from Workday.
tags:
- hr
- workday
- workforce
capability:
exposes:
- type: mcp
namespace: workday_payment_ops_
port: 8080
tools:
- name: query-data
description: Returns current headcount and open positions for payment operations from Workday.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Queries dispute resolution time and success rate metrics from Snowflake.
naftiko: '0.5'
info:
label: Snowflake Dispute Resolution Metrics
description: Queries dispute resolution time and success rate metrics from Snowflake.
tags:
- payments
- snowflake
- disputes
capability:
exposes:
- type: mcp
namespace: snowflake_dispute_re
port: 8080
tools:
- name: query-data
description: Queries dispute resolution time and success rate metrics from Snowflake.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Monitors real-time payment SLA compliance from Datadog, creates PagerDuty incidents for breaches, and posts status to Slack.
naftiko: '0.5'
info:
label: Visa Instant Payment SLA Monitor
description: Monitors real-time payment SLA compliance from Datadog, creates PagerDuty incidents for breaches, and posts status to Slack.
tags:
- payments
- datadog
- pagerduty
- slack
- instant-payments
capability:
exposes:
- type: mcp
namespace: visa_instant_payment
port: 8080
tools:
- name: handle-event
description: Monitors real-time payment SLA compliance from Datadog, creates PagerDuty incidents for breaches, and posts status to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns the latest release details for a Visa payment service repository.
naftiko: '0.5'
info:
label: GitHub Payment Service Release Lookup
description: Returns the latest release details for a Visa payment service repository.
tags:
- devops
- github
- releases
capability:
exposes:
- type: mcp
namespace: github_payment_servi
port: 8080
tools:
- name: query-data
description: Returns the latest release details for a Visa payment service repository.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When a payment gateway health check fails, triggers failover, creates a PagerDuty incident, and notifies the NOC via Slack.
naftiko: '0.5'
info:
label: Visa Payment Gateway Failover Handler
description: When a payment gateway health check fails, triggers failover, creates a PagerDuty incident, and notifies the NOC via Slack.
tags:
- infrastructure
- pagerduty
- slack
- payments
capability:
exposes:
- type: mcp
namespace: visa_payment_gateway
port: 8080
tools:
- name: handle-event
description: When a payment gateway health check fails, triggers failover, creates a PagerDuty incident, and notifies the NOC via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[infrastructure] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: infrastructure-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new merchant application is received, screens against sanctions lists in Snowflake, creates a Jira compliance task, and notifies the compliance team.
naftiko: '0.5'
info:
label: Visa Sanctions Screening Workflow
description: When a new merchant application is received, screens against sanctions lists in Snowflake, creates a Jira compliance task, and notifies the compliance team.
tags:
- compliance
- snowflake
- jira
- slack
- sanctions
capability:
exposes:
- type: mcp
namespace: visa_sanctions_scree
port: 8080
tools:
- name: handle-event
description: When a new merchant application is received, screens against sanctions lists in Snowflake, creates a Jira compliance task, and notifies the compliance team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[compliance] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: compliance-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns status and details of a PCI compliance Jira ticket.
naftiko: '0.5'
info:
label: Jira Compliance Ticket Lookup
description: Returns status and details of a PCI compliance Jira ticket.
tags:
- compliance
- jira
- pci
capability:
exposes:
- type: mcp
namespace: jira_compliance_tick
port: 8080
tools:
- name: query-data
description: Returns status and details of a PCI compliance Jira ticket.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When payment processing latency exceeds SLA, creates a PagerDuty incident, posts to Slack, and opens a ServiceNow ticket.
naftiko: '0.5'
info:
label: Visa Payment Processing SLA Alert
description: When payment processing latency exceeds SLA, creates a PagerDuty incident, posts to Slack, and opens a ServiceNow ticket.
tags:
- payments
- pagerduty
- slack
- servicenow
- sla
capability:
exposes:
- type: mcp
namespace: visa_payment_process
port: 8080
tools:
- name: handle-event
description: When payment processing latency exceeds SLA, creates a PagerDuty incident, posts to Slack, and opens a ServiceNow ticket.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
After a major payment incident is resolved, collects timeline from ServiceNow, creates a Confluence post-mortem page, and notifies via Slack.
naftiko: '0.5'
info:
label: Visa Incident Post-Mortem Generator
description: After a major payment incident is resolved, collects timeline from ServiceNow, creates a Confluence post-mortem page, and notifies via Slack.
tags:
- operations
- servicenow
- confluence
- slack
- incident-management
capability:
exposes:
- type: mcp
namespace: visa_incident_post_m
port: 8080
tools:
- name: handle-event
description: After a major payment incident is resolved, collects timeline from ServiceNow, creates a Confluence post-mortem page, and notifies via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[operations] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: operations-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns the status and details of a payment processing incident from ServiceNow.
naftiko: '0.5'
info:
label: ServiceNow Payment Incident Lookup
description: Returns the status and details of a payment processing incident from ServiceNow.
tags:
- operations
- servicenow
- payments
capability:
exposes:
- type: mcp
namespace: servicenow_payment_i
port: 8080
tools:
- name: query-data
description: Returns the status and details of a payment processing incident from ServiceNow.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Returns the current on-call engineer for payment processing services.
naftiko: '0.5'
info:
label: PagerDuty Payment On-Call Lookup
description: Returns the current on-call engineer for payment processing services.
tags:
- operations
- pagerduty
- payments
capability:
exposes:
- type: mcp
namespace: pagerduty_payment_on
port: 8080
tools:
- name: query-data
description: Returns the current on-call engineer for payment processing services.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Monitors token provisioning rates from Snowflake, creates Jira tickets for failures, and alerts the digital payments team via Slack.
naftiko: '0.5'
info:
label: Visa Digital Wallet Provisioning Monitor
description: Monitors token provisioning rates from Snowflake, creates Jira tickets for failures, and alerts the digital payments team via Slack.
tags:
- payments
- snowflake
- jira
- slack
- tokenization
capability:
exposes:
- type: mcp
namespace: visa_digital_wallet_
port: 8080
tools:
- name: handle-event
description: Monitors token provisioning rates from Snowflake, creates Jira tickets for failures, and alerts the digital payments team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Looks up an Oracle ERP purchase order by number and returns structured header status, supplier details, and line item amounts.
naftiko: '0.5'
info:
label: Oracle ERP Purchase Order Lookup
description: Looks up an Oracle ERP purchase order by number and returns structured header status, supplier details, and line item amounts.
tags:
- finance
- procurement
- oracle
- purchase-order
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: Look up an Oracle Cloud ERP purchase order by PO number. Returns status, supplier name, total value, and currency. Use for procurement status checks and invoice validation.
inputParameters:
- name: po_number
in: body
type: string
description: The Oracle purchase order number.
call: oracle-po.get-purchase-order
with:
po_number: '{{po_number}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: supplier
type: string
mapping: $.supplier.SupplierName
- name: total_amount
type: string
mapping: $.orderAmount
- name: currency
type: string
mapping: $.currencyCode
consumes:
- type: http
namespace: oracle-po
baseUri: https://visa.fa.us2.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
Detects AWS cost anomalies across Visa's cloud accounts and creates ServiceNow FinOps tasks for the cloud engineering team to investigate and optimize.
naftiko: '0.5'
info:
label: AWS Cloud Cost Anomaly Response
description: Detects AWS cost anomalies across Visa's cloud accounts and creates ServiceNow FinOps tasks for the cloud engineering team to investigate and optimize.
tags:
- cloud
- finops
- aws
- servicenow
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-aws-cost-anomaly
description: Given an AWS account ID and billing period, detect cost anomalies and create a ServiceNow FinOps task when spend exceeds budget. Use for proactive cloud cost governance.
inputParameters:
- name: account_id
in: body
type: string
description: The AWS account ID to check.
- name: time_period_start
in: body
type: string
description: Start date for cost analysis in YYYY-MM-DD format.
- name: time_period_end
in: body
type: string
description: End date for cost analysis in YYYY-MM-DD format.
steps:
- name: get-cost-data
type: call
call: aws-cost.get-cost-and-usage
with:
account_id: '{{account_id}}'
start: '{{time_period_start}}'
end: '{{time_period_end}}'
- name: create-finops-task
type: call
call: servicenow-cloud.create-task
with:
short_description: 'AWS cost anomaly: account {{account_id}} — {{time_period_start}} to {{time_period_end}}'
description: 'Total spend: {{get-cost-data.total_cost}}. Review for budget variances and optimization opportunities.'
assignment_group: Cloud_FinOps
consumes:
- type: http
namespace: aws-cost
baseUri: https://ce.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_access_token
resources:
- name: cost-and-usage
path: /GetCostAndUsage
operations:
- name: get-cost-and-usage
method: POST
- type: http
namespace: servicenow-cloud
baseUri: https://visa.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
Submits and routes change requests for Visa payment infrastructure modifications through the CAB approval workflow in ServiceNow.
naftiko: '0.5'
info:
label: ServiceNow Change Management for Payment Infrastructure
description: Submits and routes change requests for Visa payment infrastructure modifications through the CAB approval workflow in ServiceNow.
tags:
- itsm
- change-management
- servicenow
- payment-infrastructure
- approval
capability:
exposes:
- type: mcp
namespace: payment-change-mgmt
port: 8080
tools:
- name: submit-payment-infrastructure-change
description: Given a change description and maintenance window, create a ServiceNow change request for a payment infrastructure modification and assign to the CAB for review.
inputParameters:
- name: change_description
in: body
type: string
description: Description of the proposed payment infrastructure change.
- name: risk_level
in: body
type: string
description: 'Change risk level: low, medium, high, or critical.'
- name: scheduled_start
in: body
type: string
description: Planned start datetime in ISO 8601 format.
- name: scheduled_end
in: body
type: string
description: Planned end datetime in ISO 8601 format.
call: servicenow-change.create-change-request
with:
short_description: '{{change_description}}'
risk: '{{risk_level}}'
start_date: '{{scheduled_start}}'
end_date: '{{scheduled_end}}'
assignment_group: Payment_CAB
outputParameters:
- name: change_number
type: string
mapping: $.result.number
consumes:
- type: http
namespace: servicenow-change
baseUri: https://visa.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
Generates weekly capacity utilization reports from Snowflake, creates Jira planning tasks for high-utilization systems, and posts to Slack.
naftiko: '0.5'
info:
label: Visa Payment Processing Capacity Report
description: Generates weekly capacity utilization reports from Snowflake, creates Jira planning tasks for high-utilization systems, and posts to Slack.
tags:
- infrastructure
- snowflake
- jira
- slack
- capacity
capability:
exposes:
- type: mcp
namespace: visa_payment_process
port: 8080
tools:
- name: handle-event
description: Generates weekly capacity utilization reports from Snowflake, creates Jira planning tasks for high-utilization systems, and posts to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[infrastructure] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: infrastructure-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns health status and error rates for Visa API gateway from Datadog.
naftiko: '0.5'
info:
label: Datadog API Gateway Health
description: Returns health status and error rates for Visa API gateway from Datadog.
tags:
- observability
- datadog
- api-gateway
capability:
exposes:
- type: mcp
namespace: datadog_api_gateway_
port: 8080
tools:
- name: query-data
description: Returns health status and error rates for Visa API gateway from Datadog.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When CrowdStrike detects a critical threat on a Visa endpoint, automatically contains the device, creates a ServiceNow security incident, and pages the SOC via PagerDuty.
naftiko: '0.5'
info:
label: CrowdStrike Endpoint Threat Response
description: When CrowdStrike detects a critical threat on a Visa endpoint, automatically contains the device, creates a ServiceNow security incident, and pages the SOC via PagerDuty.
tags:
- security
- crowdstrike
- servicenow
- pagerduty
- endpoint-security
- incident-response
capability:
exposes:
- type: mcp
namespace: endpoint-threat-response
port: 8080
tools:
- name: respond-to-endpoint-threat
description: Given a CrowdStrike device ID and detection ID, contain the device, create a P1 ServiceNow security incident, and trigger PagerDuty for SOC response.
inputParameters:
- name: device_id
in: body
type: string
description: CrowdStrike device ID of the compromised endpoint.
- name: detection_id
in: body
type: string
description: CrowdStrike detection ID for the threat.
- name: hostname
in: body
type: string
description: Hostname of the affected endpoint.
- name: threat_name
in: body
type: string
description: Name or type of the detected threat.
steps:
- name: contain-device
type: call
call: crowdstrike-contain.contain-host
with:
device_id: '{{device_id}}'
- name: create-security-incident
type: call
call: servicenow-cso.create-incident
with:
short_description: 'Endpoint threat: {{threat_name}} on {{hostname}}'
description: 'CrowdStrike detection {{detection_id}}: {{threat_name}} on {{hostname}} (device {{device_id}}). Host contained automatically.'
category: security
urgency: '1'
impact: '1'
- name: page-soc
type: call
call: pagerduty-soc.create-incident
with:
title: 'Endpoint threat: {{threat_name}} — {{hostname}}'
body: 'ServiceNow: {{create-security-incident.number}}. CrowdStrike detection: {{detection_id}}. Host isolated.'
service_id: SOC_SERVICE_ID
consumes:
- type: http
namespace: crowdstrike-contain
baseUri: https://api.crowdstrike.com
authentication:
type: bearer
token: $secrets.crowdstrike_token
resources:
- name: device-actions
path: /devices/entities/devices-actions/v2
operations:
- name: contain-host
method: POST
- type: http
namespace: servicenow-cso
baseUri: https://visa.service-now.com/api/now
authentication:
type: 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-soc
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Runs a PCI compliance check via Splunk, creates a Jira audit ticket for findings, and notifies the compliance team via Slack.
naftiko: '0.5'
info:
label: Visa PCI Compliance Audit Workflow
description: Runs a PCI compliance check via Splunk, creates a Jira audit ticket for findings, and notifies the compliance team via Slack.
tags:
- security
- splunk
- jira
- slack
- pci-compliance
capability:
exposes:
- type: mcp
namespace: visa_pci_compliance_
port: 8080
tools:
- name: handle-event
description: Runs a PCI compliance check via Splunk, creates a Jira audit ticket for findings, and notifies the compliance team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for developer portal API adoption metrics, creates a Jira roadmap task, and posts the digest to Slack.
naftiko: '0.5'
info:
label: Visa Developer Portal Usage Digest
description: Queries Snowflake for developer portal API adoption metrics, creates a Jira roadmap task, and posts the digest to Slack.
tags:
- api-management
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: visa_developer_porta
port: 8080
tools:
- name: handle-event
description: Queries Snowflake for developer portal API adoption metrics, creates a Jira roadmap task, and posts the digest to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[api-management] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: api-management-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors fintech partner API integration health from Datadog, creates Jira tickets for failures, and alerts the partnerships team via Slack.
naftiko: '0.5'
info:
label: Visa Fintech Partner Integration Monitor
description: Monitors fintech partner API integration health from Datadog, creates Jira tickets for failures, and alerts the partnerships team via Slack.
tags:
- api-management
- datadog
- jira
- slack
- partnerships
capability:
exposes:
- type: mcp
namespace: visa_fintech_partner
port: 8080
tools:
- name: handle-event
description: Monitors fintech partner API integration health from Datadog, creates Jira tickets for failures, and alerts the partnerships team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[api-management] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: api-management-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Generates a weekly card portfolio analytics digest from Snowflake, creates a Salesforce report record, and posts highlights to Slack.
naftiko: '0.5'
info:
label: Visa Card Portfolio Analytics Digest
description: Generates a weekly card portfolio analytics digest from Snowflake, creates a Salesforce report record, and posts highlights to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- analytics
capability:
exposes:
- type: mcp
namespace: visa_card_portfolio_
port: 8080
tools:
- name: handle-event
description: Generates a weekly card portfolio analytics digest from Snowflake, creates a Salesforce report record, and posts highlights to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Analyzes transaction routing efficiency from Snowflake, updates routing rules in the config system, and reports optimization results to Slack.
naftiko: '0.5'
info:
label: Visa Global Transaction Routing Optimizer
description: Analyzes transaction routing efficiency from Snowflake, updates routing rules in the config system, and reports optimization results to Slack.
tags:
- payments
- snowflake
- slack
- routing
capability:
exposes:
- type: mcp
namespace: visa_global_transact
port: 8080
tools:
- name: handle-event
description: Analyzes transaction routing efficiency from Snowflake, updates routing rules in the config system, and reports optimization results to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns current authorization approval rates by issuer from Snowflake analytics.
naftiko: '0.5'
info:
label: Visa Authorization Rate Check
description: Returns current authorization approval rates by issuer from Snowflake analytics.
tags:
- payments
- snowflake
- authorization
capability:
exposes:
- type: mcp
namespace: visa_authorization_r
port: 8080
tools:
- name: query-data
description: Returns current authorization approval rates by issuer from Snowflake analytics.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Initiates a business continuity test, verifies failover health via Datadog, creates a ServiceNow audit record, and reports results to Slack.
naftiko: '0.5'
info:
label: Visa Business Continuity Test Workflow
description: Initiates a business continuity test, verifies failover health via Datadog, creates a ServiceNow audit record, and reports results to Slack.
tags:
- operations
- datadog
- servicenow
- slack
- business-continuity
capability:
exposes:
- type: mcp
namespace: visa_business_contin
port: 8080
tools:
- name: handle-event
description: Initiates a business continuity test, verifies failover health via Datadog, creates a ServiceNow audit record, and reports results to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[operations] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: operations-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Okta for users with privileged application assignments and generates a quarterly access review report delivered to the CISO team via Microsoft Teams.
naftiko: '0.5'
info:
label: Okta Privileged Access Review
description: Queries Okta for users with privileged application assignments and generates a quarterly access review report delivered to the CISO team via Microsoft Teams.
tags:
- identity
- security
- okta
- microsoft-teams
- access-management
- compliance
capability:
exposes:
- type: mcp
namespace: privileged-access-review
port: 8080
tools:
- name: run-privileged-access-review
description: Fetch Okta users with privileged application group memberships and post an access review summary to the CISO Teams channel. Use for quarterly compliance reviews.
inputParameters:
- name: privileged_group_id
in: body
type: string
description: Okta group ID representing privileged application access.
- name: ciso_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the CISO team.
steps:
- name: get-privileged-users
type: call
call: okta.list-group-members
with:
group_id: '{{privileged_group_id}}'
- name: post-review-report
type: call
call: msteams-ciso.post-message
with:
channel_id: '{{ciso_channel_id}}'
text: 'Privileged Access Review: {{get-privileged-users.total}} users in privileged group {{privileged_group_id}}. Review and certify access in Okta.'
consumes:
- type: http
namespace: okta
baseUri: https://visa.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_token
placement: header
resources:
- name: group-members
path: /groups/{{group_id}}/users
inputParameters:
- name: group_id
in: path
operations:
- name: list-group-members
method: GET
- type: http
namespace: msteams-ciso
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 AML monitoring detects suspicious patterns, creates a ServiceNow investigation, queries Splunk for details, and pages the compliance team.
naftiko: '0.5'
info:
label: Visa AML Transaction Monitoring Alert
description: When AML monitoring detects suspicious patterns, creates a ServiceNow investigation, queries Splunk for details, and pages the compliance team.
tags:
- compliance
- servicenow
- splunk
- pagerduty
- aml
capability:
exposes:
- type: mcp
namespace: visa_aml_transaction
port: 8080
tools:
- name: handle-event
description: When AML monitoring detects suspicious patterns, creates a ServiceNow investigation, queries Splunk for details, and pages the compliance team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[compliance] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: compliance-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Returns partner program tier, status, and integration details from Salesforce.
naftiko: '0.5'
info:
label: Salesforce Partner Program Lookup
description: Returns partner program tier, status, and integration details from Salesforce.
tags:
- payments
- salesforce
- partners
capability:
exposes:
- type: mcp
namespace: salesforce_partner_p
port: 8080
tools:
- name: query-data
description: Returns partner program tier, status, and integration details from Salesforce.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
When real-time fraud scoring triggers an alert, blocks the transaction, creates a CrowdStrike investigation, and pages the fraud ops team.
naftiko: '0.5'
info:
label: Visa Real-Time Fraud Response
description: When real-time fraud scoring triggers an alert, blocks the transaction, creates a CrowdStrike investigation, and pages the fraud ops team.
tags:
- security
- crowdstrike
- pagerduty
- fraud-detection
capability:
exposes:
- type: mcp
namespace: visa_real_time_fraud
port: 8080
tools:
- name: handle-event
description: When real-time fraud scoring triggers an alert, blocks the transaction, creates a CrowdStrike investigation, and pages the fraud ops team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Snowflake for issuer transaction metrics, updates the Salesforce account health score, and posts a digest to Slack.
naftiko: '0.5'
info:
label: Visa Issuer Relationship Health Sync
description: Queries Snowflake for issuer transaction metrics, updates the Salesforce account health score, and posts a digest to Slack.
tags:
- payments
- snowflake
- salesforce
- slack
- issuers
capability:
exposes:
- type: mcp
namespace: visa_issuer_relation
port: 8080
tools:
- name: handle-event
description: Queries Snowflake for issuer transaction metrics, updates the Salesforce account health score, and posts a digest to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When EMV chip decline rates spike, queries Snowflake for failure patterns, creates a Jira investigation ticket, and notifies the card technology team.
naftiko: '0.5'
info:
label: Visa EMV Chip Failure Analysis
description: When EMV chip decline rates spike, queries Snowflake for failure patterns, creates a Jira investigation ticket, and notifies the card technology team.
tags:
- payments
- snowflake
- jira
- slack
- emv
capability:
exposes:
- type: mcp
namespace: visa_emv_chip_failur
port: 8080
tools:
- name: handle-event
description: When EMV chip decline rates spike, queries Snowflake for failure patterns, creates a Jira investigation ticket, and notifies the card technology team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a new merchant is approved, creates the account in Salesforce, provisions API credentials, and notifies the partner team via Slack.
naftiko: '0.5'
info:
label: Visa Merchant Onboarding Workflow
description: When a new merchant is approved, creates the account in Salesforce, provisions API credentials, and notifies the partner team via Slack.
tags:
- payments
- salesforce
- slack
- merchant-onboarding
capability:
exposes:
- type: mcp
namespace: visa_merchant_onboar
port: 8080
tools:
- name: handle-event
description: When a new merchant is approved, creates the account in Salesforce, provisions API credentials, and notifies the partner team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Fetches LinkedIn engagement analytics for Visa executive thought leadership posts and delivers a weekly performance digest to the communications team via Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Executive Thought Leadership Tracker
description: Fetches LinkedIn engagement analytics for Visa executive thought leadership posts and delivers a weekly performance digest to the communications team via Microsoft Teams.
tags:
- marketing
- linkedin
- microsoft-teams
- social-media
- reporting
- communications
capability:
exposes:
- type: mcp
namespace: exec-comms-reporting
port: 8080
tools:
- name: digest-linkedin-engagement
description: Fetch LinkedIn organic post analytics for a given organization and post a weekly engagement digest to the communications Teams channel.
inputParameters:
- name: organization_id
in: body
type: string
description: LinkedIn organization URN for Visa's company page.
- name: teams_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the communications team.
steps:
- name: get-post-analytics
type: call
call: linkedin.get-organization-follower-stats
with:
organization_id: '{{organization_id}}'
- name: post-digest
type: call
call: msteams-comms.post-message
with:
channel_id: '{{teams_channel_id}}'
text: 'LinkedIn Weekly Digest (Visa): Total followers {{get-post-analytics.followerCount}}. Organic impressions this week: {{get-post-analytics.impressionCount}}. Engagement rate: {{get-post-analytics.engagementRate}}%.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: organization-stats
path: /organizationalEntityFollowerStatistics
operations:
- name: get-organization-follower-stats
method: GET
- type: http
namespace: msteams-comms
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When merchant transaction patterns deviate from their category, flags for review in Jira, updates Salesforce risk fields, and notifies via Slack.
naftiko: '0.5'
info:
label: Visa Merchant Category Review Workflow
description: When merchant transaction patterns deviate from their category, flags for review in Jira, updates Salesforce risk fields, and notifies via Slack.
tags:
- payments
- jira
- salesforce
- slack
- merchants
capability:
exposes:
- type: mcp
namespace: visa_merchant_catego
port: 8080
tools:
- name: handle-event
description: When merchant transaction patterns deviate from their category, flags for review in Jira, updates Salesforce risk fields, and notifies via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Monitors open banking API adoption and health from Snowflake, creates Jira tasks for degraded partners, and posts metrics to Slack.
naftiko: '0.5'
info:
label: Visa Open Banking API Monitor
description: Monitors open banking API adoption and health from Snowflake, creates Jira tasks for degraded partners, and posts metrics to Slack.
tags:
- api-management
- snowflake
- jira
- slack
- open-banking
capability:
exposes:
- type: mcp
namespace: visa_open_banking_ap
port: 8080
tools:
- name: handle-event
description: Monitors open banking API adoption and health from Snowflake, creates Jira tasks for degraded partners, and posts metrics to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[api-management] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: api-management-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a dispute exceeds the resolution SLA, escalates via PagerDuty, updates ServiceNow, and notifies the dispute resolution team via Slack.
naftiko: '0.5'
info:
label: Visa Payment Dispute Escalation
description: When a dispute exceeds the resolution SLA, escalates via PagerDuty, updates ServiceNow, and notifies the dispute resolution team via Slack.
tags:
- payments
- pagerduty
- servicenow
- slack
- disputes
capability:
exposes:
- type: mcp
namespace: visa_payment_dispute
port: 8080
tools:
- name: handle-event
description: When a dispute exceeds the resolution SLA, escalates via PagerDuty, updates ServiceNow, and notifies the dispute resolution team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries Splunk for PCI-DSS required log events and generates a compliance audit report, creating a ServiceNow compliance record for the QSA review process.
naftiko: '0.5'
info:
label: Splunk PCI Compliance Log Audit
description: Queries Splunk for PCI-DSS required log events and generates a compliance audit report, creating a ServiceNow compliance record for the QSA review process.
tags:
- security
- compliance
- splunk
- servicenow
- pci-dss
- audit
capability:
exposes:
- type: mcp
namespace: pci-audit
port: 8080
tools:
- name: run-pci-log-audit
description: Query Splunk for PCI-DSS required log events over a given period, summarize findings, and create a ServiceNow compliance record for the audit trail. Use for quarterly PCI assessments.
inputParameters:
- name: audit_start
in: body
type: string
description: Start of the audit period in ISO 8601 format.
- name: audit_end
in: body
type: string
description: End of the audit period in ISO 8601 format.
- name: pci_scope
in: body
type: string
description: PCI scope identifier (e.g., CDE, connected-systems).
steps:
- name: query-logs
type: call
call: splunk-pci.search-events
with:
query: index=pci_logs earliest={{audit_start}} latest={{audit_end}} scope={{pci_scope}} | stats count by event_type, host
- name: create-compliance-record
type: call
call: servicenow-pci.create-record
with:
short_description: 'PCI log audit: {{pci_scope}} — {{audit_start}} to {{audit_end}}'
description: 'Splunk PCI audit complete. Events found: {{query-logs.total_events}}. Scope: {{pci_scope}}. Period: {{audit_start}} to {{audit_end}}.'
consumes:
- type: http
namespace: splunk-pci
baseUri: https://splunk.visa.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /search/jobs/export
operations:
- name: search-events
method: POST
- type: http
namespace: servicenow-pci
baseUri: https://visa.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: compliance-records
path: /table/compliance_finding
operations:
- name: create-record
method: POST
When a Salesforce partner opportunity reaches Closed Won, creates a corresponding Oracle ERP project record and sends a Microsoft Teams notification to the partner success team.
naftiko: '0.5'
info:
label: Salesforce Partner Opportunity Sync
description: When a Salesforce partner opportunity reaches Closed Won, creates a corresponding Oracle ERP project record and sends a Microsoft Teams notification to the partner success team.
tags:
- crm
- sales
- salesforce
- oracle
- microsoft-teams
- partner-management
capability:
exposes:
- type: mcp
namespace: crm-partner-sync
port: 8080
tools:
- name: sync-partner-opportunity
description: Given a Salesforce opportunity ID, fetch deal details, create a project in Oracle ERP, and notify the partner success Teams channel.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity record ID (18-character).
- name: partner_channel_id
in: body
type: string
description: Microsoft Teams channel ID for the partner success team.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-oracle-project
type: call
call: oracle-projects.create-project
with:
project_name: '{{get-opportunity.Name}}'
customer_name: '{{get-opportunity.Account.Name}}'
amount: '{{get-opportunity.Amount}}'
- name: notify-team
type: call
call: msteams-partner.post-message
with:
channel_id: '{{partner_channel_id}}'
text: 'Partner deal closed: {{get-opportunity.Name}} ({{get-opportunity.Amount}} {{get-opportunity.CurrencyIsoCode}}). Oracle project created: {{create-oracle-project.project_id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://visa.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: oracle-projects
baseUri: https://visa.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: projects
path: /projects
operations:
- name: create-project
method: POST
- type: http
namespace: msteams-partner
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Queries Snowflake for fraud model precision and recall metrics, creates a Jira review task, and posts the digest to Slack.
naftiko: '0.5'
info:
label: Visa Risk Model Performance Digest
description: Queries Snowflake for fraud model precision and recall metrics, creates a Jira review task, and posts the digest to Slack.
tags:
- security
- snowflake
- jira
- slack
- fraud-detection
capability:
exposes:
- type: mcp
namespace: visa_risk_model_perf
port: 8080
tools:
- name: handle-event
description: Queries Snowflake for fraud model precision and recall metrics, creates a Jira review task, and posts the digest to Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a merchant exceeds chargeback thresholds, creates a Jira investigation ticket, updates Salesforce, and alerts the risk team via Slack.
naftiko: '0.5'
info:
label: Visa Chargeback Threshold Alert
description: When a merchant exceeds chargeback thresholds, creates a Jira investigation ticket, updates Salesforce, and alerts the risk team via Slack.
tags:
- payments
- jira
- salesforce
- slack
- chargebacks
capability:
exposes:
- type: mcp
namespace: visa_chargeback_thre
port: 8080
tools:
- name: handle-event
description: When a merchant exceeds chargeback thresholds, creates a Jira investigation ticket, updates Salesforce, and alerts the risk team via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[payments] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: payments-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When transaction volumes approach capacity thresholds, queries Snowflake trends, creates a Jira planning task, and alerts infrastructure via Slack.
naftiko: '0.5'
info:
label: Visa Network Capacity Planning Alert
description: When transaction volumes approach capacity thresholds, queries Snowflake trends, creates a Jira planning task, and alerts infrastructure via Slack.
tags:
- infrastructure
- snowflake
- jira
- slack
- capacity
capability:
exposes:
- type: mcp
namespace: visa_network_capacit
port: 8080
tools:
- name: handle-event
description: When transaction volumes approach capacity thresholds, queries Snowflake trends, creates a Jira planning task, and alerts infrastructure via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[infrastructure] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: infrastructure-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries token provisioning rates and usage metrics from Snowflake.
naftiko: '0.5'
info:
label: Snowflake Tokenization Metrics Query
description: Queries token provisioning rates and usage metrics from Snowflake.
tags:
- payments
- snowflake
- tokenization
capability:
exposes:
- type: mcp
namespace: snowflake_tokenizati
port: 8080
tools:
- name: query-data
description: Queries token provisioning rates and usage metrics from Snowflake.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Generates a daily API health digest from Datadog metrics, posts to Slack, and creates Jira tickets for degraded services.
naftiko: '0.5'
info:
label: Visa Partner API Health Digest
description: Generates a daily API health digest from Datadog metrics, posts to Slack, and creates Jira tickets for degraded services.
tags:
- api-management
- datadog
- slack
- jira
capability:
exposes:
- type: mcp
namespace: visa_partner_api_hea
port: 8080
tools:
- name: handle-event
description: Generates a daily API health digest from Datadog metrics, posts to Slack, and creates Jira tickets for degraded services.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[api-management] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: api-management-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves PCI compliance audit log results from Splunk by search job ID.
naftiko: '0.5'
info:
label: Splunk PCI Log Query
description: Retrieves PCI compliance audit log results from Splunk by search job ID.
tags:
- security
- splunk
- pci-compliance
capability:
exposes:
- type: mcp
namespace: splunk_pci_log_query
port: 8080
tools:
- name: query-data
description: Retrieves PCI compliance audit log results from Splunk by search job ID.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.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 vendor is proposed, creates a security assessment in Jira, queries compliance data from Snowflake, and notifies the security team.
naftiko: '0.5'
info:
label: Visa Vendor Security Assessment Workflow
description: When a new vendor is proposed, creates a security assessment in Jira, queries compliance data from Snowflake, and notifies the security team.
tags:
- security
- jira
- snowflake
- slack
- vendor-management
capability:
exposes:
- type: mcp
namespace: visa_vendor_security
port: 8080
tools:
- name: handle-event
description: When a new vendor is proposed, creates a security assessment in Jira, queries compliance data from Snowflake, and notifies the security team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[security] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: security-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://visa.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://visa.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Generates a daily Datadog infrastructure health digest for Visa's payment processing clusters and posts the summary to the platform engineering Teams channel.
naftiko: '0.5'
info:
label: Datadog Infrastructure Health Digest
description: Generates a daily Datadog infrastructure health digest for Visa's payment processing clusters and posts the summary to the platform engineering Teams channel.
tags:
- observability
- datadog
- microsoft-teams
- reporting
- infrastructure
capability:
exposes:
- type: mcp
namespace: infra-health-digest
port: 8080
tools:
- name: digest-infrastructure-health
description: Fetch Datadog host and monitor summary for payment processing infrastructure and post a daily health digest to the platform Teams channel.
inputParameters:
- name: environment_tag
in: body
type: string
description: Datadog environment tag to filter (e.g., env:production,service:payment-auth).
- name: platform_channel_id
in: body
type: string
description: Microsoft Teams channel ID for platform engineering.
steps:
- name: get-host-status
type: call
call: datadog-infra.list-hosts
with:
filter: '{{environment_tag}}'
- name: get-monitor-summary
type: call
call: datadog-infra.get-monitor-summary
with:
tags: '{{environment_tag}}'
- name: post-digest
type: call
call: msteams-platform.post-message
with:
channel_id: '{{platform_channel_id}}'
text: 'Infrastructure Health ({{environment_tag}}): {{get-host-status.total_matching}} hosts. Monitors — OK: {{get-monitor-summary.ok_count}}, Warn: {{get-monitor-summary.warn_count}}, Critical: {{get-monitor-summary.critical_count}}.'
consumes:
- type: http
namespace: datadog-infra
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: hosts
path: /hosts
operations:
- name: list-hosts
method: GET
- name: monitor-summary
path: /monitor/summary
operations:
- name: get-monitor-summary
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: post-message
method: POST
When a new hire start date approaches, creates an Azure AD account, provisions SailPoint entitlements, opens a ServiceNow hardware request, and notifies the manager via Microsoft Teams.
naftiko: '0.5'
info:
label: New Hire IT Provisioning Workflow
description: When a new hire start date approaches, creates an Azure AD account, provisions SailPoint entitlements, opens a ServiceNow hardware request, and notifies the manager via Microsoft Teams.
tags:
- hr
- onboarding
- azure-active-directory
- sailpoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: new_hire_it_provisio
port: 8080
tools:
- name: new-hire
description: Given an execution date, run the new hire it provisioning 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.NEW_HIRE_IT_PROVISIONING_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NEW_HIRE_IT_PROVISIONING_WORKFLOW_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: hr
short_description: New Hire IT Provisioning Workflow processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_new_hire_it_provisio_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves application health status from New Relic including response time, error rate, and throughput.
naftiko: '0.5'
info:
label: New Relic Application Health Check
description: Retrieves application health status from New Relic including response time, error rate, and throughput.
tags:
- monitoring
- new-relic
- banking
capability:
exposes:
- type: mcp
namespace: apm-health
port: 8080
tools:
- name: get-app-health
description: Given a New Relic application ID, return the current response time, error rate, and throughput. Use for application performance monitoring.
inputParameters:
- name: app_id
in: body
type: string
description: The New Relic application ID.
call: newrelic.get-application
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
- name: throughput
type: string
mapping: $.application.application_summary.throughput
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apikey
key: X-Api-Key
value: $secrets.newrelic_api_key
placement: header
resources:
- name: applications
path: /applications/{{app_id}}.json
inputParameters:
- name: app_id
in: path
operations:
- name: get-application
method: GET
Triggers Azure Synapse data pipelines, monitors execution status, logs metrics in Snowflake, and alerts the data engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Synapse Data Pipeline Orchestrator
description: Triggers Azure Synapse data pipelines, monitors execution status, logs metrics in Snowflake, and alerts the data engineering team via Microsoft Teams.
tags:
- data-engineering
- azure-synapse-analytics
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_synapse_data_p
port: 8080
tools:
- name: azure-synapse
description: Given an execution date, run the azure synapse data pipeline orchestrator 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_SYNAPSE_DATA_PIPELINE_ORCHESTRATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_SYNAPSE_DATA_PIPELINE_ORCHESTRATOR_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_synapse_data_p_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Checks the last refresh status of a Power BI dataset and returns the refresh state and timestamp.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh Check
description: Checks the last refresh status of a Power BI dataset and returns the refresh state and timestamp.
tags:
- analytics
- power-bi
- banking
capability:
exposes:
- type: mcp
namespace: bi-ops
port: 8080
tools:
- name: get-refresh-status
description: Given a Power BI group ID and dataset ID, return the last refresh status and end time. Use for dashboard reliability monitoring.
inputParameters:
- name: group_id
in: body
type: string
description: The Power BI workspace (group) ID.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.get-refresh-history
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
outputParameters:
- name: status
type: string
mapping: $.value[0].status
- name: end_time
type: string
mapping: $.value[0].endTime
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: refreshes
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-refresh-history
method: GET
When a new commercial banking customer is approved, creates a Salesforce onboarding case, links the account record, and notifies the relationship manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Customer Onboarding Case Creation
description: When a new commercial banking customer is approved, creates a Salesforce onboarding case, links the account record, and notifies the relationship manager via Microsoft Teams.
tags:
- customer-onboarding
- salesforce
- microsoft-teams
- commercial-banking
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: create-customer-onboarding-case
description: Given a Salesforce account ID and relationship manager UPN, create a customer onboarding case linked to the account and notify the relationship manager in Microsoft Teams. Use when a commercial banking customer completes credit approval.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID for the approved commercial customer.
- name: rm_upn
in: body
type: string
description: Microsoft UPN of the assigned relationship manager.
- name: product_type
in: body
type: string
description: Product being onboarded (e.g. Commercial Credit Line, Treasury Services).
steps:
- name: get-account
type: call
call: salesforce-acct.get-account
with:
account_id: '{{account_id}}'
- name: create-onboarding-case
type: call
call: salesforce-case.create-case
with:
account_id: '{{account_id}}'
subject: 'Customer Onboarding: {{get-account.name}} — {{product_type}}'
type: New_Customer_Onboarding
- name: notify-rm
type: call
call: msteams-rm.send-message
with:
recipient_upn: '{{rm_upn}}'
text: 'Onboarding case created for {{get-account.name}}: {{product_type}}. Salesforce case: {{create-onboarding-case.case_number}}. Please complete onboarding tasks in Salesforce.'
consumes:
- type: http
namespace: salesforce-acct
baseUri: https://wellsfargo.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-case
baseUri: https://wellsfargo.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-rm
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 a mortgage application is submitted, retrieves the applicant record from Salesforce, runs document verification via Snowflake, and notifies the underwriting team in Microsoft Teams.
naftiko: '0.5'
info:
label: Mortgage Document Verification Chain
description: When a mortgage application is submitted, retrieves the applicant record from Salesforce, runs document verification via Snowflake, and notifies the underwriting team in Microsoft Teams.
tags:
- lending
- salesforce
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: mortgage-ops
port: 8080
tools:
- name: verify-mortgage-docs
description: Given a Salesforce case ID for a mortgage application, pull applicant details, run document checks, and notify underwriters. Use when new mortgage applications enter the pipeline.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce case ID for the mortgage application.
- name: applicant_email
in: body
type: string
description: The applicant email address.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: verify-docs
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM LENDING.DOC_VERIFICATION WHERE case_id='{{case_id}}'
- name: notify-underwriting
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_underwriting_channel
text: 'Mortgage doc verification complete for case {{case_id}} ({{get-case.applicant_name}}). Status: {{verify-docs.status}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://wellsfargo.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: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 GitHub Actions workflow fails on a protected branch, creates a Jira bug in the engineering project and posts an alert to the platform engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: GitHub CI/CD Pipeline Failure to Jira
description: When a GitHub Actions workflow fails on a protected branch, creates a Jira bug in the engineering project and posts an alert to the platform engineering Microsoft Teams channel.
tags:
- devops
- cicd
- github
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a failed GitHub Actions run, create a Jira bug and alert the platform engineering Teams channel. Invoke on protected-branch pipeline failures for critical banking application repositories.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository in owner/repo format (e.g. wells-fargo/core-banking-api).
- name: workflow_run_id
in: body
type: string
description: GitHub Actions workflow run ID that failed.
- name: branch
in: body
type: string
description: Branch name where the failure occurred.
- name: commit_sha
in: body
type: string
description: Commit SHA of the failed run.
steps:
- name: get-run-details
type: call
call: github.get-workflow-run
with:
repo: '{{repo}}'
run_id: '{{workflow_run_id}}'
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: PLAT
issuetype: Bug
summary: '[CI Failure] {{repo}} / {{branch}} — {{get-run-details.name}}'
description: 'Workflow: {{get-run-details.name}}
Branch: {{branch}}
Commit: {{commit_sha}}
URL: {{get-run-details.html_url}}'
- name: alert-platform-eng
type: call
call: msteams-platform.send-message
with:
channel_id: $secrets.teams_platform_channel_id
text: 'CI/CD failure: {{repo}} | Branch: {{branch}} | Jira: {{create-jira-bug.key}} | Run: {{get-run-details.html_url}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-runs
path: /repos/{{repo}}/actions/runs/{{run_id}}
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: https://wellsfargo.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-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-message
method: POST
Pulls client portfolio performance from Snowflake, enriches with FactSet market data, and sends personalized review digests to relationship managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Wealth Management Client Review Digest
description: Pulls client portfolio performance from Snowflake, enriches with FactSet market data, and sends personalized review digests to relationship managers via Microsoft Teams.
tags:
- wealth-management
- snowflake
- factset
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wealth_management_cl
port: 8080
tools:
- name: wealth-management
description: Given an execution date, run the wealth management client review 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.WEALTH_MANAGEMENT_CLIENT_REVIEW_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WEALTH_MANAGEMENT_CLIENT_REVIEW_DIGEST_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_wealth_management_cl_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls data classification results from Microsoft Purview, aggregates in Snowflake, and distributes the compliance summary to the data governance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Microsoft Purview Data Classification Report
description: Pulls data classification results from Microsoft Purview, aggregates in Snowflake, and distributes the compliance summary to the data governance team via Microsoft Teams.
tags:
- data-governance
- microsoft-purview
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: microsoft_purview_da
port: 8080
tools:
- name: microsoft-purview
description: Given an execution date, run the microsoft purview data classification report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.MICROSOFT_PURVIEW_DATA_CLASSIFICATION_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.MICROSOFT_PURVIEW_DATA_CLASSIFICATION_REPORT_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_microsoft_purview_da_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 SAP purchase order by number and returns status, vendor, and total amount.
naftiko: '0.5'
info:
label: SAP Purchase Order Detail Lookup
description: Retrieves a SAP purchase order by number and returns status, vendor, and total amount.
tags:
- procurement
- sap
- banking
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: Given a SAP purchase order number, return the PO status, vendor name, total amount, and currency. Use for procurement verification.
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_amount
type: string
mapping: $.d.TotalAmount
consumes:
- type: http
namespace: sap
baseUri: https://wellsfargo-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
Files a Suspicious Activity Report by extracting transaction patterns from Snowflake, creating a compliance case in Salesforce, uploading documentation to SharePoint, and alerting the BSA team.
naftiko: '0.5'
info:
label: AML Suspicious Activity Report Chain
description: Files a Suspicious Activity Report by extracting transaction patterns from Snowflake, creating a compliance case in Salesforce, uploading documentation to SharePoint, and alerting the BSA team.
tags:
- compliance
- aml
- snowflake
- salesforce
- sharepoint
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: bsa-ops
port: 8080
tools:
- name: file-sar
description: Given a customer ID and suspicious transaction IDs, extract patterns, create a compliance case, upload supporting docs, and alert BSA. Use when AML monitoring flags suspicious activity.
inputParameters:
- name: customer_id
in: body
type: string
description: The customer identifier.
- name: transaction_ids
in: body
type: string
description: Comma-separated list of suspicious transaction IDs.
steps:
- name: extract-patterns
type: call
call: snowflake.execute-statement
with:
statement: CALL COMPLIANCE.EXTRACT_SAR_PATTERNS('{{customer_id}}', '{{transaction_ids}}')
- name: create-case
type: call
call: salesforce.create-case
with:
subject: 'SAR Filing: Customer {{customer_id}}'
description: '{{extract-patterns.summary}}'
- name: upload-docs
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.bsa_site_id
file_name: SAR_{{customer_id}}_{{create-case.id}}.pdf
- name: alert-bsa
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_bsa_channel
text: 'SAR filed for customer {{customer_id}}. Case: {{create-case.id}}. Patterns: {{extract-patterns.pattern_count}} flagged transactions.'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /sites/{{site_id}}/drive/root:/{{file_name}}:/content
inputParameters:
- name: site_id
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: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Evaluates ServiceNow change requests against historical failure data in Snowflake, assigns a risk score, and notifies the CAB via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Risk Assessor
description: Evaluates ServiceNow change requests against historical failure data in Snowflake, assigns a risk score, and notifies the CAB via Microsoft Teams.
tags:
- itsm
- servicenow
- snowflake
- microsoft-teams
- change-management
capability:
exposes:
- type: mcp
namespace: servicenow_change_ri
port: 8080
tools:
- name: servicenow-change
description: Given an execution date, run the servicenow change risk assessor 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.SERVICENOW_CHANGE_RISK_ASSESSOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SERVICENOW_CHANGE_RISK_ASSESSOR_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: itsm
short_description: ServiceNow Change Risk Assessor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_servicenow_change_ri_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 Keycloak SSO sessions for anomalous patterns, logs findings in Snowflake, creates ServiceNow security incidents, and alerts the IAM team via Microsoft Teams.
naftiko: '0.5'
info:
label: Keycloak SSO Session Audit
description: Audits Keycloak SSO sessions for anomalous patterns, logs findings in Snowflake, creates ServiceNow security incidents, and alerts the IAM team via Microsoft Teams.
tags:
- security
- keycloak
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: keycloak_sso_session
port: 8080
tools:
- name: keycloak-sso
description: Given an execution date, run the keycloak sso session 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.KEYCLOAK_SSO_SESSION_AUDIT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.KEYCLOAK_SSO_SESSION_AUDIT_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: Keycloak SSO Session Audit processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_keycloak_sso_session_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Salesforce account record by account ID, returning name, industry, and annual revenue.
naftiko: '0.5'
info:
label: Salesforce Account Detail Lookup
description: Retrieves a Salesforce account record by account ID, returning name, industry, and annual revenue.
tags:
- crm
- salesforce
- banking
capability:
exposes:
- type: mcp
namespace: crm-lookup
port: 8080
tools:
- name: get-account
description: Given a Salesforce account ID, return the account name, industry, and annual revenue. Use for relationship manager inquiries.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: name
type: string
mapping: $.Name
- name: industry
type: string
mapping: $.Industry
- name: annual_revenue
type: string
mapping: $.AnnualRevenue
consumes:
- type: http
namespace: salesforce
baseUri: https://wellsfargo.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
Processes Checkmarx SAST scan results, logs findings in Snowflake, creates Jira remediation tickets for critical vulnerabilities, and alerts the AppSec team via Microsoft Teams.
naftiko: '0.5'
info:
label: Checkmarx SAST Scan Result Handler
description: Processes Checkmarx SAST scan results, logs findings in Snowflake, creates Jira remediation tickets for critical vulnerabilities, and alerts the AppSec team via Microsoft Teams.
tags:
- security
- checkmarx
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: checkmarx_sast_scan_
port: 8080
tools:
- name: checkmarx-sast
description: Given an execution date, run the checkmarx sast scan result 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.CHECKMARX_SAST_SCAN_RESULT_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CHECKMARX_SAST_SCAN_RESULT_HANDLER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Checkmarx SAST Scan Result Handler - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_checkmarx_sast_scan__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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 an SAP Concur expense report exceeds policy limits, logs the exception in Snowflake, creates a ServiceNow approval task, and notifies the manager via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Expense Over-Limit Escalation
description: When an SAP Concur expense report exceeds policy limits, logs the exception in Snowflake, creates a ServiceNow approval task, and notifies the manager via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_concur_expense_o
port: 8080
tools:
- name: sap-concur
description: Given an execution date, run the sap concur expense over-limit 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.SAP_CONCUR_EXPENSE_OVER_LIMIT_ESCALATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CONCUR_EXPENSE_OVER_LIMIT_ESCALATION_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Concur Expense Over-Limit Escalation processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_concur_expense_o_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the current month cost summary for an Azure resource group for FinOps reporting.
naftiko: '0.5'
info:
label: Azure Resource Group Cost Summary
description: Retrieves the current month cost summary for an Azure resource group for FinOps reporting.
tags:
- finops
- microsoft-azure
- banking
capability:
exposes:
- type: mcp
namespace: cloud-cost
port: 8080
tools:
- name: get-cost-summary
description: Given an Azure subscription ID and resource group name, return the current month cost total and currency. Use for cloud FinOps reviews.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID.
- name: resource_group
in: body
type: string
description: The Azure resource group name.
call: azure.get-cost
with:
subscription_id: '{{subscription_id}}'
resource_group: '{{resource_group}}'
outputParameters:
- name: total_cost
type: string
mapping: $.properties.rows[0][0]
- name: currency
type: string
mapping: $.properties.rows[0][1]
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}}/resourceGroups/{{resource_group}}/providers/Microsoft.CostManagement/query?api-version=2023-03-01
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
operations:
- name: get-cost
method: POST
When Palo Alto Networks detects a critical threat, logs the event in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams.
naftiko: '0.5'
info:
label: Palo Alto Firewall Threat Handler
description: When Palo Alto Networks detects a critical threat, logs the event in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams.
tags:
- security
- palo-alto-networks
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: palo_alto_firewall_t
port: 8080
tools:
- name: palo-alto
description: Given an execution date, run the palo alto firewall threat 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.PALO_ALTO_FIREWALL_THREAT_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PALO_ALTO_FIREWALL_THREAT_HANDLER_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: Palo Alto Firewall Threat Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_palo_alto_firewall_t_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: 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://wellsfargo-splunk.example.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: events
path: /receivers/simple
operations:
- name: index-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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries SAP for open journal entries and unreconciled items that block period close, then creates a ServiceNow task for each blocker and notifies the finance Slack channel.
naftiko: '0.5'
info:
label: SAP General Ledger Period Close Check
description: Queries SAP for open journal entries and unreconciled items that block period close, then creates a ServiceNow task for each blocker and notifies the finance Slack channel.
tags:
- finance
- sap
- servicenow
- slack
- period-close
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: check-gl-period-close
description: Given a SAP company code and fiscal period, check for open general ledger items, create ServiceNow tasks for each blocker, and post a readiness summary to the finance Slack channel. Use at month-end for period close orchestration.
inputParameters:
- name: company_code
in: body
type: string
description: SAP company code (e.g. WFC1 for Wells Fargo US).
- name: fiscal_period
in: body
type: string
description: Fiscal period in YYYYMM format (e.g. 202503).
steps:
- name: get-open-items
type: call
call: sap.get-gl-open-items
with:
company_code: '{{company_code}}'
fiscal_period: '{{fiscal_period}}'
- name: create-close-task
type: call
call: servicenow-finance.create-task
with:
category: finance_period_close
short_description: 'GL close blocker: {{company_code}} — {{fiscal_period}}'
description: 'Open GL items blocking period close: {{get-open-items.open_count}} items, total {{get-open-items.total_amount}}'
- name: post-summary
type: call
call: slack-finance.post-message
with:
channel: finance-close-ops
text: 'Period close readiness {{company_code}}/{{fiscal_period}}: {{get-open-items.open_count}} blocking items. Task: {{create-close-task.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://wfc-s4.sap.com/sap/opu/odata/sap/ZFI_GL_CLOSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: gl-open-items
path: /GLOpenItemSet
inputParameters:
- name: company_code
in: query
- name: fiscal_period
in: query
operations:
- name: get-gl-open-items
method: GET
- type: http
namespace: servicenow-finance
baseUri: https://wellsfargo.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
Performs a vendor risk assessment by pulling vendor data from SAP, running risk scoring in Snowflake, creating a Jira review ticket, and notifying procurement.
naftiko: '0.5'
info:
label: Vendor Risk Assessment Workflow
description: Performs a vendor risk assessment by pulling vendor data from SAP, running risk scoring in Snowflake, creating a Jira review ticket, and notifying procurement.
tags:
- procurement
- sap
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: Given a SAP vendor number, pull vendor master data, compute risk score, open a Jira review ticket, and notify procurement. Use for annual vendor risk reviews.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor number.
steps:
- name: get-vendor
type: call
call: sap.get-vendor
with:
vendor_number: '{{vendor_number}}'
- name: compute-risk
type: call
call: snowflake.execute-statement
with:
statement: CALL PROCUREMENT.COMPUTE_VENDOR_RISK('{{vendor_number}}')
- name: create-review
type: call
call: jira.create-issue
with:
project: VRISK
issue_type: Task
summary: 'Vendor risk review: {{get-vendor.name}} ({{vendor_number}}) - Score: {{compute-risk.risk_score}}'
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_procurement_channel
text: 'Vendor risk assessment complete for {{get-vendor.name}}: score {{compute-risk.risk_score}}. Review: {{create-review.key}}.'
consumes:
- type: http
namespace: sap
baseUri: https://wellsfargo-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_Supplier('{{vendor_number}}')
inputParameters:
- name: vendor_number
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs Dealogic investment banking deal pipeline data to Snowflake, compares against targets, and notifies the deal team via Microsoft Teams.
naftiko: '0.5'
info:
label: Dealogic Deal Pipeline Sync
description: Syncs Dealogic investment banking deal pipeline data to Snowflake, compares against targets, and notifies the deal team via Microsoft Teams.
tags:
- investment-banking
- dealogic
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dealogic_deal_pipeli
port: 8080
tools:
- name: dealogic-deal
description: Given an execution date, run the dealogic deal pipeline sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DEALOGIC_DEAL_PIPELINE_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DEALOGIC_DEAL_PIPELINE_SYNC_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_dealogic_deal_pipeli_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Submits a ServiceNow change request for a planned banking system change and notifies the change approver in Microsoft Teams when the CAB review is scheduled.
naftiko: '0.5'
info:
label: ServiceNow Change Request Approval Workflow
description: Submits a ServiceNow change request for a planned banking system change and notifies the change approver in Microsoft Teams when the CAB review is scheduled.
tags:
- itsm
- servicenow
- microsoft-teams
- change-management
- approval
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-system-change-request
description: Given change details and an approver UPN, submit a ServiceNow change request and notify the approver in Microsoft Teams. Use for planned changes to core banking, payments, and compliance systems.
inputParameters:
- name: short_description
in: body
type: string
description: Brief description of the planned change.
- name: description
in: body
type: string
description: Detailed description including impact assessment and rollback plan.
- name: scheduled_start
in: body
type: string
description: Scheduled start time in ISO 8601 format.
- name: approver_upn
in: body
type: string
description: Microsoft UPN of the change approver.
steps:
- name: create-change-request
type: call
call: servicenow-chg.create-change
with:
short_description: '{{short_description}}'
description: '{{description}}'
start_date: '{{scheduled_start}}'
type: normal
- name: notify-approver
type: call
call: msteams-chg.send-message
with:
recipient_upn: '{{approver_upn}}'
text: 'Change request submitted for your approval: {{short_description}}. Change number: {{create-change-request.number}}. Scheduled: {{scheduled_start}}. Review in ServiceNow.'
consumes:
- type: http
namespace: servicenow-chg
baseUri: https://wellsfargo.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-chg
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
Sends a message to a Microsoft Teams channel for team notifications and alerts.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Message Sender
description: Sends a message to a Microsoft Teams channel for team notifications and alerts.
tags:
- communication
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: send-channel-message
description: Given a Teams channel ID and message text, post the message to the channel. Use for automated notifications.
inputParameters:
- name: channel_id
in: body
type: string
description: The Microsoft Teams channel ID.
- name: message_text
in: body
type: string
description: The message body text to send.
call: msteams.send-message
with:
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: 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 wire transfer exceeds the threshold, pulls transaction details from Snowflake, creates a ServiceNow approval task, and escalates to the treasury team via Microsoft Teams.
naftiko: '0.5'
info:
label: Wire Transfer Approval Escalation
description: When a high-value wire transfer exceeds the threshold, pulls transaction details from Snowflake, creates a ServiceNow approval task, and escalates to the treasury team via Microsoft Teams.
tags:
- treasury
- snowflake
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: treasury-ops
port: 8080
tools:
- name: escalate-wire-transfer
description: Given a wire transfer ID and amount, verify the transaction, create an approval task, and notify treasury. Use for wire transfers above the auto-approval limit.
inputParameters:
- name: transfer_id
in: body
type: string
description: The wire transfer transaction ID.
- name: amount
in: body
type: string
description: The transfer amount in USD.
steps:
- name: get-transfer
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM TREASURY.WIRE_TRANSFERS WHERE transfer_id='{{transfer_id}}'
- name: create-approval
type: call
call: servicenow.create-incident
with:
category: wire_approval
short_description: 'Wire transfer approval: {{transfer_id}} (${{amount}})'
- name: notify-treasury
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_treasury_channel
text: 'Wire transfer {{transfer_id}} for ${{amount}} requires approval. Task: {{create-approval.number}}. Beneficiary: {{get-transfer.beneficiary}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs data quality checks against Snowflake SLA definitions, logs results, creates ServiceNow incidents for violations, and alerts data stewards via Microsoft Teams.
naftiko: '0.5'
info:
label: Snowflake Data Quality SLA Monitor
description: Runs data quality checks against Snowflake SLA definitions, logs results, creates ServiceNow incidents for violations, and alerts data stewards via Microsoft Teams.
tags:
- data-quality
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: snowflake_data_quali
port: 8080
tools:
- name: snowflake-data
description: Given an execution date, run the snowflake data quality sla 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.SNOWFLAKE_DATA_QUALITY_SLA_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SNOWFLAKE_DATA_QUALITY_SLA_MONITOR_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: data-quality
short_description: Snowflake Data Quality SLA Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_snowflake_data_quali_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 Service Bus dead-letter queues, logs failed messages in Snowflake, creates Jira investigation tickets, and alerts the integration team via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Service Bus Dead Letter Handler
description: Monitors Azure Service Bus dead-letter queues, logs failed messages in Snowflake, creates Jira investigation tickets, and alerts the integration team via Microsoft Teams.
tags:
- integration
- azure-service-bus
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_service_bus_de
port: 8080
tools:
- name: azure-service
description: Given an execution date, run the azure service bus dead letter handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_SERVICE_BUS_DEAD_LETTER_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_SERVICE_BUS_DEAD_LETTER_HANDLER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Azure Service Bus Dead Letter Handler - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_service_bus_de_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates a digital banking release by checking the GitHub Actions pipeline, running smoke tests via Datadog, and posting results to Microsoft Teams.
naftiko: '0.5'
info:
label: Digital Banking Release Validation
description: Validates a digital banking release by checking the GitHub Actions pipeline, running smoke tests via Datadog, and posting results to Microsoft Teams.
tags:
- devops
- github-actions
- datadog
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: release-ops
port: 8080
tools:
- name: validate-release
description: Given a GitHub repository and release tag, verify CI pipeline passed, trigger synthetic tests, and notify the release team. Use after each digital banking deployment.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name.
- name: release_tag
in: body
type: string
description: The release tag (e.g., v2.5.1).
steps:
- name: check-pipeline
type: call
call: github.get-workflow-run
with:
repo: '{{repo_name}}'
tag: '{{release_tag}}'
- name: run-synthetics
type: call
call: datadog.trigger-synthetics
with:
test_ids: $secrets.digital_banking_test_ids
- name: notify-release
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_release_channel
text: 'Release {{release_tag}} for {{repo_name}}: CI {{check-pipeline.conclusion}}, synthetics {{run-synthetics.status}}.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-runs
path: /repos/wellsfargo/{{repo}}/actions/runs?branch={{tag}}
inputParameters:
- name: repo
in: path
- name: tag
in: query
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: synthetics
path: /synthetics/tests/trigger
operations:
- name: trigger-synthetics
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Snowflake task history for failed ETL jobs supporting core banking and compliance data feeds, creates ServiceNow tickets for failures, and notifies the data engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Health Monitor
description: Queries Snowflake task history for failed ETL jobs supporting core banking and compliance data feeds, creates ServiceNow tickets for failures, and notifies the data engineering team via Microsoft Teams.
tags:
- data
- snowflake
- servicenow
- microsoft-teams
- monitoring
- etl
capability:
exposes:
- type: mcp
namespace: data-pipeline-health
port: 8080
tools:
- name: monitor-etl-pipeline-health
description: Given a Snowflake schema and lookback window in hours, check for failed task runs, create a ServiceNow task for each failure, and post a health summary to the data-engineering Teams channel. Use for daily ETL health checks on banking data pipelines.
inputParameters:
- name: schema_name
in: body
type: string
description: Snowflake schema to check (e.g. BANKING.ETL_CORE).
- name: lookback_hours
in: body
type: integer
description: Hours of task history to inspect (e.g. 24).
steps:
- name: check-task-failures
type: call
call: snowflake-etl.execute-statement
with:
statement: SELECT name, state, error_message, scheduled_time FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(SCHEDULED_TIME_RANGE_START=>DATEADD('hour', -{{lookback_hours}}, CURRENT_TIMESTAMP()))) WHERE STATE = 'FAILED'
- name: create-failure-ticket
type: call
call: servicenow-data.create-task
with:
category: data_pipeline
short_description: ETL failures in {{schema_name}} — last {{lookback_hours}}h
description: 'Failed Snowflake tasks detected: {{check-task-failures.row_count}} failures
{{check-task-failures.results}}'
- name: notify-data-eng
type: call
call: msteams-dataeng.send-message
with:
channel_id: $secrets.teams_dataeng_channel_id
text: 'Pipeline health: {{schema_name}} — {{check-task-failures.row_count}} failures in last {{lookback_hours}}h. ServiceNow: {{create-failure-ticket.number}}.'
consumes:
- type: http
namespace: snowflake-etl
baseUri: https://wellsfargo.snowflakecomputing.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-data
baseUri: https://wellsfargo.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-dataeng
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 GitHub Dependabot vulnerability alerts, logs them in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Dependabot Vulnerability Triage
description: Processes GitHub Dependabot vulnerability alerts, logs them 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_vu
port: 8080
tools:
- name: github-dependabot
description: Given an execution date, run the github dependabot vulnerability 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_VULNERABILITY_TRIAGE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_DEPENDABOT_VULNERABILITY_TRIAGE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: GitHub Dependabot Vulnerability Triage - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_dependabot_vu_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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 regulatory documents from SharePoint, summarizes them using the OpenAI API, stores summaries in Snowflake, and distributes to the legal team via Microsoft Teams.
naftiko: '0.5'
info:
label: OpenAI Document Summarization Pipeline
description: Retrieves regulatory documents from SharePoint, summarizes them using the OpenAI API, stores summaries in Snowflake, and distributes to the legal team via Microsoft Teams.
tags:
- ai
- openai
- sharepoint
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: openai_document_summ
port: 8080
tools:
- name: openai-document
description: Given an execution date, run the openai document summarization 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.OPENAI_DOCUMENT_SUMMARIZATION_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.OPENAI_DOCUMENT_SUMMARIZATION_PIPELINE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_openai_document_summ_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 Confluence page by ID and returns the title, body content, and last modified date.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Lookup
description: Retrieves a Confluence page by ID and returns the title, body content, and last modified date.
tags:
- documentation
- confluence
- banking
capability:
exposes:
- type: mcp
namespace: wiki-lookup
port: 8080
tools:
- name: get-page
description: Given a Confluence page ID, return the page title, content body, and last modified date. Use for knowledge base lookups.
inputParameters:
- name: page_id
in: body
type: string
description: The Confluence page ID.
call: confluence.get-page
with:
page_id: '{{page_id}}'
outputParameters:
- name: title
type: string
mapping: $.title
- name: body
type: string
mapping: $.body.storage.value
- name: last_modified
type: string
mapping: $.version.when
consumes:
- type: http
namespace: confluence
baseUri: https://wellsfargo.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /content/{{page_id}}?expand=body.storage,version
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
When Splunk Enterprise Security generates a critical notable event, creates a ServiceNow P1 security incident and posts a triage summary to the SOC Microsoft Teams channel.
naftiko: '0.5'
info:
label: Splunk SIEM Alert to Incident Chain
description: When Splunk Enterprise Security generates a critical notable event, creates a ServiceNow P1 security incident and posts a triage summary to the SOC Microsoft Teams channel.
tags:
- security
- splunk
- servicenow
- microsoft-teams
- secops
- siem
capability:
exposes:
- type: mcp
namespace: siem-ops
port: 8080
tools:
- name: handle-siem-alert
description: Given a Splunk notable event ID, severity, and description, create a ServiceNow security incident and alert the SOC Teams channel. Invoke on critical or high Splunk ES notable events for financial system threats.
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: event_description
in: body
type: string
description: Human-readable description of the notable event.
- name: affected_system
in: body
type: string
description: Name of the affected banking system or application.
steps:
- name: create-si-incident
type: call
call: servicenow-siem.create-incident
with:
category: security
subcategory: siem_alert
impact: '{{severity}}'
short_description: 'SIEM alert: {{event_description}} on {{affected_system}}'
description: 'Splunk event {{event_id}}: {{event_description}}. Affected: {{affected_system}}. Severity: {{severity}}.'
- name: alert-soc-team
type: call
call: msteams-siem.send-message
with:
channel_id: $secrets.teams_soc_channel_id
text: 'SIEM Incident: {{event_description}} | System: {{affected_system}} | Severity: {{severity}} | ServiceNow: {{create-si-incident.number}} | Splunk: {{event_id}}'
consumes:
- type: http
namespace: servicenow-siem
baseUri: https://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: security-incidents
path: /table/sn_si_incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-siem
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Scans vulnerability data in Snowflake, creates Jira remediation tickets for critical findings, and alerts the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: Cybersecurity Vulnerability Remediation Tracker
description: Scans vulnerability data in Snowflake, creates Jira remediation tickets for critical findings, and alerts the security team via Microsoft Teams.
tags:
- security
- vulnerability
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cybersecurity_vulner
port: 8080
tools:
- name: cybersecurity-vulnerability
description: Given an execution date, run the cybersecurity vulnerability remediation 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.CYBERSECURITY_VULNERABILITY_REMEDIATION_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CYBERSECURITY_VULNERABILITY_REMEDIATION_TRACKER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Cybersecurity Vulnerability Remediation Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_cybersecurity_vulner_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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
Returns current headcount by department, cost center, and business line from Workday for finance and workforce planning reporting.
naftiko: '0.5'
info:
label: Workday Headcount and Cost Center Report
description: Returns current headcount by department, cost center, and business line from Workday for finance and workforce planning reporting.
tags:
- hr
- finance
- workday
- reporting
- headcount
capability:
exposes:
- type: mcp
namespace: hr-finance-reporting
port: 8080
tools:
- name: get-headcount-report
description: Returns active employee headcount grouped by department, cost center, and business line from Workday. Use for workforce planning, regulatory staffing disclosures, and budget reviews.
call: workday.get-headcount
outputParameters:
- name: workers
type: array
mapping: $.data[*]
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: headcount
path: /wellsfargo/workers
operations:
- name: get-headcount
method: GET
When a Figma design is marked as ready, creates Jira development tickets with design links, and notifies the engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Figma Design Handoff Workflow
description: When a Figma design is marked as ready, creates Jira development tickets with design links, and notifies the engineering team via Microsoft Teams.
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: figma_design_handoff
port: 8080
tools:
- name: figma-design
description: Given an execution date, run the figma design handoff workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.FIGMA_DESIGN_HANDOFF_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.FIGMA_DESIGN_HANDOFF_WORKFLOW_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Figma Design Handoff Workflow - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_figma_design_handoff_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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
Reconciles Bloomberg AIM trade records against Snowflake settlement data, flags breaks, and notifies the middle office via Microsoft Teams.
naftiko: '0.5'
info:
label: Bloomberg AIM Trade Reconciliation
description: Reconciles Bloomberg AIM trade records against Snowflake settlement data, flags breaks, and notifies the middle office via Microsoft Teams.
tags:
- trading
- bloomberg
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bloomberg_aim_trade_
port: 8080
tools:
- name: bloomberg-aim
description: Given an execution date, run the bloomberg aim trade reconciliation 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.BLOOMBERG_AIM_TRADE_RECONCILIATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.BLOOMBERG_AIM_TRADE_RECONCILIATION_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_bloomberg_aim_trade__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks loan origination status by querying Snowflake for pipeline data, updating the Salesforce opportunity, and publishing a summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Loan Origination Status Tracker
description: Tracks loan origination status by querying Snowflake for pipeline data, updating the Salesforce opportunity, and publishing a summary to Microsoft Teams.
tags:
- lending
- snowflake
- salesforce
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: lending-ops
port: 8080
tools:
- name: track-loan-status
description: Given a loan application ID, pull pipeline status from Snowflake, sync to Salesforce, and notify the originations team. Use for daily loan pipeline reviews.
inputParameters:
- name: loan_app_id
in: body
type: string
description: The loan application ID.
steps:
- name: get-pipeline-status
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM LENDING.LOAN_PIPELINE WHERE app_id='{{loan_app_id}}'
- name: update-opportunity
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{get-pipeline-status.sf_opportunity_id}}'
stage: '{{get-pipeline-status.current_stage}}'
- name: notify-originations
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_lending_channel
text: 'Loan {{loan_app_id}} status: {{get-pipeline-status.current_stage}}. Updated in Salesforce.'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.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: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates PCI-DSS compliance scanning by triggering Palo Alto vulnerability scans, storing results in Snowflake, creating remediation tickets in Jira, and notifying the security team.
naftiko: '0.5'
info:
label: PCI-DSS Compliance Scan Chain
description: Orchestrates PCI-DSS compliance scanning by triggering Palo Alto vulnerability scans, storing results in Snowflake, creating remediation tickets in Jira, and notifying the security team.
tags:
- security
- pci
- palo-alto-networks
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: security-compliance
port: 8080
tools:
- name: run-pci-scan
description: Given a target environment and scan scope, run vulnerability scans, record findings, create remediation tickets, and alert security. Use for quarterly PCI-DSS compliance.
inputParameters:
- name: environment
in: body
type: string
description: Target environment (PRODUCTION, STAGING, DR).
- name: scan_scope
in: body
type: string
description: Scan scope (FULL, DELTA, CARDHOLDER_ONLY).
steps:
- name: trigger-scan
type: call
call: paloalto.run-scan
with:
environment: '{{environment}}'
scope: '{{scan_scope}}'
- name: store-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO SECURITY.PCI_SCAN_RESULTS VALUES ('{{environment}}', '{{scan_scope}}', CURRENT_TIMESTAMP)
- name: create-remediation
type: call
call: jira.create-issue
with:
project: PCIDSS
issue_type: Task
summary: 'PCI scan findings: {{environment}} ({{scan_scope}}) - {{trigger-scan.finding_count}} issues'
- name: notify-security
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_security_channel
text: 'PCI-DSS scan complete for {{environment}}: {{trigger-scan.finding_count}} findings. Remediation: {{create-remediation.key}}.'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.wellsfargo.com/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.paloalto_api_key
placement: header
resources:
- name: scans
path: /vulnerability/scan
operations:
- name: run-scan
method: POST
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies unused artifacts in JFrog Artifactory, logs cleanup candidates in Snowflake, creates Jira cleanup tasks, and notifies the DevOps team via Microsoft Teams.
naftiko: '0.5'
info:
label: JFrog Artifactory Artifact Cleanup
description: Identifies unused artifacts in JFrog Artifactory, logs cleanup candidates in Snowflake, creates Jira cleanup tasks, and notifies the DevOps team via Microsoft Teams.
tags:
- devops
- jfrog-artifactory
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: jfrog_artifactory_ar
port: 8080
tools:
- name: jfrog-artifactory
description: Given an execution date, run the jfrog artifactory artifact cleanup 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.JFROG_ARTIFACTORY_ARTIFACT_CLEANUP LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.JFROG_ARTIFACTORY_ARTIFACT_CLEANUP_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: JFrog Artifactory Artifact Cleanup - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_jfrog_artifactory_ar_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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 Salesforce opportunity is closed (won or lost), syncs the outcome data to Snowflake for sales analytics and posts a notification to the sales leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: Salesforce Opportunity Win/Loss Snowflake Sync
description: When a Salesforce opportunity is closed (won or lost), syncs the outcome data to Snowflake for sales analytics and posts a notification to the sales leadership Microsoft Teams channel.
tags:
- sales
- salesforce
- snowflake
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: sync-opportunity-outcome
description: Given a Salesforce opportunity ID and close type (won or lost), retrieve full opportunity details, write the record to Snowflake sales analytics, and notify the sales leadership Teams channel. Invoke when an opportunity stage changes to Closed Won or Closed Lost.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID (18-character).
- name: close_type
in: body
type: string
description: 'Close outcome: won or lost.'
steps:
- name: get-opportunity
type: call
call: salesforce-opp.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: write-to-snowflake
type: call
call: snowflake-sales.execute-statement
with:
statement: INSERT INTO SALES.OPPORTUNITY_OUTCOMES VALUES ('{{opportunity_id}}', '{{get-opportunity.name}}', '{{close_type}}', {{get-opportunity.amount}}, '{{get-opportunity.close_date}}')
- name: notify-sales-leadership
type: call
call: msteams-sales-ops.send-message
with:
channel_id: $secrets.teams_sales_channel_id
text: 'Opportunity {{close_type}}: {{get-opportunity.name}} — {{get-opportunity.amount}} {{get-opportunity.currency_iso_code}}. Closed by {{get-opportunity.owner_name}}.'
consumes:
- type: http
namespace: salesforce-opp
baseUri: https://wellsfargo.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: snowflake-sales
baseUri: https://wellsfargo.snowflakecomputing.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-sales-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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Executes a read-only SQL query against Snowflake and returns the result set for ad-hoc analytics.
naftiko: '0.5'
info:
label: Snowflake Ad-Hoc Query Executor
description: Executes a read-only SQL query against Snowflake and returns the result set for ad-hoc analytics.
tags:
- data
- snowflake
- banking
capability:
exposes:
- type: mcp
namespace: data-query
port: 8080
tools:
- name: execute-query
description: Given a SQL statement, execute it against the Wells Fargo Snowflake warehouse and return the result set. Use for ad-hoc reporting queries.
inputParameters:
- name: sql_statement
in: body
type: string
description: The SQL SELECT statement to execute.
call: snowflake.execute-statement
with:
statement: '{{sql_statement}}'
outputParameters:
- name: row_count
type: integer
mapping: $.resultSetMetaData.numRows
- name: rows
type: array
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Prepares stress test data by aggregating loan portfolios in Snowflake, validates data quality, refreshes Power BI reports, and notifies the CCAR team via Microsoft Teams.
naftiko: '0.5'
info:
label: Quarterly Stress Test Data Preparation
description: Prepares stress test data by aggregating loan portfolios in Snowflake, validates data quality, refreshes Power BI reports, and notifies the CCAR team via Microsoft Teams.
tags:
- risk
- regulatory
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quarterly_stress_tes
port: 8080
tools:
- name: quarterly-stress
description: Given an execution date, run the quarterly stress test data preparation 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.QUARTERLY_STRESS_TEST_DATA_PREPARATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.QUARTERLY_STRESS_TEST_DATA_PREPARATION_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_quarterly_stress_tes_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 Qlik Sense application usage patterns from Snowflake, identifies underutilized assets, creates Jira optimization tasks, and notifies the BI team via Microsoft Teams.
naftiko: '0.5'
info:
label: Qlik Sense App Usage Analyzer
description: Analyzes Qlik Sense application usage patterns from Snowflake, identifies underutilized assets, creates Jira optimization tasks, and notifies the BI team via Microsoft Teams.
tags:
- analytics
- qlik-sense
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: qlik_sense_app_usage
port: 8080
tools:
- name: qlik-sense
description: Given an execution date, run the qlik sense app usage 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.QLIK_SENSE_APP_USAGE_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.QLIK_SENSE_APP_USAGE_ANALYZER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Qlik Sense App Usage Analyzer - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_qlik_sense_app_usage_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers Power Query data model refreshes, validates row counts in Snowflake, and notifies the BI team via Microsoft Teams.
naftiko: '0.5'
info:
label: Power Query Data Model Refresh Chain
description: Triggers Power Query data model refreshes, validates row counts in Snowflake, and notifies the BI team via Microsoft Teams.
tags:
- analytics
- power-query
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: power_query_data_mod
port: 8080
tools:
- name: power-query
description: Given an execution date, run the power query data model refresh 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.POWER_QUERY_DATA_MODEL_REFRESH_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.POWER_QUERY_DATA_MODEL_REFRESH_CHAIN_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_power_query_data_mod_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 IBM MQ queue depths from Snowflake metrics, flags queues approaching capacity, creates Jira tasks, and alerts the middleware team via Microsoft Teams.
naftiko: '0.5'
info:
label: IBM MQ Queue Depth Monitor
description: Monitors IBM MQ queue depths from Snowflake metrics, flags queues approaching capacity, creates Jira tasks, and alerts the middleware team via Microsoft Teams.
tags:
- integration
- ibm-mq
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ibm_mq_queue_depth_m
port: 8080
tools:
- name: ibm-mq
description: Given an execution date, run the ibm mq queue depth 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.IBM_MQ_QUEUE_DEPTH_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.IBM_MQ_QUEUE_DEPTH_MONITOR_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: IBM MQ Queue Depth Monitor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ibm_mq_queue_depth_m_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the health of a SQL Server database, returning size, active connections, and backup status.
naftiko: '0.5'
info:
label: SQL Server Database Health Check
description: Checks the health of a SQL Server database, returning size, active connections, and backup status.
tags:
- database
- sql-server
- infrastructure
capability:
exposes:
- type: mcp
namespace: database
port: 8080
tools:
- name: get-db-health
description: Given a SQL Server instance and database name, retrieve health metrics. Use for database monitoring.
inputParameters:
- name: instance
in: body
type: string
description: The SQL Server instance name.
- name: database_name
in: body
type: string
description: The database name.
call: snowflake.execute-statement
with:
statement: SELECT * FROM DBA.SQLSERVER_HEALTH WHERE instance='{{instance}}' AND db_name='{{database_name}}'
outputParameters:
- name: size_gb
type: string
mapping: $.data.rows[0].size_gb
- name: backup_status
type: string
mapping: $.data.rows[0].backup_status
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
When deposit rates change, updates the rate table in Snowflake, refreshes the Power BI dashboard, and notifies branch managers and treasury via Microsoft Teams.
naftiko: '0.5'
info:
label: Deposit Rate Change Propagation
description: When deposit rates change, updates the rate table in Snowflake, refreshes the Power BI dashboard, and notifies branch managers and treasury via Microsoft Teams.
tags:
- treasury
- snowflake
- power-bi
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: rates-ops
port: 8080
tools:
- name: propagate-rate-change
description: Given a product type and new rate, update the rate table, refresh dashboards, and notify stakeholders. Use when the ALCO committee approves rate changes.
inputParameters:
- name: product_type
in: body
type: string
description: The deposit product type (e.g., SAVINGS, CD_12M, MMDA).
- name: new_rate
in: body
type: string
description: The new interest rate as a decimal (e.g., 0.0425).
steps:
- name: update-rate
type: call
call: snowflake.execute-statement
with:
statement: UPDATE TREASURY.DEPOSIT_RATES SET rate={{new_rate}}, effective_date=CURRENT_DATE WHERE product='{{product_type}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: $secrets.rates_dataset_id
- name: notify-treasury
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_treasury_channel
text: 'Deposit rate update: {{product_type}} now {{new_rate}}. Dashboard refreshed.'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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
- 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
Executes SAP period-end close steps, validates balancing entries in Snowflake, and notifies the accounting team via Microsoft Teams with close status.
naftiko: '0.5'
info:
label: SAP Period-End Close Automation
description: Executes SAP period-end close steps, validates balancing entries in Snowflake, and notifies the accounting team via Microsoft Teams with close status.
tags:
- finance
- sap
- snowflake
- microsoft-teams
- accounting
capability:
exposes:
- type: mcp
namespace: sap_period_end_close
port: 8080
tools:
- name: sap-period
description: Given an execution date, run the sap period-end close 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_END_CLOSE_AUTOMATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PERIOD_END_CLOSE_AUTOMATION_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_period_end_close_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls Apigee API traffic and latency metrics, stores analytics in Snowflake, and distributes performance reports to the API team via Microsoft Teams.
naftiko: '0.5'
info:
label: Apigee API Gateway Performance Report
description: Pulls Apigee API traffic and latency metrics, stores analytics in Snowflake, and distributes performance reports to the API team via Microsoft Teams.
tags:
- api-management
- apigee
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apigee_api_gateway_p
port: 8080
tools:
- name: apigee-api
description: Given an execution date, run the apigee api gateway performance report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.APIGEE_API_GATEWAY_PERFORMANCE_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.APIGEE_API_GATEWAY_PERFORMANCE_REPORT_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_apigee_api_gateway_p_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 mortgage application documents from Salesforce, validates completeness in Snowflake, and notifies the underwriting team via Microsoft Teams.
naftiko: '0.5'
info:
label: Mortgage Application Document Verification
description: Retrieves mortgage application documents from Salesforce, validates completeness in Snowflake, and notifies the underwriting team via Microsoft Teams.
tags:
- banking
- mortgage
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mortgage-ops
port: 8080
tools:
- name: verify-mortgage-docs
description: Given a mortgage application ID, verify document completeness and notify underwriting. Use for mortgage pipeline processing.
inputParameters:
- name: application_id
in: body
type: string
description: The mortgage application ID.
steps:
- name: get-application
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{application_id}}'
- name: check-documents
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as doc_count FROM MORTGAGE.APPLICATION_DOCS WHERE app_id = '{{application_id}}'
- name: notify-underwriting
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_underwriting_channel
text: 'Mortgage app {{application_id}} ({{get-application.stage}}): {{check-documents.doc_count}} documents uploaded.'
consumes:
- type: http
namespace: salesforce
baseUri: https://wellsfargo.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: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Triggers a Power BI dataset refresh for regulatory compliance dashboards and posts the refresh status to the compliance Microsoft Teams channel.
naftiko: '0.5'
info:
label: Power BI Regulatory Dashboard Refresh
description: Triggers a Power BI dataset refresh for regulatory compliance dashboards and posts the refresh status to the compliance Microsoft Teams channel.
tags:
- compliance
- data
- power-bi
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: compliance-reporting
port: 8080
tools:
- name: refresh-regulatory-dashboard
description: Given a Power BI workspace ID and dataset ID, trigger a refresh for a regulatory compliance dashboard and post the result to the compliance Teams channel. Use after Snowflake regulatory data pipelines complete.
inputParameters:
- name: workspace_id
in: body
type: string
description: Power BI workspace (group) ID.
- name: dataset_id
in: body
type: string
description: Power BI dataset ID for the regulatory dashboard.
- name: report_name
in: body
type: string
description: Human-readable name of the regulatory report (e.g. CCAR Dashboard).
steps:
- name: trigger-refresh
type: call
call: powerbi.trigger-refresh
with:
group_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: notify-compliance
type: call
call: msteams-pbi.send-message
with:
channel_id: $secrets.teams_compliance_channel_id
text: 'Power BI refresh triggered: {{report_name}} (dataset {{dataset_id}}). Status: {{trigger-refresh.status}}.'
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-refreshes
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams-pbi
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a fraud alert is raised, pulls the transaction details from Snowflake, creates a Jira investigation ticket, and sends an urgent notification to the fraud operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Fraud Alert Investigation Chain
description: When a fraud alert is raised, pulls the transaction details from Snowflake, creates a Jira investigation ticket, and sends an urgent notification to the fraud operations team via Microsoft Teams.
tags:
- fraud
- snowflake
- jira
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: investigate-fraud-alert
description: Given a transaction ID and alert severity, pull transaction details, open a Jira investigation ticket, and notify fraud ops. Use when real-time fraud alerts are triggered.
inputParameters:
- name: transaction_id
in: body
type: string
description: The transaction ID flagged for fraud.
- name: alert_severity
in: body
type: string
description: Alert severity level (HIGH, MEDIUM, LOW).
steps:
- name: get-transaction
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM FRAUD.TRANSACTIONS WHERE txn_id='{{transaction_id}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FRAUD
issue_type: Bug
summary: 'Fraud alert [{{alert_severity}}]: txn {{transaction_id}}'
- name: notify-fraud-ops
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_fraud_channel
text: 'Fraud alert for txn {{transaction_id}} ({{alert_severity}}). Investigation ticket: {{create-ticket.key}}. Amount: {{get-transaction.amount}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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
Synchronizes branch staffing forecasts by pulling headcount from Workday, comparing to traffic data in Snowflake, and sending staffing recommendations to branch managers.
naftiko: '0.5'
info:
label: Branch Staffing Forecast Sync
description: Synchronizes branch staffing forecasts by pulling headcount from Workday, comparing to traffic data in Snowflake, and sending staffing recommendations to branch managers.
tags:
- hr
- workday
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: workforce-planning
port: 8080
tools:
- name: sync-branch-staffing
description: Given a branch ID and forecast period, pull Workday headcount, compare to foot traffic data, and notify branch management with recommendations. Use for quarterly staffing reviews.
inputParameters:
- name: branch_id
in: body
type: string
description: The branch location ID.
- name: forecast_period
in: body
type: string
description: The forecast period in YYYY-QN format.
steps:
- name: get-headcount
type: call
call: workday.get-headcount
with:
location_id: '{{branch_id}}'
- name: get-traffic
type: call
call: snowflake.execute-statement
with:
statement: SELECT avg_daily_traffic FROM OPS.BRANCH_TRAFFIC WHERE branch_id='{{branch_id}}' AND period='{{forecast_period}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_branch_mgmt_channel
text: 'Branch {{branch_id}} staffing: current headcount {{get-headcount.count}}, avg daily traffic {{get-traffic.avg_daily_traffic}} for {{forecast_period}}.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/wellsfargo
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: headcount
path: /workers?location={{location_id}}
inputParameters:
- name: location_id
in: query
operations:
- name: get-headcount
method: GET
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Checks the current status of a Datadog monitor and returns the overall state and last triggered time.
naftiko: '0.5'
info:
label: Datadog Monitor Status Check
description: Checks the current status of a Datadog monitor and returns the overall state and last triggered time.
tags:
- monitoring
- datadog
- banking
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-monitor-status
description: Given a Datadog monitor ID, return the current overall status and last triggered timestamp. Use for operational health checks.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID.
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
outputParameters:
- name: overall_state
type: string
mapping: $.overall_state
- name: last_triggered
type: string
mapping: $.overall_state_modified
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
Retrieves cost center details from SAP including responsible person and company code.
naftiko: '0.5'
info:
label: SAP Cost Center Lookup
description: Retrieves cost center details from SAP including responsible person and company code.
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 the master data. Use for budget allocation and 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
- name: responsible_person
type: string
mapping: $.d.PersonResponsible
consumes:
- type: http
namespace: sap
baseUri: https://wellsfargo-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
Pulls Salesforce win/loss data into Snowflake, generates analysis reports, refreshes Power BI dashboards, and sends insights to sales leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Opportunity Win/Loss Analyzer
description: Pulls Salesforce win/loss data into Snowflake, generates analysis reports, refreshes Power BI dashboards, and sends insights to sales leadership via Microsoft Teams.
tags:
- sales
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_opportuni
port: 8080
tools:
- name: salesforce-opportunity
description: Given an execution date, run the salesforce opportunity win/loss 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.SALESFORCE_OPPORTUNITY_WIN_LOSS_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_OPPORTUNITY_WIN_LOSS_ANALYZER_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_opportuni_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Checks the health status of a specified Azure resource, returning availability state.
naftiko: '0.5'
info:
label: Azure Resource Health Check
description: Checks the health status of a specified Azure resource, returning availability state.
tags:
- cloud
- microsoft-azure
- infrastructure
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: get-resource-health
description: Given an Azure resource ID, retrieve its current availability status. Use for infrastructure monitoring.
inputParameters:
- name: resource_id
in: body
type: string
description: The full Azure resource ID path.
call: azure.get-resource-health
with:
resource_id: '{{resource_id}}'
outputParameters:
- name: availability_state
type: string
mapping: $.properties.availabilityState
consumes:
- type: http
namespace: azure
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: resource-health
path: /{{resource_id}}/providers/Microsoft.ResourceHealth/availabilityStatuses/current
inputParameters:
- name: resource_id
in: path
operations:
- name: get-resource-health
method: GET
Manages IT change requests by creating a ServiceNow change record, running pre-change health checks in Datadog, and notifying the CAB via Microsoft Teams.
naftiko: '0.5'
info:
label: IT Change Management Chain
description: Manages IT change requests by creating a ServiceNow change record, running pre-change health checks in Datadog, and notifying the CAB via Microsoft Teams.
tags:
- itsm
- servicenow
- datadog
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: process-change-request
description: Given a change description, risk level, and implementation window, create the ServiceNow record, validate system health, and notify the CAB. Use for production change management.
inputParameters:
- name: change_description
in: body
type: string
description: Description of the proposed change.
- name: risk_level
in: body
type: string
description: 'Risk level: Low, Medium, High, Emergency.'
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
description: '{{change_description}}'
risk: '{{risk_level}}'
- name: health-check
type: call
call: datadog.get-monitor
with:
monitor_id: $secrets.prod_health_monitor_id
- name: notify-cab
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_cab_channel
text: 'Change request {{create-change.number}}: {{change_description}}. Risk: {{risk_level}}. System health: {{health-check.overall_state}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://wellsfargo.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: 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: 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 Grafana dashboard by UID and returns the title, panel count, and last updated timestamp.
naftiko: '0.5'
info:
label: Grafana Dashboard Info Lookup
description: Retrieves a Grafana dashboard by UID and returns the title, panel count, and last updated timestamp.
tags:
- monitoring
- grafana
- banking
capability:
exposes:
- type: mcp
namespace: observability-dash
port: 8080
tools:
- name: get-dashboard
description: Given a Grafana dashboard UID, return the dashboard title, number of panels, and last updated time. Use for observability catalog queries.
inputParameters:
- name: dashboard_uid
in: body
type: string
description: The Grafana dashboard UID.
call: grafana.get-dashboard
with:
uid: '{{dashboard_uid}}'
outputParameters:
- name: title
type: string
mapping: $.dashboard.title
- name: panel_count
type: integer
mapping: $.dashboard.panels.length
- name: updated
type: string
mapping: $.meta.updated
consumes:
- type: http
namespace: grafana
baseUri: https://grafana.wellsfargo.com/api
authentication:
type: bearer
token: $secrets.grafana_token
resources:
- name: dashboards
path: /dashboards/uid/{{uid}}
inputParameters:
- name: uid
in: path
operations:
- name: get-dashboard
method: GET
Executes a Snowflake query to produce a regulatory reporting dataset, validates row counts, and posts the validation summary to the compliance Microsoft Teams channel.
naftiko: '0.5'
info:
label: Snowflake Regulatory Reporting Data Product
description: Executes a Snowflake query to produce a regulatory reporting dataset, validates row counts, and posts the validation summary to the compliance Microsoft Teams channel.
tags:
- compliance
- data
- snowflake
- microsoft-teams
- regulatory-reporting
capability:
exposes:
- type: mcp
namespace: regulatory-reporting
port: 8080
tools:
- name: run-regulatory-report
description: Given a report name and reporting date, execute the corresponding Snowflake regulatory query, validate output row counts against expected thresholds, and post a validation summary to the compliance Teams channel. Use for OCC, Fed, and CFPB reporting runs.
inputParameters:
- name: report_name
in: body
type: string
description: Regulatory report identifier (e.g. CALL_REPORT, HMDA, CCAR).
- name: as_of_date
in: body
type: string
description: Report as-of date in ISO 8601 format (YYYY-MM-DD).
- name: expected_min_rows
in: body
type: integer
description: Minimum expected row count for validation.
steps:
- name: execute-report-query
type: call
call: snowflake-reg.execute-statement
with:
statement: CALL REGULATORY.RUN_REPORT('{{report_name}}', '{{as_of_date}}')
- name: notify-compliance
type: call
call: msteams-compliance.send-message
with:
channel_id: $secrets.teams_compliance_channel_id
text: 'Regulatory report {{report_name}} as of {{as_of_date}} completed. Row count: {{execute-report-query.row_count}} (min expected: {{expected_min_rows}}). Status: {{execute-report-query.status}}.'
consumes:
- type: http
namespace: snowflake-reg
baseUri: https://wellsfargo.snowflakecomputing.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-compliance
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 GitHub repository including description, default branch, and open issue count.
naftiko: '0.5'
info:
label: GitHub Repository Info Lookup
description: Retrieves metadata for a GitHub repository including description, default branch, and open issue count.
tags:
- devops
- github
- banking
capability:
exposes:
- type: mcp
namespace: scm-lookup
port: 8080
tools:
- name: get-repo-info
description: Given a GitHub org and repo name, return the description, default branch, and open issues count. Use for developer portal lookups.
inputParameters:
- name: org
in: body
type: string
description: The GitHub organization name.
- name: repo
in: body
type: string
description: The GitHub repository name.
call: github.get-repo
with:
org: '{{org}}'
repo: '{{repo}}'
outputParameters:
- name: description
type: string
mapping: $.description
- name: default_branch
type: string
mapping: $.default_branch
- name: open_issues
type: integer
mapping: $.open_issues_count
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
When an employee separation is processed in Workday, creates a ServiceNow offboarding task for access revocation and notifies HR Operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Employee Separation and Access Revocation
description: When an employee separation is processed in Workday, creates a ServiceNow offboarding task for access revocation and notifies HR Operations via Microsoft Teams.
tags:
- hr
- offboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-employee-offboarding
description: Given a Workday employee ID and separation date, create a ServiceNow access revocation task and notify HR Operations in Microsoft Teams. Invoke on any voluntary or involuntary separation at Wells Fargo.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: Workday worker ID of the departing employee.
- name: separation_date
in: body
type: string
description: Last working day in ISO 8601 format (YYYY-MM-DD).
- name: separation_type
in: body
type: string
description: 'Separation type: voluntary, involuntary, retirement, transfer.'
steps:
- name: get-worker
type: call
call: workday-off.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: create-offboarding-task
type: call
call: servicenow-off.create-task
with:
category: hr_offboarding
short_description: 'Offboarding: {{get-worker.full_name}} — {{separation_date}}'
assigned_group: IT_Access_Management
description: Employee {{workday_employee_id}} separating on {{separation_date}} ({{separation_type}}). All system access must be revoked.
- name: notify-hr-ops
type: call
call: msteams-hrops.send-message
with:
channel_id: $secrets.teams_hrops_channel_id
text: 'Offboarding initiated: {{get-worker.full_name}} ({{workday_employee_id}}). Separation: {{separation_date}} ({{separation_type}}). ServiceNow task: {{create-offboarding-task.number}}.'
consumes:
- type: http
namespace: workday-off
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /wellsfargo/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-off
baseUri: https://wellsfargo.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-hrops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an n8n automation workflow fails, captures error details, creates a ServiceNow incident, and notifies the automation team via Microsoft Teams.
naftiko: '0.5'
info:
label: n8n Workflow Failure Handler
description: When an n8n automation workflow fails, captures error details, creates a ServiceNow incident, and notifies the automation team via Microsoft Teams.
tags:
- automation
- n8n
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: n8n_workflow_failure
port: 8080
tools:
- name: n8n-workflow
description: Given an execution date, run the n8n workflow failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.N8N_WORKFLOW_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.N8N_WORKFLOW_FAILURE_HANDLER_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: automation
short_description: n8n Workflow Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_n8n_workflow_failure_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles daily cash positions across banking systems in Snowflake, flags discrepancies, and notifies the treasury team via Microsoft Teams.
naftiko: '0.5'
info:
label: Treasury Cash Position Reconciliation
description: Reconciles daily cash positions across banking systems in Snowflake, flags discrepancies, and notifies the treasury team via Microsoft Teams.
tags:
- treasury
- finance
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: treasury_cash_positi
port: 8080
tools:
- name: treasury-cash
description: Given an execution date, run the treasury cash position reconciliation 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.TREASURY_CASH_POSITION_RECONCILIATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.TREASURY_CASH_POSITION_RECONCILIATION_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_treasury_cash_positi_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 ATM error logs in Snowflake, identifies machines needing maintenance, creates ServiceNow work orders, and notifies the ATM operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: ATM Fleet Maintenance Scheduler
description: Analyzes ATM error logs in Snowflake, identifies machines needing maintenance, creates ServiceNow work orders, and notifies the ATM operations team via Microsoft Teams.
tags:
- operations
- atm
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: atm_fleet_maintenanc
port: 8080
tools:
- name: atm-fleet
description: Given an execution date, run the atm fleet maintenance scheduler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ATM_FLEET_MAINTENANCE_SCHEDULER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ATM_FLEET_MAINTENANCE_SCHEDULER_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: operations
short_description: ATM Fleet Maintenance Scheduler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_atm_fleet_maintenanc_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 Apache Kafka consumer group lag from Snowflake metrics, creates Jira tickets when lag exceeds thresholds, and alerts the streaming platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Apache Kafka Consumer Lag Monitor
description: Monitors Apache Kafka consumer group lag from Snowflake metrics, creates Jira tickets when lag exceeds thresholds, and alerts the streaming platform team via Microsoft Teams.
tags:
- data-engineering
- apache-kafka
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apache_kafka_consume
port: 8080
tools:
- name: apache-kafka
description: Given an execution date, run the apache kafka consumer lag 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.APACHE_KAFKA_CONSUMER_LAG_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.APACHE_KAFKA_CONSUMER_LAG_MONITOR_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Apache Kafka Consumer Lag Monitor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_apache_kafka_consume_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies employees who have not completed benefits enrollment in Workday, logs status in Snowflake, and sends reminders via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Benefits Open Enrollment Reminder
description: Identifies employees who have not completed benefits enrollment in Workday, logs status 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_REMINDER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLMENT_REMINDER_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://wellsfargo.snowflakecomputing.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 a quarterly regulatory compliance report by pulling data from Snowflake, refreshing Power BI dashboards, uploading to SharePoint, and notifying stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Compliance Report Generator
description: Generates a quarterly regulatory compliance report by pulling data from Snowflake, refreshing Power BI dashboards, uploading to SharePoint, and notifying stakeholders via Microsoft Teams.
tags:
- compliance
- snowflake
- power-bi
- sharepoint
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: compliance-reporting
port: 8080
tools:
- name: generate-compliance-report
description: Given a regulatory report type and reporting period, extract compliance data, refresh the Power BI dashboard, upload to SharePoint, and notify stakeholders. Use for OCC and Fed reporting cycles.
inputParameters:
- name: report_type
in: body
type: string
description: The regulatory report type (e.g., CCAR, DFAST, BSA).
- name: reporting_period
in: body
type: string
description: The reporting period in YYYY-QN format.
steps:
- name: extract-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM COMPLIANCE.{{report_type}}_DATA WHERE period='{{reporting_period}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: $secrets.compliance_dataset_id
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.compliance_site_id
file_name: '{{report_type}}_{{reporting_period}}.xlsx'
- name: notify-compliance
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_compliance_channel
text: '{{report_type}} report for {{reporting_period}} is ready. SharePoint link: {{upload-report.webUrl}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /sites/{{site_id}}/drive/root:/{{file_name}}:/content
inputParameters:
- name: site_id
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: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates the annual compensation review cycle by pulling current comp data from Snowflake, creating Jira tracking tasks, and notifying HR business partners via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Annual Compensation Review Launcher
description: Initiates the annual compensation review cycle by pulling current comp data from Snowflake, creating Jira tracking tasks, and notifying HR business partners via Microsoft Teams.
tags:
- hr
- compensation
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_annual_compe
port: 8080
tools:
- name: workday-annual
description: Given an execution date, run the workday annual compensation review 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_ANNUAL_COMPENSATION_REVIEW_LAUNCHER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_ANNUAL_COMPENSATION_REVIEW_LAUNCHER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Workday Annual Compensation Review Launcher - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_annual_compe_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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 an Okta user profile by login email, returning status, name, and last login time.
naftiko: '0.5'
info:
label: Okta User Lookup
description: Retrieves an Okta user profile by login email, returning status, name, and last login time.
tags:
- identity
- okta
- banking
capability:
exposes:
- type: mcp
namespace: iam-lookup
port: 8080
tools:
- name: get-user
description: Given an Okta user login email, return the user status, display name, and last login timestamp. Use for access management verification.
inputParameters:
- name: user_login
in: body
type: string
description: The Okta user login email address.
call: okta.get-user
with:
login: '{{user_login}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: display_name
type: string
mapping: $.profile.displayName
- name: last_login
type: string
mapping: $.lastLogin
consumes:
- type: http
namespace: okta
baseUri: https://wellsfargo.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{login}}
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
Analyzes AKS cluster utilization metrics in Snowflake, generates scaling recommendations, creates Jira tasks, and notifies the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Kubernetes Cluster Scaling Advisor
description: Analyzes AKS cluster utilization metrics in Snowflake, generates scaling recommendations, creates Jira tasks, and notifies the platform team via Microsoft Teams.
tags:
- infrastructure
- azure-kubernetes-service
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_kubernetes_clu
port: 8080
tools:
- name: azure-kubernetes
description: Given an execution date, run the azure kubernetes cluster scaling advisor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_KUBERNETES_CLUSTER_SCALING_ADVISOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_KUBERNETES_CLUSTER_SCALING_ADVISOR_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Azure Kubernetes Cluster Scaling Advisor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_kubernetes_clu_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the status of a Snowflake data share and returns consumer access details and last refresh time.
naftiko: '0.5'
info:
label: Snowflake Data Share Consumer Check
description: Checks the status of a Snowflake data share and returns consumer access details and last refresh time.
tags:
- data
- snowflake
- data-sharing
capability:
exposes:
- type: mcp
namespace: data-sharing
port: 8080
tools:
- name: check-data-share
description: Given a Snowflake share name, check consumer access status and data freshness. Use for data partnership monitoring.
inputParameters:
- name: share_name
in: body
type: string
description: The Snowflake data share name.
call: snowflake.get-share
with:
share_name: '{{share_name}}'
outputParameters:
- name: consumer_count
type: integer
mapping: $.data.consumer_count
- name: last_refresh
type: string
mapping: $.data.last_refresh_time
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: shares
path: /shares/{{share_name}}
inputParameters:
- name: share_name
in: path
operations:
- name: get-share
method: GET
Executes data quality checks on Snowflake AML transaction tables, logs results to a compliance audit table, and alerts the AML compliance team via Microsoft Teams if thresholds are breached.
naftiko: '0.5'
info:
label: Snowflake Anti-Money Laundering Data Quality Check
description: Executes data quality checks on Snowflake AML transaction tables, logs results to a compliance audit table, and alerts the AML compliance team via Microsoft Teams if thresholds are breached.
tags:
- compliance
- data
- snowflake
- microsoft-teams
- aml
- data-quality
capability:
exposes:
- type: mcp
namespace: aml-data-quality
port: 8080
tools:
- name: run-aml-data-quality-check
description: Given a Snowflake AML table name and as-of date, execute row count and null-check validations, log results, and alert the AML compliance Teams channel if any check fails. Use daily before AML transaction monitoring batch runs.
inputParameters:
- name: aml_table
in: body
type: string
description: Snowflake AML table to validate (e.g. COMPLIANCE.AML_TRANSACTIONS).
- name: as_of_date
in: body
type: string
description: Date partition to validate in YYYY-MM-DD format.
- name: min_row_count
in: body
type: integer
description: Minimum expected row count for the given date partition.
steps:
- name: run-quality-checks
type: call
call: snowflake-aml.execute-statement
with:
statement: SELECT COUNT(*) as row_count, SUM(CASE WHEN account_id IS NULL THEN 1 ELSE 0 END) as null_accounts FROM {{aml_table}} WHERE transaction_date = '{{as_of_date}}'
- name: notify-aml-team
type: call
call: msteams-aml.send-message
with:
channel_id: $secrets.teams_aml_channel_id
text: 'AML data quality check for {{aml_table}} on {{as_of_date}}: Row count={{run-quality-checks.row_count}} (min: {{min_row_count}}), Null accounts={{run-quality-checks.null_accounts}}. Status: {{run-quality-checks.status}}.'
consumes:
- type: http
namespace: snowflake-aml
baseUri: https://wellsfargo.snowflakecomputing.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-aml
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 compensation review proposals from Workday for a given cycle and notifies HR business partners via Microsoft Teams with a summary of merit increases pending approval.
naftiko: '0.5'
info:
label: Workday Compensation Review Notification
description: Retrieves compensation review proposals from Workday for a given cycle and notifies HR business partners via Microsoft Teams with a summary of merit increases pending approval.
tags:
- hr
- workday
- microsoft-teams
- compensation
- approval
capability:
exposes:
- type: mcp
namespace: compensation-review
port: 8080
tools:
- name: notify-compensation-review
description: Given a Workday compensation review cycle ID, retrieve proposal counts and totals, and notify the HRBP team in Microsoft Teams. Use to kick off the annual compensation review approval workflow.
inputParameters:
- name: review_cycle_id
in: body
type: string
description: Workday compensation review cycle ID.
- name: review_period_label
in: body
type: string
description: Human-readable review period (e.g. 2025 Annual Merit Increase).
steps:
- name: get-review-summary
type: call
call: workday.get-comp-review
with:
cycle_id: '{{review_cycle_id}}'
- name: notify-hrbp
type: call
call: msteams-hrbp.send-message
with:
channel_id: $secrets.teams_hrbp_channel_id
text: 'Compensation review {{review_period_label}} is open: {{get-review-summary.total_proposals}} proposals, total increase {{get-review-summary.total_amount}}. Please complete approvals in Workday by {{get-review-summary.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: comp-reviews
path: /wellsfargo/compensationReviewCycles/{{cycle_id}}
inputParameters:
- name: cycle_id
in: path
operations:
- name: get-comp-review
method: GET
- type: http
namespace: msteams-hrbp
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers a Postman collection test run and returns the pass/fail summary.
naftiko: '0.5'
info:
label: Postman API Collection Test Runner
description: Triggers a Postman collection test run and returns the pass/fail summary.
tags:
- devops
- postman
- api-testing
capability:
exposes:
- type: mcp
namespace: api-testing
port: 8080
tools:
- name: run-collection
description: Given a Postman collection ID, trigger a test run and return results. Use for API regression testing.
inputParameters:
- name: collection_id
in: body
type: string
description: The Postman collection ID.
call: postman.run-collection
with:
collection_id: '{{collection_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: X-Api-Key
value: $secrets.postman_api_key
placement: header
resources:
- name: collections
path: /collections/{{collection_id}}/run
inputParameters:
- name: collection_id
in: path
operations:
- name: run-collection
method: POST
When a consumer complaint is filed in Salesforce, categorizes it using Snowflake analytics, creates a ServiceNow case, and notifies the complaints team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Complaint Triage Workflow
description: When a consumer complaint is filed in Salesforce, categorizes it using Snowflake analytics, creates a ServiceNow case, and notifies the complaints team via Microsoft Teams.
tags:
- compliance
- consumer-complaints
- salesforce
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer_complaint_t
port: 8080
tools:
- name: consumer-complaint
description: Given an execution date, run the consumer complaint triage 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.CONSUMER_COMPLAINT_TRIAGE_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CONSUMER_COMPLAINT_TRIAGE_WORKFLOW_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: compliance
short_description: Consumer Complaint Triage Workflow processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_consumer_complaint_t_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves metadata for a Box file including name, size, and shared link status.
naftiko: '0.5'
info:
label: Box Document Metadata Lookup
description: Retrieves metadata for a Box file including name, size, and shared link status.
tags:
- content-management
- box
- banking
capability:
exposes:
- type: mcp
namespace: ecm-lookup
port: 8080
tools:
- name: get-file-info
description: Given a Box file ID, return the file name, size in bytes, and shared link URL. Use for document management queries.
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
Deploys a credit risk ML model by pulling the artifact from Azure ML, validating in Snowflake, registering in Databricks, and notifying the risk team.
naftiko: '0.5'
info:
label: Credit Risk ML Model Deployment Chain
description: Deploys a credit risk ML model by pulling the artifact from Azure ML, validating in Snowflake, registering in Databricks, and notifying the risk team.
tags:
- risk
- azure-machine-learning
- snowflake
- databricks
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: ml-ops
port: 8080
tools:
- name: deploy-risk-model
description: Given a model name and version, fetch the artifact, validate, register, and notify. Use for model promotion to production.
inputParameters:
- name: model_name
in: body
type: string
description: The ML model name.
- name: model_version
in: body
type: string
description: The model version to deploy.
steps:
- name: get-model
type: call
call: azureml.get-model
with:
model_name: '{{model_name}}'
version: '{{model_version}}'
- name: validate-model
type: call
call: snowflake.execute-statement
with:
statement: CALL RISK.VALIDATE_MODEL('{{model_name}}', '{{model_version}}')
- name: register-model
type: call
call: databricks.register-model
with:
model_name: '{{model_name}}'
version: '{{model_version}}'
- name: notify-risk
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_risk_channel
text: 'Model {{model_name}} v{{model_version}} deployed. Validation: {{validate-model.status}}.'
consumes:
- type: http
namespace: azureml
baseUri: https://ml.azure.com/api
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: models
path: /models/{{model_name}}/versions/{{version}}
inputParameters:
- name: model_name
in: path
- name: version
in: path
operations:
- name: get-model
method: GET
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: databricks
baseUri: https://wellsfargo.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-versions
path: /mlflow/model-versions/create
operations:
- name: register-model
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Computes regulatory capital ratios from Snowflake, refreshes the Power BI compliance dashboard, and distributes to the finance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Capital Report Generator
description: Computes regulatory capital ratios from Snowflake, refreshes the Power BI compliance dashboard, and distributes to the finance team via Microsoft Teams.
tags:
- compliance
- regulatory
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory_capital_r
port: 8080
tools:
- name: regulatory-capital
description: Given an execution date, run the regulatory capital report 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.REGULATORY_CAPITAL_REPORT_GENERATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.REGULATORY_CAPITAL_REPORT_GENERATOR_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_regulatory_capital_r_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 Cisco Firepower detects an intrusion, logs the alert in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams.
naftiko: '0.5'
info:
label: Cisco Firepower IDS Alert Handler
description: When Cisco Firepower detects an intrusion, logs the alert in Splunk, creates a ServiceNow security incident, and alerts the SOC via Microsoft Teams.
tags:
- security
- cisco
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cisco_firepower_ids_
port: 8080
tools:
- name: cisco-firepower
description: Given an execution date, run the cisco firepower ids 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.CISCO_FIREPOWER_IDS_ALERT_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CISCO_FIREPOWER_IDS_ALERT_HANDLER_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: Cisco Firepower IDS Alert Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_cisco_firepower_ids__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: 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://wellsfargo-splunk.example.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: events
path: /receivers/simple
operations:
- name: index-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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs churn prediction models in Snowflake against Salesforce CRM data, identifies at-risk accounts, and notifies relationship managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Customer Churn Prediction Pipeline
description: Runs churn prediction models in Snowflake against Salesforce CRM data, identifies at-risk accounts, and notifies relationship managers via Microsoft Teams.
tags:
- analytics
- salesforce
- snowflake
- microsoft-teams
- machine-learning
capability:
exposes:
- type: mcp
namespace: salesforce_customer_
port: 8080
tools:
- name: salesforce-customer
description: Given an execution date, run the salesforce customer churn prediction pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_CUSTOMER_CHURN_PREDICTION_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_CUSTOMER_CHURN_PREDICTION_PIPELINE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_customer__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Promotes a validated credit risk model from Databricks staging to production, logs the deployment in Snowflake, and notifies the risk analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Credit Risk Model Deployment Pipeline
description: Promotes a validated credit risk model from Databricks staging to production, logs the deployment in Snowflake, and notifies the risk analytics team via Microsoft Teams.
tags:
- risk
- databricks
- snowflake
- microsoft-teams
- mlops
capability:
exposes:
- type: mcp
namespace: credit_risk_model_de
port: 8080
tools:
- name: credit-risk
description: Given an execution date, run the credit risk model deployment 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.CREDIT_RISK_MODEL_DEPLOYMENT_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CREDIT_RISK_MODEL_DEPLOYMENT_PIPELINE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_credit_risk_model_de_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Checks the current state of an AWS CloudWatch alarm and returns the state value and reason.
naftiko: '0.5'
info:
label: CloudWatch Alarm Check
description: Checks the current state of an AWS CloudWatch alarm and returns the state value and reason.
tags:
- monitoring
- amazon-web-services
- cloudwatch
- banking
capability:
exposes:
- type: mcp
namespace: aws-monitoring
port: 8080
tools:
- name: get-alarm-status
description: Given an AWS CloudWatch alarm name, retrieve its current state and state reason. Use for operational monitoring dashboards.
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_value
type: string
mapping: $.MetricAlarms[0].StateValue
- name: state_reason
type: string
mapping: $.MetricAlarms[0].StateReason
consumes:
- type: http
namespace: cloudwatch
baseUri: https://monitoring.us-east-1.amazonaws.com
authentication:
type: apikey
key: X-Amz-Security-Token
value: $secrets.aws_session_token
placement: header
resources:
- name: alarms
path: /?Action=DescribeAlarms&AlarmNames.member.1={{alarm_name}}
inputParameters:
- name: alarm_name
in: query
operations:
- name: describe-alarm
method: GET
Compares actual Workday headcount against forecast in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Headcount Forecast Variance
description: Compares actual Workday headcount against forecast 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_fo
port: 8080
tools:
- name: workday-headcount
description: Given an execution date, run the workday headcount forecast variance process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_HEADCOUNT_FORECAST_VARIANCE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_FORECAST_VARIANCE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_headcount_fo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Detects Azure billing anomalies above a daily spend threshold and notifies the FinOps team via Microsoft Teams with a cost breakdown by subscription.
naftiko: '0.5'
info:
label: Azure Cloud Cost Anomaly Alert
description: Detects Azure billing anomalies above a daily spend threshold and notifies the FinOps team via Microsoft Teams with a cost breakdown by subscription.
tags:
- cloud
- finops
- azure
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-cost-ops
port: 8080
tools:
- name: alert-azure-cost-anomaly
description: Given an Azure subscription ID and spend threshold, retrieve daily cost data and post an anomaly alert to the FinOps Teams channel if the threshold is exceeded. Use for daily cloud spend governance.
inputParameters:
- name: subscription_id
in: body
type: string
description: Azure subscription ID to check (GUID format).
- name: threshold_usd
in: body
type: number
description: Daily spend threshold in USD above which to alert.
steps:
- name: get-usage-summary
type: call
call: azure-cost.get-usage-summary
with:
subscription_id: '{{subscription_id}}'
- name: post-cost-alert
type: call
call: msteams-finops.send-message
with:
channel_id: $secrets.teams_finops_channel_id
text: 'Azure cost anomaly: Subscription {{subscription_id}} daily spend {{get-usage-summary.total_cost}} exceeds threshold ${{threshold_usd}}. Top service: {{get-usage-summary.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-summary
path: /{{subscription_id}}/providers/Microsoft.Consumption/usageDetails
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-usage-summary
method: GET
- type: http
namespace: msteams-finops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Workday payroll tax filing status, logs compliance metrics in Snowflake, and alerts the payroll compliance team via Microsoft Teams when filings are overdue.
naftiko: '0.5'
info:
label: Workday Payroll Tax Filing Monitor
description: Monitors Workday payroll tax filing status, logs compliance metrics in Snowflake, and alerts the payroll compliance team via Microsoft Teams when filings are overdue.
tags:
- hr
- payroll
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_payroll_tax_
port: 8080
tools:
- name: workday-payroll
description: Given an execution date, run the workday payroll tax filing 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.WORKDAY_PAYROLL_TAX_FILING_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_PAYROLL_TAX_FILING_MONITOR_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_payroll_tax__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 SAP vendor master record by vendor number and returns the name, payment terms, and city.
naftiko: '0.5'
info:
label: SAP Vendor Master Detail Lookup
description: Retrieves a SAP vendor master record by vendor number and returns the name, payment terms, and city.
tags:
- procurement
- sap
- banking
capability:
exposes:
- type: mcp
namespace: erp-vendor
port: 8080
tools:
- name: get-vendor
description: Given a SAP vendor number, return the vendor name, payment terms, and city. Use for vendor due diligence and onboarding checks.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor number.
call: sap.get-vendor
with:
vendor_number: '{{vendor_number}}'
outputParameters:
- name: name
type: string
mapping: $.d.VendorName
- name: payment_terms
type: string
mapping: $.d.PaymentTerms
- name: city
type: string
mapping: $.d.City
consumes:
- type: http
namespace: sap
baseUri: https://wellsfargo-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_Supplier('{{vendor_number}}')
inputParameters:
- name: vendor_number
in: path
operations:
- name: get-vendor
method: GET
Tests Splunk SIEM correlation rules against historical data in Snowflake, logs test results, and notifies the security engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Splunk SIEM Correlation Rule Tester
description: Tests Splunk SIEM correlation rules against historical data in Snowflake, logs test results, and notifies the security engineering team via Microsoft Teams.
tags:
- security
- splunk
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: splunk_siem_correlat
port: 8080
tools:
- name: splunk-siem
description: Given an execution date, run the splunk siem correlation rule tester 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.SPLUNK_SIEM_CORRELATION_RULE_TESTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SPLUNK_SIEM_CORRELATION_RULE_TESTER_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_splunk_siem_correlat_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: splunk
baseUri: https://wellsfargo-splunk.example.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: events
path: /receivers/simple
operations:
- name: index-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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the identity governance status for a user in SailPoint, returning access certifications and risk score.
naftiko: '0.5'
info:
label: SailPoint Identity Governance Check
description: Checks the identity governance status for a user in SailPoint, returning access certifications and risk score.
tags:
- identity
- sailpoint
- governance
capability:
exposes:
- type: mcp
namespace: identity-governance
port: 8080
tools:
- name: get-identity-status
description: Given a SailPoint identity ID, retrieve governance status including pending certifications and risk score. Use for access reviews.
inputParameters:
- name: identity_id
in: body
type: string
description: The SailPoint identity ID.
call: sailpoint.get-identity
with:
identity_id: '{{identity_id}}'
outputParameters:
- name: risk_score
type: integer
mapping: $.riskScore
- name: pending_certifications
type: integer
mapping: $.pendingCertifications
consumes:
- type: http
namespace: sailpoint
baseUri: https://wellsfargo.api.identitynow.com/v3
authentication:
type: bearer
token: $secrets.sailpoint_token
resources:
- name: identities
path: /identities/{{identity_id}}
inputParameters:
- name: identity_id
in: path
operations:
- name: get-identity
method: GET
Screens international wire transfers against OFAC sanctions lists in Snowflake, flags matches in ServiceNow, and alerts the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Wire Transfer Sanctions Check
description: Screens international wire transfers against OFAC sanctions lists in Snowflake, flags matches in ServiceNow, and alerts the compliance team via Microsoft Teams.
tags:
- compliance
- sanctions
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wire_transfer_sancti
port: 8080
tools:
- name: wire-transfer
description: Given an execution date, run the wire transfer sanctions check process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WIRE_TRANSFER_SANCTIONS_CHECK LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WIRE_TRANSFER_SANCTIONS_CHECK_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: compliance
short_description: Wire Transfer Sanctions Check processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_wire_transfer_sancti_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 network connectivity across branch locations via Snowflake metrics, creates ServiceNow incidents for outages, and notifies the NOC via Microsoft Teams.
naftiko: '0.5'
info:
label: Branch Network Health Monitor
description: Monitors network connectivity across branch locations via Snowflake metrics, creates ServiceNow incidents for outages, and notifies the NOC via Microsoft Teams.
tags:
- networking
- infrastructure
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: branch_network_healt
port: 8080
tools:
- name: branch-network
description: Given an execution date, run the branch network 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.BRANCH_NETWORK_HEALTH_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.BRANCH_NETWORK_HEALTH_MONITOR_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: networking
short_description: Branch Network Health Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_branch_network_healt_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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 Palo Alto Networks detects a critical threat, creates a ServiceNow security incident, enriches it with threat intelligence, and alerts the SOC Microsoft Teams channel.
naftiko: '0.5'
info:
label: Palo Alto Networks Security Incident Triage
description: When Palo Alto Networks detects a critical threat, creates a ServiceNow security incident, enriches it with threat intelligence, and alerts the SOC Microsoft Teams channel.
tags:
- security
- palo-alto
- servicenow
- microsoft-teams
- secops
- incident-response
capability:
exposes:
- type: mcp
namespace: soc-ops
port: 8080
tools:
- name: triage-network-threat
description: Given a Palo Alto Networks threat ID and severity, create a ServiceNow security incident and alert the SOC Microsoft Teams channel. Invoke on critical or high Palo Alto threat notifications.
inputParameters:
- name: threat_id
in: body
type: string
description: Palo Alto Networks threat log ID.
- name: severity
in: body
type: string
description: 'Threat severity: critical, high, medium.'
- name: source_ip
in: body
type: string
description: Source IP address of the detected threat.
- name: threat_name
in: body
type: string
description: Name or type of the detected threat (e.g. command-and-control, malware).
steps:
- name: get-threat-details
type: call
call: palo-alto.get-threat-log
with:
threat_id: '{{threat_id}}'
- name: create-security-incident
type: call
call: servicenow-soc.create-incident
with:
category: security
impact: '{{severity}}'
short_description: 'Network threat: {{threat_name}} from {{source_ip}}'
description: 'Palo Alto threat {{threat_id}}: {{threat_name}}. Source: {{source_ip}}. Category: {{get-threat-details.category}}.'
- name: alert-soc
type: call
call: msteams-soc.send-message
with:
channel_id: $secrets.teams_soc_channel_id
text: 'SOC Alert: {{severity}} threat — {{threat_name}} from {{source_ip}}. ServiceNow: {{create-security-incident.number}}. Threat ID: {{threat_id}}.'
consumes:
- type: http
namespace: palo-alto
baseUri: https://wfc-panorama.internal/restapi/v10.1
authentication:
type: apikey
key: X-PAN-KEY
value: $secrets.palo_alto_api_key
placement: header
resources:
- name: threat-logs
path: /log/threat
inputParameters:
- name: threat_id
in: query
operations:
- name: get-threat-log
method: GET
- type: http
namespace: servicenow-soc
baseUri: https://wellsfargo.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: msteams-soc
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Collects GitHub Copilot usage metrics, stores analytics in Snowflake, and distributes adoption reports to engineering leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Copilot Usage Analytics Reporter
description: Collects GitHub Copilot usage metrics, stores analytics in Snowflake, and distributes adoption reports to engineering leadership via Microsoft Teams.
tags:
- devops
- github-copilot
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_copilot_usage
port: 8080
tools:
- name: github-copilot
description: Given an execution date, run the github copilot usage analytics reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_COPILOT_USAGE_ANALYTICS_REPORTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_COPILOT_USAGE_ANALYTICS_REPORTER_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_copilot_usage_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 ServiceNow P1 or P2 incident is created for a core banking system, creates a linked Jira issue in the engineering project and notifies the engineering on-call via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow ITSM Incident to Jira Sync
description: When a ServiceNow P1 or P2 incident is created for a core banking system, creates a linked Jira issue in the engineering project and notifies the engineering on-call via Microsoft Teams.
tags:
- itsm
- servicenow
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: itsm-bridge
port: 8080
tools:
- name: sync-incident-to-jira
description: Given a ServiceNow incident number and priority, create a linked Jira issue and notify the on-call engineering team in Microsoft Teams. Use for P1/P2 incidents affecting core banking applications.
inputParameters:
- name: incident_number
in: body
type: string
description: ServiceNow incident number (e.g. INC0001234).
- name: priority
in: body
type: string
description: 'Incident priority: P1 or P2.'
- name: affected_system
in: body
type: string
description: Name of the affected banking system.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: create-jira-issue
type: call
call: jira-ops.create-issue
with:
project_key: OPS
issuetype: Incident
summary: '[{{priority}}] {{get-incident.short_description}}'
description: 'ServiceNow: {{incident_number}}
System: {{affected_system}}
Details: {{get-incident.description}}'
- name: notify-oncall
type: call
call: msteams-oncall.send-message
with:
channel_id: $secrets.teams_oncall_channel_id
text: '{{priority}} Incident: {{get-incident.short_description}} | System: {{affected_system}} | ServiceNow: {{incident_number}} | Jira: {{create-jira-issue.key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: jira-ops
baseUri: https://wellsfargo.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-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-message
method: POST
Synchronizes Salesforce opportunity pipeline data to Snowflake for executive revenue reporting and notifies the sales leadership team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce CRM Opportunity Pipeline Sync
description: Synchronizes Salesforce opportunity pipeline data to Snowflake for executive revenue reporting and notifies the sales leadership team via Microsoft Teams.
tags:
- sales
- crm
- salesforce
- snowflake
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: crm-reporting
port: 8080
tools:
- name: sync-opportunity-pipeline
description: Given a Salesforce forecast category and fiscal quarter, retrieve open opportunities, write a pipeline snapshot to Snowflake, and notify sales leadership in Microsoft Teams. Use for quarterly pipeline reviews.
inputParameters:
- name: fiscal_quarter
in: body
type: string
description: Fiscal quarter in YYYY-QN format (e.g. 2025-Q2).
- name: forecast_category
in: body
type: string
description: Salesforce forecast category filter (e.g. Commit, BestCase, Pipeline).
steps:
- name: get-opportunities
type: call
call: salesforce.search-opportunities
with:
fiscal_quarter: '{{fiscal_quarter}}'
forecast_category: '{{forecast_category}}'
- name: write-pipeline-snapshot
type: call
call: snowflake.insert-row
with:
table: SALES.PIPELINE_SNAPSHOTS
fiscal_quarter: '{{fiscal_quarter}}'
opportunity_count: '{{get-opportunities.totalSize}}'
total_amount: '{{get-opportunities.total_amount}}'
- name: notify-leadership
type: call
call: msteams-sales.send-message
with:
channel_id: $secrets.teams_sales_channel_id
text: 'Pipeline sync complete for {{fiscal_quarter}} ({{forecast_category}}): {{get-opportunities.totalSize}} opportunities, total value {{get-opportunities.total_amount}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://wellsfargo.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /query
inputParameters:
- name: q
in: query
operations:
- name: search-opportunities
method: GET
- type: http
namespace: snowflake
baseUri: https://wellsfargo.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: msteams-sales
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Calypso trade lifecycle events in Snowflake, flags stuck or aged trades, and alerts the trading operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Calypso Trade Lifecycle Monitor
description: Monitors Calypso trade lifecycle events in Snowflake, flags stuck or aged trades, and alerts the trading operations team via Microsoft Teams.
tags:
- trading
- calypso
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: calypso_trade_lifecy
port: 8080
tools:
- name: calypso-trade
description: Given an execution date, run the calypso trade lifecycle monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CALYPSO_TRADE_LIFECYCLE_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CALYPSO_TRADE_LIFECYCLE_MONITOR_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_calypso_trade_lifecy_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Scans GitHub repositories for open Dependabot and code scanning alerts, aggregates findings by severity, and posts a weekly digest to the AppSec Microsoft Teams channel.
naftiko: '0.5'
info:
label: GitHub Repository Security Advisory Scan
description: Scans GitHub repositories for open Dependabot and code scanning alerts, aggregates findings by severity, and posts a weekly digest to the AppSec Microsoft Teams channel.
tags:
- devops
- security
- github
- microsoft-teams
- devsecops
- appsec
capability:
exposes:
- type: mcp
namespace: appsec-scanning
port: 8080
tools:
- name: digest-repo-security-alerts
description: Given a GitHub organization and severity filter, retrieve open Dependabot and code scanning alerts and post a digest to the AppSec Teams channel. Use for weekly security hygiene reviews on banking application repositories.
inputParameters:
- name: github_org
in: body
type: string
description: GitHub organization to scan (e.g. wells-fargo).
- name: severity_filter
in: body
type: string
description: 'Minimum severity to include: critical, high, medium.'
steps:
- name: get-dependabot-alerts
type: call
call: github-sec.list-org-alerts
with:
org: '{{github_org}}'
severity: '{{severity_filter}}'
- name: post-security-digest
type: call
call: msteams-appsec.send-message
with:
channel_id: $secrets.teams_appsec_channel_id
text: 'Weekly security scan for {{github_org}}: {{get-dependabot-alerts.total_count}} open alerts (Critical: {{get-dependabot-alerts.critical_count}}, High: {{get-dependabot-alerts.high_count}}). Review in GitHub Security.'
consumes:
- type: http
namespace: github-sec
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: msteams-appsec
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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
Monitors ATM fleet health by pulling device telemetry from Snowflake, creating ServiceNow incidents for offline units, and alerting the channel operations team.
naftiko: '0.5'
info:
label: ATM Fleet Health Monitoring Chain
description: Monitors ATM fleet health by pulling device telemetry from Snowflake, creating ServiceNow incidents for offline units, and alerting the channel operations team.
tags:
- operations
- snowflake
- servicenow
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: atm-ops
port: 8080
tools:
- name: monitor-atm-fleet
description: Given a region code, query ATM health data from Snowflake, auto-create incidents for offline ATMs, and notify channel ops. Use for daily ATM fleet monitoring.
inputParameters:
- name: region_code
in: body
type: string
description: The geographic region code (e.g., WEST, EAST, CENTRAL).
steps:
- name: get-offline-atms
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM OPS.ATM_HEALTH WHERE region='{{region_code}}' AND status='OFFLINE'
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: atm_outage
short_description: 'ATM outage in {{region_code}}: {{get-offline-atms.count}} units offline'
- name: notify-channel-ops
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_atm_channel
text: 'ATM fleet alert for {{region_code}}: {{get-offline-atms.count}} ATMs offline. Incident: {{create-incident.number}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Validates Refinitiv market data feed quality in Snowflake, flags stale or missing data points, and alerts the market data team via Microsoft Teams.
naftiko: '0.5'
info:
label: Refinitiv Market Data Quality Validator
description: Validates Refinitiv market data feed quality in Snowflake, flags stale or missing data points, and alerts the market data team via Microsoft Teams.
tags:
- trading
- refinitiv
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: refinitiv_market_dat
port: 8080
tools:
- name: refinitiv-market
description: Given an execution date, run the refinitiv market data quality validator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.REFINITIV_MARKET_DATA_QUALITY_VALIDATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.REFINITIV_MARKET_DATA_QUALITY_VALIDATOR_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_refinitiv_market_dat_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Executes a read-only SQL query against the Wells Fargo Snowflake data warehouse and returns results.
naftiko: '0.5'
info:
label: Snowflake Query Executor
description: Executes a read-only SQL query against the Wells Fargo Snowflake data warehouse and returns results.
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: execute-query
description: Given a SQL statement, execute it against Snowflake and return results. Use for analytics and data validation.
inputParameters:
- name: sql_statement
in: body
type: string
description: The read-only SQL query to execute.
call: snowflake.execute-statement
with:
statement: '{{sql_statement}}'
outputParameters:
- name: row_count
type: integer
mapping: $.data.rowCount
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Retrieves completed sprint data from Jira, calculates story point velocity, and publishes the report to the technology leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Board Velocity Report
description: Retrieves completed sprint data from Jira, calculates story point velocity, and publishes the report to the technology leadership Microsoft Teams channel.
tags:
- devops
- jira
- microsoft-teams
- reporting
- agile
capability:
exposes:
- type: mcp
namespace: agile-metrics
port: 8080
tools:
- name: publish-sprint-velocity-report
description: Given a Jira board ID and sprint ID, retrieve completed issues and story points, and post the velocity summary to the technology leadership Teams channel. Use after each sprint close.
inputParameters:
- name: board_id
in: body
type: string
description: Jira board ID (numeric string).
- name: sprint_id
in: body
type: string
description: Jira sprint ID for the completed sprint.
steps:
- name: get-sprint-details
type: call
call: jira.get-sprint
with:
sprint_id: '{{sprint_id}}'
- name: get-completed-issues
type: call
call: jira.search-issues
with:
jql: sprint = {{sprint_id}} AND status = Done
- name: post-velocity-report
type: call
call: msteams-tech.send-message
with:
channel_id: $secrets.teams_tech_channel_id
text: 'Sprint {{get-sprint-details.name}} velocity: {{get-completed-issues.total}} issues completed. Goal: {{get-sprint-details.goal}}. Board: {{board_id}}.'
consumes:
- type: http
namespace: jira
baseUri: https://wellsfargo.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: sprints
path: /sprint/{{sprint_id}}
inputParameters:
- name: sprint_id
in: path
operations:
- name: get-sprint
method: GET
- name: issues
path: /search
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams-tech
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- 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 an approved Workday job requisition and publishes it to LinkedIn Jobs, logging the external posting record back in Workday for recruiting pipeline tracking.
naftiko: '0.5'
info:
label: LinkedIn Job Posting for Open Requisitions
description: Retrieves an approved Workday job requisition and publishes it to LinkedIn Jobs, logging the external posting record back in Workday for recruiting pipeline tracking.
tags:
- hr
- recruiting
- workday
- linkedin
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: post-job-to-linkedin
description: Given a Workday job requisition ID, retrieve the job details and publish the opening to LinkedIn Jobs. Use when a requisition is approved and ready for external advertising.
inputParameters:
- name: requisition_id
in: body
type: string
description: Workday job requisition ID (e.g. JR-00023456).
- name: linkedin_organization_id
in: body
type: string
description: LinkedIn organization ID for the Wells Fargo company page.
steps:
- name: get-requisition
type: call
call: workday-ta.get-job-requisition
with:
requisition_id: '{{requisition_id}}'
- name: publish-job-posting
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}}'
consumes:
- type: http
namespace: workday-ta
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /wellsfargo/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
Posts intercompany journal entries in SAP, validates the posting via Snowflake balance check, and notifies the accounting team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Intercompany Journal Entry Poster
description: Posts intercompany journal entries in SAP, validates the posting via Snowflake balance check, and notifies the accounting team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- microsoft-teams
- banking
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: post-intercompany-je
description: Given debit and credit company codes and amount, post the entry in SAP, verify balances, and notify accounting. Use for month-end intercompany settlements.
inputParameters:
- name: debit_company
in: body
type: string
description: The debit company code.
- name: credit_company
in: body
type: string
description: The credit company code.
- name: amount
in: body
type: string
description: The journal entry amount.
steps:
- name: post-entry
type: call
call: sap.post-journal
with:
debit_company: '{{debit_company}}'
credit_company: '{{credit_company}}'
amount: '{{amount}}'
- name: verify-balance
type: call
call: snowflake.execute-statement
with:
statement: SELECT balance FROM FINANCE.IC_BALANCES WHERE company_code='{{debit_company}}'
- name: notify-accounting
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_accounting_channel
text: 'Intercompany JE posted: {{debit_company}} -> {{credit_company}}, amount ${{amount}}. Doc: {{post-entry.document_number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://wellsfargo-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: post-journal
method: POST
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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 an Azure AD user profile by UPN and returns display name, job title, and department.
naftiko: '0.5'
info:
label: Azure Active Directory User Profile Lookup
description: Retrieves an Azure AD user profile by UPN and returns display name, job title, and department.
tags:
- identity
- microsoft-azure
- banking
capability:
exposes:
- type: mcp
namespace: iam-directory
port: 8080
tools:
- name: get-aad-user
description: Given an Azure AD user principal name, return the display name, job title, and department. Use for identity verification.
inputParameters:
- name: user_upn
in: body
type: string
description: The user principal name (e.g., jdoe@wellsfargo.com).
call: aad.get-user
with:
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: aad
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{upn}}
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
Retrieves a Jira issue by key and returns summary, status, assignee, and priority.
naftiko: '0.5'
info:
label: Jira Ticket Lookup
description: Retrieves a Jira issue by key and returns summary, status, assignee, and priority.
tags:
- project-management
- jira
- banking
capability:
exposes:
- type: mcp
namespace: pm-lookup
port: 8080
tools:
- name: get-issue
description: Given a Jira issue key, return the issue summary, status, assignee, and priority. Use for project tracking and status inquiries.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key (e.g., PROJ-123).
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://wellsfargo.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 Salesforce customer NPS survey response is marked detractor, creates a follow-up case, assigns it to the relationship manager, and sends a recovery notification via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce NPS Survey Follow-Up Workflow
description: When a Salesforce customer NPS survey response is marked detractor, creates a follow-up case, assigns it to the relationship manager, and sends a recovery notification via Microsoft Teams.
tags:
- customer-experience
- salesforce
- microsoft-teams
- nps
- customer-support
capability:
exposes:
- type: mcp
namespace: nps-recovery
port: 8080
tools:
- name: handle-nps-detractor
description: Given a Salesforce survey response ID, retrieve the detractor's account details, create a recovery case, and notify the relationship manager in Microsoft Teams. Invoke when an NPS score of 0-6 is submitted.
inputParameters:
- name: survey_response_id
in: body
type: string
description: Salesforce survey response record ID.
- name: nps_score
in: body
type: integer
description: NPS score submitted (0-10).
steps:
- name: get-survey-response
type: call
call: salesforce-survey.get-survey-response
with:
response_id: '{{survey_response_id}}'
- name: create-recovery-case
type: call
call: salesforce-nps.create-case
with:
account_id: '{{get-survey-response.account_id}}'
subject: 'NPS Detractor Recovery: Score {{nps_score}} — {{get-survey-response.account_name}}'
type: NPS_Recovery
- name: notify-rm
type: call
call: msteams-nps.send-message
with:
recipient_upn: '{{get-survey-response.rm_upn}}'
text: 'NPS detractor alert: {{get-survey-response.account_name}} scored {{nps_score}}. Recovery case created: {{create-recovery-case.case_number}}. Please reach out within 24 hours.'
consumes:
- type: http
namespace: salesforce-survey
baseUri: https://wellsfargo.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: survey-responses
path: /sobjects/SurveyQuestionResponse/{{response_id}}
inputParameters:
- name: response_id
in: path
operations:
- name: get-survey-response
method: GET
- type: http
namespace: salesforce-nps
baseUri: https://wellsfargo.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-nps
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
Monitors Alteryx workflow execution results, logs output metrics in Snowflake, and notifies the analytics team via Microsoft Teams when workflows fail.
naftiko: '0.5'
info:
label: Alteryx Data Prep Workflow Monitor
description: Monitors Alteryx workflow execution results, logs output metrics in Snowflake, and notifies the analytics team via Microsoft Teams when workflows fail.
tags:
- analytics
- alteryx
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: alteryx_data_prep_wo
port: 8080
tools:
- name: alteryx-data
description: Given an execution date, run the alteryx data prep workflow 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.ALTERYX_DATA_PREP_WORKFLOW_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ALTERYX_DATA_PREP_WORKFLOW_MONITOR_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_alteryx_data_prep_wo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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
Assigns incoming leads in Microsoft Dynamics 365 based on territory rules in Snowflake, creates Jira tasks for follow-up, and notifies assigned reps via Microsoft Teams.
naftiko: '0.5'
info:
label: Dynamics 365 CRM Lead Assignment
description: Assigns incoming leads in Microsoft Dynamics 365 based on territory rules in Snowflake, creates Jira tasks for follow-up, and notifies assigned reps via Microsoft Teams.
tags:
- sales
- microsoft-dynamics-365
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dynamic_365_crm_lead
port: 8080
tools:
- name: dynamic-365
description: Given an execution date, run the dynamics 365 crm lead assignment 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.DYNAMIC_365_CRM_LEAD_ASSIGNMENT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DYNAMIC_365_CRM_LEAD_ASSIGNMENT_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Dynamics 365 CRM Lead Assignment - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_dynamic_365_crm_lead_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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 Istio service mesh traffic patterns from Snowflake metrics, identifies anomalies, creates Jira investigation tickets, and alerts the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Istio Service Mesh Traffic Analyzer
description: Analyzes Istio service mesh traffic patterns from Snowflake metrics, identifies anomalies, creates Jira investigation tickets, and alerts the platform team via Microsoft Teams.
tags:
- infrastructure
- istio
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: istio_service_mesh_t
port: 8080
tools:
- name: istio-service
description: Given an execution date, run the istio service mesh traffic 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.ISTIO_SERVICE_MESH_TRAFFIC_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ISTIO_SERVICE_MESH_TRAFFIC_ANALYZER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: WFOPS
issue_type: Task
summary: Istio Service Mesh Traffic Analyzer - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_istio_service_mesh_t_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.atlassian.net/rest/api/3
authentication:
type: 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 Workday worker profile by employee ID, returning name, title, department, and manager.
naftiko: '0.5'
info:
label: Workday Worker Profile Lookup
description: Looks up a Workday worker profile by employee ID, returning name, title, department, and manager.
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 including job title and department. 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: /wellsfargo/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Monitors Linkerd golden signals from Snowflake metrics, flags SLO breaches, creates ServiceNow incidents, and alerts the SRE team via Microsoft Teams.
naftiko: '0.5'
info:
label: Linkerd Service Mesh Golden Signal Monitor
description: Monitors Linkerd golden signals from Snowflake metrics, flags SLO breaches, creates ServiceNow incidents, and alerts the SRE team via Microsoft Teams.
tags:
- infrastructure
- linkerd
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: linkerd_service_mesh
port: 8080
tools:
- name: linkerd-service
description: Given an execution date, run the linkerd service mesh golden signal 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.LINKERD_SERVICE_MESH_GOLDEN_SIGNAL_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.LINKERD_SERVICE_MESH_GOLDEN_SIGNAL_MONITOR_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: infrastructure
short_description: Linkerd Service Mesh Golden Signal Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_linkerd_service_mesh_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://wellsfargo.snowflakecomputing.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://wellsfargo.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: 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
Score Breakdown — Total: 35011
Each row links to its full definition on the Naftiko Signal Groups page.
416 104 131 1402 1583 607 1099 735 537 2814 746 896 1753 437 650 841 320 376 175 1062 1495 932 242 516 2605 4945 890 485 263 376 273 35 497 523 1144 271 402 112 259 358 443Areas — Total: 2874
- .NET
- 3D
- A/B Testing
- AI Agents
- AI Architectures
- AI Assistants
- AI Ethics
- AI Governance
- AI Infrastructure
- AI Operations
- AI Ops
- AI Platforms
- AI Safety
- AI Securities
- AI Solutions
- AI Technologies
- AI Toolings
- AI Tools
- AJAX
- API Design
- API Development
- API Gateways
- API Integrations
- API Management
- API Securities
- API Testing
- Acadias
- Acceptance Testing
- Access Control Management
- Access Controls
- Access Management
- Accessibility
- Accessibility Audits
- Accessibility Testing
- Account Management
- Accountability
- Accounting
- Accounting Platforms
- Accounting Software
- Accounting Systems
- Accounts Payables
- Accounts Receivables
- Active Directory
- Active Directory Certificate Services
- Activity Streams
- Actuarial Sciences
- Ad Management
- Ad Platforms
- Ad-teches
- Administration
- Administratives
- Advertising
- Advertising Platforms
- Advertising Technologies
- Agent Development
- Agent Frameworks
- Agent-based Systems
- Agentic AI
- Agentic Frameworks
- Agentic Solutions
- Agentic Systems
- Agentics
- Agents
- Alarm Systems
- Alerting
- Alerts
- Algorithm Design
- Algorithm Development
- Algorithmic Tradings
- Algorithms
- Ambassadors
- Analysis
- Analytical Databases
- Analytics
- Analytics Infrastructure
- Androids
- Animations
- Annotations
- Anomaly Detections
- Anti-Money Launderings
- Antivirus
- Apache Portable Runtimes
- App Store Deployments
- Apple iOS
- Applicant Tracking Systems
- Application Architectures
- Application Deliveries
- Application Development
- Application Integrations
- Application Lifecycle Management
- Application Management
- Application Monitoring
- Application Performance Management
- Application Performance Monitoring
- Application Platforms
- Application Profilings
- Application Programming Interfaces
- Application Runtimes
- Application Securities
- Application Servers
- Applications
- Architecture Design
- Architecture Governance
- Architecture Strategies
- Architectures
- Archives
- Archiving
- Argus
- Arrays
- Artemis
- Artifact Management
- Artifact Storage
- Artificial Intelligence
- Artificial Intelligence/Machine Learning
- Assessment Tools
- Assessments
- Asset Allocations
- Asset Inventories
- Asset Liability Management
- Asset Management
- Asset Managers
- Asset Protection
- Asset Servicings
- Asset Tracking
- Asset Valuations
- Assignments
- Asynchronous
- Asynchronous Communications
- Asynchronous Processing
- Attendance Tracking
- Attendee Tracking
- Audience Engagements
- Audience Segmentations
- Audience Targetings
- Audio
- Audit Management
- Audit Processes
- Audit Reports
- Audit Systems
- Audit Techniques
- Audit Technologies
- Audit Tools
- Audit Trails
- Audits
- Australias
- Authentications
- Authoring Tools
- Authorizations
- Auto Scaling
- Automated Incident Responses
- Automated Monitoring Systems
- Automated Testing
- Automated Testing Frameworks
- Automation
- Automation Platforms
- Automation Testing
- Automation Toolings
- Automation Tools And Processes
- Automls
- Automotive
- Autonomous Agents
- Autonomous Systems
- Autoscalings
- Awareness
- Axiom Controllers
- Axioms
- B2B Marketing
- BI
- BPM
- Backend Development
- Backend Engineering
- Backends
- Background Checks
- Background Jobs
- Backup And Recovery
- Backups
- Backward Compatibilities
- Banking
- Banking Infrastructure
- Banking Platforms
- Banking Supervisions
- Banking Systems
- Banking Technologies
- Bashes
- Batch Processing
- Belts
- Benchmarkings
- Benchmarks
- Benefits Administration
- Best Practices
- Big Data
- Billings
- Biotechnologies
- Black Box Testing
- Blockchains
- Bloggings
- Booking Systems
- Bookings
- Bookkeepings
- Border Controls
- Borrowings
- Bots
- Brand Monitoring
- Bridges
- Broadcastings
- Browser Compatibilities
- Browser Extensions
- Browser Support
- Browser-Based
- Browsers
- Budgetings
- Bug Tracking
- Build Automation
- Build Pipelines
- Build Systems
- Build Tools
- Building Automation
- Building Securities
- Built Environments
- Business
- Business Alignments
- Business Analysis
- Business Analytics
- Business Applications
- Business Continuities
- Business Excellence
- Business Intelligence
- Business Logics
- Business Management
- Business Modeling
- Business Models
- Business News
- Business Operations
- Business Plannings
- Business Plans
- Business Process
- Business Process Automation
- Business Process Management
- Business Process Mappings
- Business Roles
- Business Software
- Business Solutions
- Business Strategies
- Business Tools
- Business Transformations
- Business to Consumers
- Business-to-Business
- CI
- CI/CD Pipelines
- Caches
- Caching
- Calendars
- Cameras
- Campaign Management
- Capacity Management
- Capital Adequacies
- Capital Markets
- Carbon Accounting
- Career Development
- Case Laws
- Case Management
- Cash Flow Management
- Cash Management
- Cash Management Systems
- Cash Processing
- Cash Reconciliations
- Catalogs
- Centralized Management
- Centralized Repositories
- Certificate Authorities
- Certificates
- Certifications
- Change Data Captures
- Change Management
- Chaos Engineering
- Charting
- Charts
- Charts And Graphs
- Chatbot Platforms
- Chatbots
- Chats
- Chemical Engineering
- Chromiums
- Cities
- Claims Management
- Claims Processing
- Classification
- Clean Energies
- Clearing And Settlement Systems
- Clearing And Settlements
- Clearings
- Client Analytics
- Client Books
- Client Communications
- Client Data
- Client Experiences
- Client Libraries
- Client Management
- Client Referentials
- Client Relations
- Client Relationship Management
- Client Relationship Management Tools
- Client Reportings
- Client Service Desks
- Client Services
- Client Solutions
- Client Updates
- Client-servers
- Clients
- Climate Changes
- Climate Controls
- Climates
- Cloud Adoptions
- Cloud And Data Management Tools
- Cloud Architectures
- Cloud Assessments
- Cloud Assets
- Cloud Computes
- Cloud Computing
- Cloud Computing Environments
- Cloud Computing Infrastructure
- Cloud Computing Platforms
- Cloud Computing Services
- Cloud Controls
- Cloud Data
- Cloud Data Migrations
- Cloud Data Platforms
- Cloud Data Warehouses
- Cloud Databases
- Cloud Deployments
- Cloud Development
- Cloud Ecosystems
- Cloud Enablement
- Cloud Engineering
- Cloud Environments
- Cloud Governance
- Cloud Implementations
- Cloud Infrastructure
- Cloud Instances
- Cloud Integrations
- Cloud Landing Zones
- Cloud Management
- Cloud Migrations
- Cloud Native Stacks
- Cloud Natives
- Cloud Networking
- Cloud Operations
- Cloud Platforms
- Cloud Risks
- Cloud Runs
- Cloud Securities
- Cloud Security Best Practices
- Cloud Security Controls
- Cloud Security Frameworks
- Cloud Security Posture Management
- Cloud Security Posture Management (CSPM)
- Cloud Security Tools
- Cloud Service Providers
- Cloud Services
- Cloud Software
- Cloud Solutions
- Cloud Spanners
- Cloud Storage
- Cloud Strategies
- Cloud Systems
- Cloud Technologies
- Cloud Technologies And Services
- Cloud Transformations
- Cloud Workload Protection Platforms
- Cloud-Based
- Cloud-Based Applications
- Cloud-Based Architectures
- Cloud-Based Data Platforms
- Cloud-Based Infrastructure
- Cloud-Based Products
- Cloud-Based Technologies
- Cloud-Native Distributed Systems
- Cloud-based Distributed Systems
- Cloud-based Environments
- Cloud-based Services
- Cloud-based Solutions
- Cloud-first Solutions
- Cloud-native Applications
- Cloud-native Architectures
- Cloud-native Design
- Cloud-native Development
- Cloud-native Engineering
- Cloud-native Platforms
- Cloud-native Services
- Cloud-native Solutions
- Cloud-native Tech
- Cloud-native Technologies
- Clouds
- Cluster Management
- Clustering
- Coals
- Code Analysis
- Code Assistants
- Code Coverages
- Code Generations
- Code Management
- Code Quality
- Code Repositories
- Code Reusabilities
- Code Reviews
- Code Versioning Tools
- Codes
- Collaboration Tools
- Collaborations
- Collaborative Development
- Collateral Eligibilities
- Collateral Management
- Collaterals
- Collections
- Column Stores
- Command Lines
- Commerce
- Commercial Services
- Committee Management
- Commodities
- Commodity Futures
- Common Sense
- Communication Tools
- Communications
- Communities
- Community Engagements
- Compatibilities
- Compatibility Testing
- Compensation Management
- Competency Frameworks
- Competitive Analyses
- Competitive Analysis
- Competitive Intelligence
- Competitor Analysis
- Compilations
- Compilers
- Complaint Management
- Complex Systems
- Complexity Analysis
- Compliance
- Compliance Automation
- Compliance Expertises
- Compliance Frameworks
- Compliance Hubs
- Compliance Management
- Compliance Management Programs
- Compliance Managers
- Compliance Monitoring
- Compliance Monitoring Systems
- Compliance Oversights
- Compliance Policies
- Compliance Risk Management Frameworks
- Compliance Services
- Compliance Solutions
- Compliance Systems
- Compliance Technologies
- Compliance Tools
- Component Architectures
- Component Frameworks
- Component Libraries
- Compressions
- Computational Linguistics
- Computational Tools
- Computations
- Computer Aided Design
- Computer Aided Engineering
- Computer Aided Manufacturing
- Computer Applications
- Computer Sciences
- Computer Systems
- Computer Visions
- Computers
- Computes
- Computing
- Concurrencies
- Conferences
- Conferencings
- Configuration Management
- Configuration Management Tools
- Configurations
- Connectivity
- Connectors
- Construction
- Consulting Services
- Consultings
- Consumer Behaviors
- Consumer Protection
- Contact Centers
- Contact Databases
- Contact Management
- Contactless Payments
- Contacts
- Container Management
- Container Networking
- Container Orchestration
- Container Orchestration Services
- Container Platforms
- Container Registries
- Container Runtimes
- Container Securities
- Container Services
- Containerization
- Containerization Technologies
- Containerized Applications
- Containerized Deployments
- Containerized Environments
- Containerized Microservices
- Containerized Workloads
- Containers
- Content Creations
- Content Deliveries
- Content Delivery Networks
- Content Generations
- Content Integrations
- Content Management
- Content Management Systems
- Content Marketing
- Content Repositories
- 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
- Contract Management Software
- Contribution Management
- Contributions
- Control Planes
- Control Systems
- Controllers
- Controls
- Controls Frameworks
- Conversational AI
- Conversion Optimizations
- Conversion Rate Optimizations
- Coordinates
- Coordination Services
- Copywritings
- Core Banking
- Core Systems
- Corporate Actions
- Corporate Banking
- Corporate Finances
- Corporate Learning
- Cost Accounting
- Cost Containments
- Cost Controls
- Cost Management
- Cost Optimizations
- Country-Specific
- Creative Productions
- Creative Services
- Creative Suites
- Creative Tools
- Credentials
- Credit Applications
- Credit Cards
- Credit Controls
- Credit Decision Process
- Credit Management
- Credit Middle Offices
- Credit Process
- Credit Protection
- Credit Ratings
- Credit Risk Modeling
- Credit Risks
- Credit Valuation Adjustments
- Crisis Management
- Critical Thinkings
- Cross Currency Swaps
- Cross Platforms
- Cross-Border Solutions
- Cross-border Payments
- Cross-browser Compatibilities
- Cross-device Testing
- Cryptocurrencies
- Cryptographies
- Cs
- Cultural Changes
- Currencies
- Custodies
- Custody Platforms
- Custody Products
- Custody Services
- Custom Development
- Custom Solutions
- Customer Analytics
- Customer Data
- Customer Data Platforms
- Customer Engagements
- Customer Experience Design
- Customer Experiences
- Customer Feedback
- Customer Intelligence
- Customer Journey Mappings
- Customer Journeys
- Customer Management
- Customer Onboardings
- Customer Portals
- Customer Relationship Management
- Customer Satisfactions
- Customer Segmentations
- Customer Service
- Customer Success
- Customer Support
- Customer Targetings
- Customizations
- Customs
- Cyber Defenses
- Cyber Governance
- Cyber Resiliences
- Cyber Risk Management
- Cyber Securities
- Cybersecurities
- Cybersecurity Frameworks
- DNS Securities
- DNS, DHCP, and IP Address Management
- Dashboards
- Data
- Data Access
- Data Access Governance
- Data Accessibility
- Data Acquisition
- Data Activations
- Data Analysis
- Data Analysis Methods
- Data Analysis Techniques
- Data Analysis Tools
- Data Analysis Tools And Software
- Data Analysis Tools And Techniques
- Data Analytic Tools
- Data Analytics
- Data Analytics Platforms
- Data Analytics Technologies
- Data Analytics Tools
- Data Analytics Tools And Techniques
- Data And Analytical Tools
- Data And Analytics Tools
- Data Anonymizations
- Data Architectures
- Data At Rest Encryptions
- Data Capabilities
- Data Captures
- Data Catalogs
- Data Center Infrastructure
- Data Center Operations
- Data Centers
- Data Centres
- Data Certifications
- Data Classification
- Data Cleanings
- Data Cleansing
- Data Collections
- Data Commercializations
- Data Consumptions
- Data Conversions
- Data Dashboards
- Data Deletions
- Data Discoveries
- Data Distribution Models
- Data Distributions
- Data Drifts
- Data Encryptions
- Data Engineering
- Data Engines
- Data Enrichments
- Data Entries
- Data Exchanges
- Data Explorations
- Data Extractions
- Data Fabrics
- Data Factories
- Data Flows
- Data Focused Technologies
- Data Foundations
- Data Gatherings
- Data Governance
- Data Governance Frameworks
- Data Governance Policies
- Data Governance Strategies
- Data Governance Tools
- Data Handling
- Data Import/Export
- Data Infrastructure
- Data Ingestions
- Data Insights
- Data Integrations
- Data Integrity
- Data Intelligence
- Data Interpretations
- Data Lake Storage
- Data Lakes
- Data Leakage Preventions
- Data License Plus (DL+)
- Data Licensings
- Data Lifecycle
- Data Lifecycle Management
- Data Lineages
- Data Loadings
- Data Loss Preventions
- Data Management
- Data Management Controls
- Data Management Frameworks
- Data Management Platforms
- Data Management Services (DMS)
- Data Management Strategies
- Data Management Systems
- Data Management Tools
- Data Manipulations
- Data Mappings
- Data Marketplaces
- Data Marts
- Data Meshes
- Data Migrations
- Data Minimizations
- Data Mining
- Data Monetizations
- Data Monitoring
- Data Movements
- Data Normalizations
- Data Observability
- Data Operations
- Data Orchestration
- Data Ownerships
- Data Persistences
- Data Pipelines
- Data Platforms
- Data Preparations
- Data Privacies
- Data Processes
- Data Processing
- Data Processing Frameworks
- Data Processing Pipelines
- Data Processing Platforms
- Data Products
- Data Profilings
- Data Protection
- Data Providers
- Data Publishings
- Data Quality
- Data Quality Analytics
- Data Quality Checks
- Data Quality Controls
- Data Quality Frameworks
- Data Quality Management
- Data Quality Testing
- Data Quality Tools
- Data Reconciliations
- Data Replications
- Data Reportings
- Data Repositories
- Data Retentions
- Data Retrievals
- Data Risk Management
- Data Science Libraries
- Data Science Models
- Data Science Techniques
- Data Science Workflows
- Data Sciences
- Data Securities
- Data Security And Privacies
- Data Serializations
- Data Services
- Data Sharing
- Data Stacks
- Data Standardizations
- Data Stewardships
- Data Storage
- Data Storage Systems
- Data Storytellings
- Data Strategies
- Data Streamings
- Data Structures
- Data Synchronizations
- Data Systems
- Data Technologies
- Data Testing
- Data Tokenizations
- Data Tools
- Data Tracking
- Data Transfers
- Data Transformations
- Data Transmissions
- Data Validation
- Data Vaults
- Data Visualisations
- Data Visualization Platforms
- Data Visualization Software
- Data Visualization Tools
- Data Visualizations
- Data Warehouse Architectures
- Data Warehouse Technologies
- Data Warehouses
- Data Warehousing
- Data Wranglings
- Data and Analytics
- Data-Driven
- Data-Driven Processes
- Data-Driven Products
- Data-Driven Techniques
- Data-Intensive Solutions
- Data-driven Dashboards
- Data-driven Decision Making
- Data-driven Initiatives
- Data-driven Insights
- Database Administration
- Database Applications
- Database Architectures
- Database Clusters
- Database Design
- Database Integrations
- Database Management
- Database Optimizations
- Database Performance Tuning
- Database Queries
- Database Replications
- Database Securities
- Database Systems
- Database Technologies
- Database Tuning
- Database Usages
- Databases
- Databolts
- Datastages
- Debt Collections
- Debt Financings
- Debt Securities
- Debuggings
- Decentralizations
- Decentralized
- Decentralized Autonomous Organizations
- Decision Making
- Decision Sciences
- Decision Support
- Decision Support Systems
- Decisioning Models
- Deep Learning
- Defis
- Deliveries
- Dependencies
- Dependency Management
- Dependency Mappings
- Dependency Tracking
- Deployment Automation
- Deployment Infrastructure
- Deployment Pipeline Lifecycle
- Deployment Pipelines
- Deployment Practices
- Deployment Strategies
- Deployment Tools
- Deployments
- Derbies
- Derivatives
- Derivatives Pricings
- Design
- Design Guidelines
- Design Principles
- Design Reviews
- Design Software
- Design Systems
- Design Thinkings
- Design Tools
- Desktop Applications
- Desktop Software
- Desktops
- DevOps Practices
- DevOps Technologies
- DevOps Tools
- Developer Experiences
- Developer Portals
- Developer Productivity Tools
- Developer Tools
- Development
- Development Lifecycle
- Development Operations
- Development Platforms
- Development Practices
- Development Process
- Development Software
- Development Tools
- Device Management
- Diagnostic Tools
- Diagnostics
- Diagrammings
- Differential Equations
- Digital Advertising
- Digital Arts
- Digital Assets
- Digital Banking
- Digital Certificates
- Digital Channels
- Digital Commerce
- Digital Contents
- Digital Distributions
- Digital Engagements
- Digital Events
- Digital Experiences
- Digital Identities
- Digital Infrastructure
- Digital Learning Tools
- Digital Marketing
- Digital Marketing Technologies
- Digital Media
- Digital Operations
- Digital Payments
- Digital Products
- Digital Self-services
- Digital Services
- Digital Signatures
- Digital Solutions
- Digital Strategies
- Digital Systems
- Digital Technologies
- Digital Tools
- Digital Transactions
- Digital Transformations
- Digital Twins
- Digital Wallets
- Digitals
- Digitizations
- Direct Debits
- Directed Acyclic Graphs
- Directory
- Directory Services
- Disaster Recovery
- Discontinued
- Distributed
- Distributed Applications
- Distributed Caches
- Distributed Computing
- Distributed Data Processing
- Distributed Databases
- Distributed Environments
- Distributed Storage
- Distributed Systems
- Distributed Tracing
- Distributed Trainings
- Distribution Platforms
- Distribution Systems
- Distributions
- Document Analysis
- Document Creations
- Document Databases
- Document Libraries
- Document Management
- Document Management Systems
- Document Object Models
- Document Processing
- Documentaries
- Documentary Collections
- Documentations
- Documents
- Domain Adaptations
- Drift Detections
- Due Diligence Questionnaires
- Due Diligences
- Dynamic Application Security Testing
- Dynamic Contents
- Dynamic Models
- Dynamics
- E-bankings
- E-commerces
- E-learnings
- E-mails
- E-procurements
- E-signatures
- ERP
- ESB
- ESG Data
- ESG Reportings
- Ecommerce Platforms
- Ecommerces
- Econometric Models
- Econometric Techniques
- Econometrics
- Economic Analysis
- Economic Data
- Economics
- Ecosystems
- Edteches
- Educational Technologies
- Educations
- Efficiencies
- Elections
- Electric Vehicles
- Electronic Banking
- Electronic Banking Channels
- Electronic Communications
- Electronic Data Interchange
- Electronic Executions
- Electronic Invoicings
- Electronic Payments
- Electronic Platforms
- Electronic Tradings
- Electronics
- Email Marketing
- Email Securities
- Emails
- Embeddings
- Emergency Responses
- Employee Benefits
- Employee Development
- Employee Engagements
- Employee Experiences
- Employee Networks
- Employment
- Enablement
- Enablement Platforms
- Encryptions
- End To End
- End-to-end Testing
- Endpoint Detection And Responses
- Endpoint Management
- Endpoint Protection
- Endpoint Securities
- Endpoint Security Controls
- Energies
- Energy Efficiencies
- Energy Infrastructure
- Energy Management
- Engineering
- Enterprise AI
- Enterprise Applications
- Enterprise Architectures
- Enterprise Communications
- Enterprise Content Management
- Enterprise Data
- Enterprise IT
- Enterprise Integrations
- Enterprise Management
- Enterprise Mobilities
- Enterprise Performance Management
- Enterprise Resource Planning
- Enterprise Risk Management
- Enterprise Risks
- Enterprise Searches
- Enterprise Securities
- Enterprise Service Bus
- Enterprise Software
- Enterprise Solutions
- Enterprise Systems
- Enterprise Technologies
- Enterprise-grade Architectures
- Enterprises
- Entertainments
- Entity Data
- Entity Framework Cores
- Entity Resolutions
- Entrepreneurships
- Environment Management
- Equipments
- Equities
- Equity Analysis
- Equity Tradings
- Error Handling
- Error Tracking
- Estate Plannings
- Estimations
- Ethical Hackings
- Ethics
- Evaluation Frameworks
- Evaluations
- Event Driven
- Event Gateways
- Event Handling
- Event Management
- Event Marketing
- Event Meshes
- Event Plannings
- Event Processing
- Event Registrations
- Event Solutions
- Event Streamings
- Event Technologies
- Event-driven Systems
- Events
- Examples
- Excels
- Execution Management Systems
- Executions
- Executive Reportings
- Expense Management
- Experiment Design
- Experimentations
- Explainable AI
- Exploitations
- Exploratory Data Analysis
- Extended Detection and Responses
- Extensions
- External Dependencies
- External Services
- External Systems
- Extract Transform Loads
- Facilities Management
- Fast Data
- Fault Tolerances
- Fault Tolerants
- Feature Engineering
- Feature Enhancements
- Feature Stores
- Feature Testing
- Federations
- Feedback
- Feedback Collections
- Feedback Systems
- File Parsings
- File Sharing
- File Storage
- File Transfers
- Filing Systems
- Filmmakings
- Finances
- Financial Accounting
- Financial Analysis
- Financial Analytics
- Financial Compliances
- Financial Controls
- Financial Crime Preventions
- Financial Crimes
- Financial Data
- Financial Engineering
- Financial Inclusions
- Financial Indices
- Financial Infrastructure
- Financial Instruments
- Financial Management
- Financial Mathematics
- Financial Media
- Financial Messaging
- Financial Modeling
- Financial Models
- Financial News
- Financial Operations
- Financial Plannings
- Financial Policies
- Financial Reportings
- Financial Researches
- Financial Risk Management
- Financial Sanctions
- Financial Securities
- Financial Services
- Financial Software
- Financial Stabilities
- Financial Systems
- Financial Technologies
- Fine-tunings
- Fintech
- Firewall Management
- Firewalls
- Firmwares
- First-Party Data
- Fixed Incomes
- Flashes
- Flexibilities
- Flexible Workings
- Flinks
- Flow Data
- Forecasting
- Forecasting Models
- Foreign Exchanges
- Forexes
- Forge
- Form Validation
- Formatting Objects Processors
- Forms
- Foundations
- Frameworks
- Fraud Detection Systems
- Fraud Detection Tools
- Fraud Detections
- Fraud Preventions
- Frenches
- Front-ends
- Frontend Development
- Frontend Frameworks
- Frontends
- Full Stack Development
- Full Stacks
- Functional Testing
- Functions
- Fund Accounting
- Fund Management
- Fund Valuations
- Funding Activities
- Funding Rounds
- Futures
- GPS Technologies
- Gamings
- Gateways
- General Ledger Systems
- General Ledgers
- Generative AI
- Generative Modeling
- Generative Models
- Geographic Information Systems
- Geographies
- Geolocations
- Geospatials
- GitHub Copilots
- Global Custodies
- Global Markets
- Global Positioning Systems
- Global Trade Solutions
- Globalizations
- Goal Settings
- Google Cloud Functions
- Governance
- Governance And Controls
- Governance Frameworks
- Governance Tools
- Government
- Government Policies
- Government Relations
- Graph Databases
- Graphic Design
- Graphical User Interfaces
- Graphics
- Graphics Processing Units
- Graphings
- Graphs
- Group Mailboxes
- HCM
- HR Management
- HR Systems
- HR Tech
- HR Technologies
- HTTP API
- HTTP Servers
- Hadoop Distributed File Systems
- Hardenings
- Hardware
- Hbases
- Healthcare
- Healthcare Systems
- Heating, Ventilation, and Air Conditionings
- Hedging
- Help Desks
- High Availabilities
- High Performance Computing
- High Performances
- High Throughputs
- High-Frequency Tradings
- Hirings
- Hospitality
- Hosting
- Human Capital Management
- Human Computer Interactions
- Human Factors
- Human Resources
- Human-Centered Design
- Hybrid Clouds
- Hypervisors
- Hypothesis Testing
- IP Address Management
- IPAM
- IT Architectures
- IT Audits
- IT Governance
- IT Infrastructure
- IT Management
- IT Operations
- IT Plannings
- IT Platforms
- IT Project Management
- IT Risk Management
- IT Risks
- IT Service Management
- IT Services
- IT Strategies
- IT and Operational Risks
- Ideas
- Ideations
- Identities
- Identity And Access Management
- Identity Management
- Identity Providers
- Identity Verifications
- Illuminations
- Image Generations
- Implementations
- In Memories
- In-Memory Databases
- In-Memory Storage
- In-house Systems
- Incident Management
- Incident Management Systems
- Incident Management Tools
- Incident Response Management
- Incident Responses
- Inclusive Design
- Incremental Processing
- Incubation
- Index Providers
- Indexings
- Industrial Engineering
- Industry Analysis
- Industry Reports
- Inference Optimizations
- Inferences
- Informatics
- Information Architectures
- Information Design
- Information Governance
- Information Management
- Information Protection
- Information Retrievals
- Information Securities
- Information Security Controls
- Information Security Frameworks
- Information Security Risk Management
- Information Sharing
- Information Systems
- Information Technologies
- Infrastructure
- Infrastructure As Codes
- Infrastructure Components
- Infrastructure Improvements
- Infrastructure Management
- Infrastructure Monitoring
- Infrastructure Securities
- Infrastructure-as-a-Service
- Ingress Controllers
- Innovation
- Input Validation
- Insights
- Inspections
- Instant Messaging
- Institutional Finances
- Institutional Tradings
- Instrumentations
- Insurance Operations
- Insurance Software
- Insurance Technologies
- Insurances
- Integrated Development Environments
- Integrated Solutions
- Integration Frameworks
- Integration Platforms
- Integration Strategies
- Integration Testing
- Integration Tests
- Integration Workflows
- Integrations
- Integrity
- Intellectual Properties
- Intelligence
- Intelligent Systems
- Intent Data
- Interactive Contents
- Interactive Design
- Interactive Media
- Interactive Prototypes
- Interactive Voice Responses
- Interactives
- Interest Rate Swaps
- Interface Design
- Interfaces
- Internal Applications
- Internal Audits
- Internal Clouds
- Internal Communications
- Internal Control Frameworks
- Internal Controls
- Internal Databases
- Internal Networks
- Internal Platforms
- Internal Portals
- Internal Reporting Tools
- Internal Systems
- Internal Tools
- Internal Wikis
- International Banking
- International Laws
- International Markets
- International Relations
- International Trades
- Internationalizations
- Internet
- Internet Applications
- Internet Banking
- Internet Securities
- Internet Technologies
- Internet of Things
- Interoperabilities
- Intraday Liquidity Management
- Intranets
- Intrusion Detection Systems
- Intrusion Detections
- Inventory Management
- Investment Analysis
- Investment Analytics
- Investment Banking
- Investment Data
- Investment Funds
- Investment Management
- Investment Platforms
- Investment Researches
- Investment Tracking
- Investments
- Investor Relations
- Invoice Processing
- Isolations
- Issue Tracking
- Iterative Development
- Ivies
- Java Virtual Machines
- Job Boards
- Job Orchestration
- Job Schedulers
- Job Scheduling
- Journalism
- Journey Builders
- Journey Design
- Journey Mappings
- Kernels
- Key Lifecycle Management
- Key Management
- Key Metrics
- Key Risk Indicators (KRIs)
- Key Values
- Know Your Customers
- Knowledge Bases
- Knowledge Graphs
- Knowledge Management
- Knowledge Representations
- Knowledge Sharing
- LLM
- Language Understandings
- Large Data Sets
- Large Databases
- Large Datasets
- Large Distributed Systems
- Large Language Model Inferences
- Large Language Models
- Large Scale Full Stack Systems
- Large-Scale Backend Systems
- Large-Scale Enterprise Platforms
- Large-scale Data Platforms
- Large-scale Distributed Systems
- Latency Reductions
- Launch Strategies
- Law Enforcements
- Layer 2S
- Lead Generations
- Lead Management
- Leaderships
- Learning
- Learning And Development
- Learning Management
- Learning Management Systems (LMS)
- Learning Technologies
- Ledgers
- Legacy Systems
- Legal
- Legal Compliances
- Legal Frameworks
- Legal Researches
- Legal Tech
- Legal Technologies
- Lendings
- Lessons Learned
- Letters Of Credits
- Libraries
- License Compliances
- License Management
- Licensings
- Life Cycle Management
- Lifecycle Management
- Lightings
- Linear Algebras
- Linked Data
- Liquidity Contingency Plans
- Liquidity Management
- Liquidity Optimizations
- Liquidity Risk Management
- Liquidity Risk Management Policies
- Liquidity Stress Testing
- Listed Derivatives
- Live Chats
- Live Data
- Live Streamings
- Live TV
- Load Balancers
- Load Balancings
- Load Testing
- Loan Capital Markets
- Loan Management Systems
- Loan Processing
- Local Custodies
- Local Regulatory Reports
- Localizations
- Location Services
- Log Analysis
- Log Analytics
- Log Collections
- Log Management
- Log Shippings
- Logging
- Logistic Regressions
- Logistics
- Loss Data
- Loss Events
- Low Carbons
- Low Codes
- Low Latencies
- Low-Code Platforms
- M&AS
- ML Engineering
- Machine Learning
- Machine Learning Algorithms
- Machine Learning Engineering
- Machine Learning Frameworks
- Machine Learning Lifecycle
- Machine Learning Models
- Machine Learning Platforms
- Machine Learning Systems
- Machine Learning Technologies
- Mails
- Mainframes
- Maintenance
- Major Incident Management
- Malware Protection
- Managed Services
- Management
- Management Accounting
- Management Information
- Management Information And Reportings
- Management Software
- Management Systems
- Management Tools
- Manual Processes
- Manual Testing
- Manufacturing
- Mapping Software
- Mappings
- Market Analysis
- Market Analytics
- Market Coverages
- Market Data
- Market Information
- Market Intelligence
- Market Makers
- Market Microstructures
- Market Researches
- Market Risks
- Marketing
- Marketing Analytics
- Marketing Automation
- Marketing Platforms
- Marketing Strategies
- Marketing Technologies
- Marketing Tools
- Marketplaces
- Markets
- Mass Notifications
- Massively Parallel Processing
- Master Data
- Master Data Management
- Mastodons
- Material Design
- Mathematical Modeling
- Mathematics
- Matrixes
- Measurements
- Media
- Media Contents
- Media Deliveries
- Media Management
- Media Monitoring
- Media Productions
- Mediations
- Medical Devices
- Meeting Management
- Meetings
- Memory Management
- Mental Healths
- Mentoring
- Mergers And Acquisitions
- Meridians
- Message Brokers
- Message Buses
- Message Queues
- Message Queuings
- Messaging
- Messaging Infrastructure
- Messaging Platforms
- Messaging Queues
- Messaging Systems
- Metadata
- Metadata Management
- Metadata Stores
- Metrics
- Micro-services
- Microfinances
- Microservice-based Architectures
- Microservices
- Microsoft Access
- Middle Offices
- Middlewares
- Migration Plannings
- Migrations
- Milestone Tracking
- Mission Critical
- Mobile Analytics
- Mobile Applications
- Mobile Apps
- Mobile Banking
- Mobile Development
- Mobile Device Management
- Mobile Devices
- Mobile Payments
- Mobile Technologies
- Mobile Testing
- Mobiles
- Mockings
- Model Adaptations
- Model Architectures
- Model Calibrations
- Model Compressions
- Model Context Protocols
- Model Context Protocols (MCP)
- Model Deployments
- Model Development
- Model Efficiencies
- Model Evaluations
- Model Fine-tunings
- Model Governance
- Model Guidances
- Model Hubs
- Model Integrity
- Model Interpretabilities
- Model Interpretability Techniques
- Model Lifecycle Management
- Model Maintenance
- Model Management
- Model Monitoring
- Model Observability
- Model Optimizations
- Model Orchestration
- Model Performance
- Model Performance Monitoring
- Model Pre-training Optimizations
- Model Risk Management Processes
- Model Servings
- Model Sparsifications
- Model Testing
- Model Trainings
- Model Validation
- Model Validation Techniques
- Model Versionings
- Modeling
- Modeling Platforms
- Modeling Tools
- Modernizations
- Modularity
- Monetary Policies
- Monetizations
- Money Markets
- Monitoring
- Monitoring And Controls
- Monitoring Services
- Monitoring Software
- Monitoring Tools
- Monte Carlo Simulations
- Monte Carloes
- Monétiques
- Ms Products
- Multi Clouds
- Multi-Agent Systems
- Multi-Asset Tradings
- Multi-channels
- Multi-clusters
- Multi-platforms
- Multi-regions
- Multi-signatures
- Multimedia Platforms
- Multimedias
- Multimodals
- Multiple Systems
- NLP
- Named Entity Recognitions
- Natural Gas
- Natural Language Processing
- Navigation
- Negotiations
- Neobanks
- Net Asset Values
- Netwerkens
- Network Access
- Network Access Controls (NAC)
- Network Analysis
- Network Architectures
- Network Automation
- Network Configurations
- Network Design
- Network Devices
- Network Diagnostics
- Network Engineering
- Network Infrastructure
- Network Management
- Network Monitoring
- Network Optimizations
- Network Performance
- Network Performance Management
- Network Programming
- Network Securities
- Network Tools
- Network Topologies
- Networking
- Neural Networks
- Neurodiversities
- New Tabs
- News
- News Media
- News Services
- Newsletters
- No Codes
- NoSQL
- Nonprofits
- Nostro
- Notebooks
- Notifications
- OIA
- OLE for Process Controls
- ORM
- OSX
- Object Relational Mappings
- Object Storage
- Object Stores
- Object-Oriented
- Observability
- Observability Platforms
- Observability Stacks
- Observability Toolings
- Observability Tools
- Office Applications
- Office Management
- Office Suites
- Omnichannels
- On Demands
- Onboardings
- Online Advertising
- Online Analytical Processing
- Online Banking
- Online Learning
- Online Services
- Online Shoppings
- Online Tools
- Online Transaction Processing
- Ontologies
- Open Data
- Open Source
- Open-Source Software
- Open-Source Solutions
- Open-source Frameworks
- Open-source Languages
- Open-source Programming Languages
- Open-source Technologies
- Open-source Tools
- Operating System Configurations
- Operating Systems
- Operational Architectures
- Operational Efficiencies
- Operational Excellence
- Operational Intelligence
- Operational Metrics
- Operational Permanent Controls
- Operational Practices
- Operational Reportings
- Operational Resilience Frameworks
- Operational Resiliences
- Operational Risk Assessments
- Operational Risk Frameworks
- Operational Risk Management
- Operational Risk Management Frameworks
- Operational Risk Tools
- Operational Risks
- Operational Systems
- Operational Technologies
- Operations
- Operations Management
- Operations Researches
- Operators
- Optical Character Recognitions
- Optimization Techniques
- Optimizations
- Options
- Options Tradings
- Orchestration
- Order Books
- Order Executions
- Order Management
- Order Management Systems
- Organizational Changes
- Organizational Design
- Organizational Development
- Organizational Structures
- Organizational Transformations
- Organizations
- Outils Digitauxes
- Package Management
- Package Managers
- Packages
- Packaging
- Packet Captures
- Paid Media
- Pair Programming
- Panoramas
- Paper Based
- Parallel Computing
- Parallel Processing
- Patch Management
- Pattern Recognitions
- Patterns
- Pay Per Clicks
- Payment Channels
- Payment Models
- Payment Processing
- Payment Solutions
- Payment Systems
- Payments
- Payments And Collections
- Payments Applications
- 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
- Permanent Controls
- Persistences
- Personal Finances
- Personalizations
- Pharmaceuticals
- Photographies
- Physical Securities
- Picassoes
- Pigs
- Pillar 3S
- Pipeline Management
- Pipeline Orchestration
- Pipeline Securities
- Pipelines
- Pivot Tables
- Planning Analytics
- Plannings
- Platform As A Services
- Platform Development
- Platform Ecosystems
- Platform Engineering
- Platform Management
- Platform Modernizations
- Platform Observability
- Platform Securities
- Platform Services
- Platform Software
- Platform Solutions
- Platform Strategies
- Platform Systems
- Platform-as-a-Service
- Platforms
- Plugins
- Point Of Sales
- Policies
- Policy Administration
- Policy Administration Systems
- Policy Advisories
- Policy Analysis
- Policy As Codes
- Policy Enforcements
- Policy Management
- Portabilities
- Portables
- Portals
- Portfolio Management
- Portfolio Management Tools
- Portfolio Reviews
- Post Productions
- Post-Trade Operations
- Post-Trade Processing
- Post-event Evaluations
- Postmortems
- Power Distributions
- Power Generations
- Power Tools
- Practice Management
- Pre-trainings
- Predictabilities
- Predictions
- Predictive Analytics
- Predictive Modeling
- Presentation Software
- Presentations
- Pricing Analytics
- Pricing Libraries
- Pricing Models
- Pricing Strategies
- Pricing Systems
- Pricing Tools
- Pricings
- Prioritizations
- Privacy
- Privacy Impact Assessments
- Private Clouds
- Probabilities
- Probability Theories
- Problem Management
- Problem Resolutions
- Problem Solving
- Process Analysis
- Process Analytics
- Process Automation
- Process Builders
- Process Certification Frameworks
- Process Controls
- Process Design
- Process Design Tools
- Process Documentations
- Process Engineering
- Process Frameworks
- Process Hierarchy Change Management
- Process Improvements
- Process Level Assessments
- Process Management
- Process Mapping Tools
- Process Mappings
- Process Maps
- Process Mining
- Process Modeling
- Process Modeling Tools
- Process Monitoring
- Process Optimizations
- Process Orchestration
- Process Re-engineerings
- Process Reengineerings
- Process Streamlinings
- Process Visualizations
- Processes
- Procurement Tools
- Procurements
- Product Analytics
- Product Areas
- Product Design
- Product Development
- Product Development Lifecycle
- Product Development Roadmaps
- Product Increment Plannings
- Product Information Management
- Product Integrations
- Product Lifecycle Management
- Product Management
- Product Management Tools
- Product Owners
- Product Ownerships
- Product Platforms
- Product Roadmaps
- Product Securities
- Product Strategies
- Product Testing
- Production
- Production Deployments
- Production Environments
- Production Management
- Production Monitoring
- Production Securities
- Production Support
- Production Systems
- Productivity
- Productivity Software
- Productivity Suites
- Productivity Tools
- Products
- Professional Development
- Professional Networking
- Professional Services
- Professional Trainings
- Profilings
- Profitability Analysis
- Program Management
- Programmable Logic Controllers
- Programming
- Programming Languages
- Progress Reports
- Project Charters
- Project Governance
- Project Management
- Project Management Processes
- Project Management Tools
- Project Schedules
- Projects
- Prompt Engineering
- Prompt Injection Defenses
- Promptings
- Prompts
- Property Management
- Proprietary Software
- Protection
- Protocol Support
- Protocols
- Prototype Development
- Prototyping
- Provisioning Process
- Provisionings
- Proxies
- Prunings
- Psychologies
- Public Affairs
- Public Clouds
- Public Healths
- Public Key Infrastructure
- Purchasings
- Push Notifications
- QA
- QA Automation
- Quality Assurance
- Quality Assurance Frameworks
- Quality Assurance Processes
- Quality Assurance Reviews
- Quality Assurance Testing
- Quality Centers
- Quality Controls
- Quality Frameworks
- Quality Management
- Quality Metrics
- Quality Testing
- Quality Tools
- Quantitative Analysis
- Quantitative Finances
- Quantitative Methods
- Quantitative Modeling
- Quantitative Models
- Quantum Computing
- Query Engines
- Query Execution Plans
- Query Languages
- Query Optimizations
- Query Processing
- Query Systems
- Query Tools
- Question Answerings
- Queues
- Rapid Development
- Rapid Prototyping
- Rate Limitings
- Rating Agency Methodologies
- Rating Assignments
- Ratings
- Reactives
- Real Estates
- Real Time
- Real-Time Communications
- Real-Time Data Feeds
- Real-Time Operating Systems
- Real-Time Payments
- Real-time Analytics
- Real-time Applications
- Real-time Data
- Real-time Data And Streaming Applications
- Real-time Data Environments
- Real-time Environments
- Real-time Experiences
- Real-time Financial Decisionings
- Real-time Inferences
- Real-time Insights
- Real-time Messaging Systems
- Real-time Monitoring
- Real-time Processing
- Real-time Streaming Applications
- Real-time Streamings
- Real-time Systems
- Real-time Visibility
- Reasonings
- Recipes
- Recommendation Engines
- Recommendation Systems
- Reconciliation And Controls
- Reconciliation Reports
- Reconciliation Systems
- Reconciliations
- Reconnaissances
- Record Keepings
- Recordings
- Records Management
- Recruitings
- Recruitment
- Recurring Payments
- Reference Data
- Reference Data Systems
- Reference Models
- Referential Data
- Registrations
- Regression Analysis
- Regression Testing
- Regulatory Affairs
- Regulatory Analysis
- Regulatory Capital
- Regulatory Capital Calculations
- Regulatory Compliances
- Regulatory Filings
- Regulatory Intelligence
- Regulatory Reporting Frameworks
- Regulatory Reporting Systems
- Regulatory Reporting Tools
- Regulatory Reportings
- Regulatory Solutions
- Regulatory Technologies
- Reinforcement Learning
- Relational Data
- Relational Data Stores
- Relational Database Management Systems
- Relational Databases
- Relationals
- Relationship Buildings
- Relationship Management
- Release Activities
- Release Decisionings
- Release Engineering
- Release Governance
- Release Management
- Release Management Processes
- Release Pipelines
- Release Plannings
- Reliabilities
- Reliability Engineering
- Remittances
- Remote Access
- Remote Collaborations
- Remote Desktops
- Remote Works
- Rendering
- Renewable Energies
- Replications
- Reporting And Analytics
- Reporting And Measurements
- Reporting Applications
- Reporting Automation
- Reporting Dashboards
- Reporting Frameworks
- Reporting Mechanisms
- Reporting Metrics
- Reporting Platforms
- Reporting Solutions
- Reporting Systems
- Reporting Tools
- Reportings
- Repository Management
- Requirements
- Requirements Engineering
- Requirements Gatherings
- Requirements Management
- Research
- Research Data
- Research Methods
- Research Tools
- Resilience Engineering
- Resiliences
- Resiliency
- Resilient Capabilities
- Resilient Systems
- Resource Allocations
- Resource Management
- Resource Plannings
- Resource Scheduling
- Responsive Design
- Rest Assured
- Retail Technologies
- Retails
- Retry Logics
- Reusable Components
- Revenue Generations
- Revenue Management
- Revenue Models
- Revenue Operations
- Revenue Optimizations
- Revenue Strategies
- Revenues
- Reverse Proxies
- Review And Approvals
- Reviews
- Rich Internet Applications
- Risk Analysis
- Risk Analysis Tools
- Risk And Control Frameworks
- Risk Assessments
- Risk Control Frameworks
- Risk Management
- Risk Management Plans
- Risk Management Systems
- Risk Management Tools
- Risk Models
- Risk Systems
- Roadmappings
- Robotic Process Automation
- Robotics
- Robustness
- Root Cause Analysis
- Routers
- Routings
- Rule-Based Systems
- Runtime Securities
- Runtimes
- SQL Databases
- SQL Queries
- SQL Stored Procedures
- Safes
- Safety
- Safety Engineering
- Sales
- Sales Analytics
- Sales Clouds
- Sales Enablement
- Sales Enablement Tools
- Sales Intelligence
- Sales Management
- Sales Productivity
- Sales Technologies
- Sales Tools
- Sales Trainings
- Sanctions
- Sanctions Alerts
- Sanctions And Embargoes
- Sanctions Compliances
- Sanctions Policies
- Sanctions Screenings
- Sandboxes
- Sanity Testing
- Scalabilities
- Scalability Testing
- Scaling
- Scannings
- Scenario Analysis
- Scenario Modeling
- Scenarios
- Scheduling
- Scientific Computing
- Scorings
- Screenings
- Scripting Languages
- Scriptings
- Search
- Search Engine Optimizations
- Search Engines
- Secrets Management
- Secure Architectures
- Secure Coding Practices
- Secure Codings
- Secure Communications
- Secure Configurations
- Secure Design
- Secure Development
- Secure Platforms
- Secure Proxies
- Secure Software Development
- Secure Web Gateways
- Securities Lendings
- Securities Tradings
- Securitisations
- Security
- Security Administration
- Security Analysis
- Security Analytics
- Security Architecture Reviews
- Security Architectures
- Security Assessments
- Security Audits
- Security Automation
- Security Baselines
- Security Best Practices
- Security Compliances
- Security Controls
- Security Design
- Security Development Lifecycle
- Security Engineering
- Security Frameworks
- Security Governance
- Security Groups
- Security Incident Responses
- Security Information and Event Management
- Security Infrastructure
- Security Management
- Security Measures
- Security Mechanisms
- Security Models
- Security Monitoring
- Security Operations
- Security Orchestration, Automation and Responses
- Security Platforms
- Security Procedures
- Security Requirements
- Security Reviews
- Security Risk Assessments
- Security Settings
- Security Solutions
- Security Systems
- Security Testing
- Security Tools
- Security Updates
- Segmentations
- Self Services
- Self-Service Dashboards
- Self-healings
- Self-improvements
- Semantic Parsings
- Semantic Searches
- Semantic Technologies
- Semantic Webs
- Sensors
- Serializations
- Server-Side Rendering
- Serverless
- Serverless Architectures
- Servers
- Service Bus
- Service Catalogs
- Service Clouds
- Service Deliveries
- Service Design
- Service Desks
- Service Discoveries
- Service Frameworks
- Service Governance
- Service Level Objectives (SLOs)
- Service Management
- Service Mappings
- Service Meshes
- Service Monitoring
- Service Operations
- Service Recovery
- Service Strategies
- Services
- Servlet Containers
- Servlets
- Settlement Systems
- Settlements
- Shared Resources
- Shared Responsibilities
- Shells
- Shift-left Testing
- Shippings
- Short Message Services
- Simple API for XML
- Simulation Engines
- Simulation Platforms
- Simulation Tools
- Simulations
- Simulators
- Site Reliability Engineering
- Skill Development
- Skills Development
- Slides
- Smart Contracts
- Smart Grids
- Smartphones
- Smoke Testing
- Snapshot Testing
- Social
- Social Media
- Social Media Marketing
- Social Networking
- Social Networks
- Social Recruitings
- Software
- Software Applications
- Software Architectures
- Software Asset Management
- Software Composition Analysis
- Software Configuration Management
- Software Configurations
- Software Deliveries
- Software Delivery Life Cycles
- Software Delivery Platforms
- Software Deployments
- Software Design
- Software Development
- Software Development Best Practices
- Software Development Kits
- Software Distributions
- Software Documentations
- Software Engineering
- Software Infrastructure
- Software Interfaces
- Software Languages
- Software Licensings
- Software Platforms
- Software Projects
- Software Quality
- Software Solutions
- Software Systems
- Software Technologies
- Software Testing
- Software Testing Methodologies
- Software Tools
- Software Upgrades
- Software Version Controls
- Software as a Services
- Software-as-a-Service
- Solutions
- Source Code Management
- Source Code Management Tools
- Source Codes
- Source Control Management
- Source Controls
- Source Systems
- Sourcings
- Space Explorations
- Spatial Data
- Spend Management
- Spitabs
- Spreadsheets
- Stakeholder Management
- Standups
- Startups
- State Machines
- State Management
- Stateful Computations
- Statefuls
- Static Analysis
- Static Application Security Testing
- Static Data Management
- Statistical Analysis
- Statistical Analysis Software
- Statistical Analysis Techniques
- Statistical Analyst Software
- Statistical Methods
- Statistical Modeling
- Statistical Modellings
- Statistical Models
- Statistical Packages
- Statistical Predictive Models
- Statistical Techniques
- Statistical Testing
- Statistical Tools
- Statistics
- Stochastic Calculus
- Stochastic Processes
- Stock Reconciliations
- Storage
- Storage Engines
- Storage Management
- Stored Procedures
- Strategic Design
- Strategic Plannings
- Strategies
- Stream Analytics
- Stream Processing
- Streaming Architectures
- Streaming Data
- Streamings
- Stress Testing
- Stress Testing Models
- Stress Tests
- String Manipulations
- Strong Authentications
- Strong Consistencies
- Structured Data
- Structured Databases
- Structured Products
- Structured Streamings
- Subscription Management
- Subscription Models
- Subscriptions
- Supervised Learning
- Supplier Contracts
- Supplier Management
- Supply Chain Finances
- Supply Chain Management
- Supply Chain Risk Management
- Supply Chain Securities
- Supply Chains
- Support
- Support Platforms
- Support Systems
- Surveillance Models
- Surveillances
- Sustainability
- Sustainable Investings
- Swift Messages
- Switches
- Synthetic Testing
- Synthetics
- System Administration
- System Analysis
- System Applications
- System Architectures
- System Automation
- System Configurations
- System Design
- System Development
- System Enhancements
- System Hardenings
- System Implementations
- System Information
- System Integrations
- System Interfaces
- System Maintenance
- System Management
- System Monitoring
- System Of Records
- System Operations
- System Optimizations
- System Performances
- System Requirements
- System Securities
- System Services
- System Software
- System Solutions
- System Stabilities
- System Testing
- System Tests
- System Tools
- System Updates
- Systems
- Systems Administration
- Systems Analysis
- Systems Architectures
- Systems Design
- Systems Development
- Systems Engineering
- Systems Enhancements
- Systems Integrations
- Systems Management
- Systems Programming
- Systems Software
- Systems Testing
- Systems Thinkings
- Systems Upgrades
- T1S
- Tableaux De Bords
- Tablets
- Tag Management
- Tainas
- Talent Acquisition
- Talent Management
- Task Automation
- Task Management
- Task Queues
- Tasks
- Tax Compliances
- Tax Laws
- Tax Management
- Tax Plannings
- Tax Preparations
- Tax Researches
- Tax Software
- Tax Technology Solutions
- Taxes
- Tcls
- Team Collaborations
- Team Communications
- Team Development
- Team Management
- Teaps
- Technical Debt
- Technical Plannings
- Technical Reviews
- Technical Support
- Technical Writings
- Technologies
- Technology Adoptions
- Technology Architectures
- Technology Enhancements
- Technology Governance
- Technology Plannings
- Technology Platforms
- Technology Reviews
- Technology Risk Management
- Technology Services
- Technology Stacks
- Technology Strategies
- Technology Upgrades
- Telecommunications
- Telefonies
- Telefonoes
- Telefons
- Telefoons
- Telemetry
- Telephonies
- Telewerkens
- Template Engines
- Terminals
- Territory Management
- Test Anything Protocols
- Test Automation
- Test Automation Frameworks
- Test Automation Tools
- Test Case Management
- Test Controls
- Test Data Preparations
- Test Design
- Test Doubles
- Test Engineering
- Test Environments
- Test Executions
- Test Management
- Test Management Tools
- Test Plannings
- Test Pyramids
- Test Reportings
- Test Scriptings
- Test Strategies
- Test Tools
- Test-and-learns
- Testing Frameworks
- Testing Strategies
- Testing Tools
- Tests
- Text Analysis
- Text Analytics
- Text Mining
- Text Processing
- Third Parties
- Third Party Risks
- Third Party Services
- Third-Party Entity Data Providers
- Third-Party Integrations
- Third-Party Software
- Third-Party Technologies
- Third-party Data
- Third-party Libraries
- Third-party Management
- Third-party Monitoring
- Third-party Risk Management
- Third-party Securities
- Third-party Systems
- Threat Analysis
- Threat Detections
- Threat Huntings
- Threat Intelligence
- Threat Management
- Threat Mitigations
- Threat Modeling
- Threat Monitoring
- Threat Protection
- Ticketing
- Ticketing Systems
- Tickets
- Time Management
- Time Series
- Time Series Analysis
- Time Series Databases
- Time Series Forecasting
- Time Series Modeling
- Timelines
- Token Management
- Tokenizations
- Tokenized Assets
- Tokens
- Tools
- Total Rewards
- Tracing
- Tracking
- Tracking Software
- Tracs
- Trade Compliances
- Trade Confirmations
- Trade Credit Insurances
- Trade Finance Systems
- Trade Finances
- Trade Life Cycles
- Trade Lifecycle Management
- Trade Management
- Trade Operations
- Trade Processing
- Trade Processing Systems
- Trade Services
- Trade Settlements
- Trade Shows
- Trade Support
- Trade Surveillances
- Trade Validation
- Trading Controls
- Trading Platforms
- Trading Systems
- Trading Technologies
- Tradings
- Traffic Analysis
- Traffic Management
- Training Data
- Training Platforms
- Trainings
- Transaction Banking
- Transaction Banking Products
- Transaction Management
- Transaction Monitoring
- Transaction Processing
- Transfer Learning
- Transformations
- Transformers
- Translations
- Transparency
- Transportation
- Travel Management
- Travel Technologies
- Travels
- Treasuries
- Treasury Management
- Treasury Operations
- Treasury Solutions
- Troubleshooting
- Trust And Safety
- Tuning
- Turkishes
- Two-factor Authentications
- Type Safes
- Type Safety
- UI
- UI Design
- UX
- UX Design
- Ubixes
- Underwritings
- Unified Communications
- Unit Testing
- Unixes
- Unstructured Data
- Unsupervised Learning
- Updates
- Uptime
- Usabilities
- Usability Testing
- Usage-Based Pricings
- User Acceptance Testing
- User Engagements
- User Experiences
- User Feedback
- User Guides
- User Insights
- User Interface/User Experiences
- User Interfaces
- User Journeys
- User Management
- User Provisionings
- User Researches
- User Testing
- Utilities
- VBA
- VOIP
- Validation
- Validation Frameworks
- Validation Rules
- Validation Tools
- Validation and Testing
- Valuation Models
- Valuations
- Value Streams
- Vector Databases
- Vector Stores
- Vendor Management
- Venture Capital
- Venue Management
- Venue Selections
- Venue Sourcings
- Venues
- Verifications
- Version Control Systems
- Version Controls
- Versionings
- Video Calls
- Video Chats
- Video Conferences
- Video Conferencings
- Video Editings
- Video Games
- Video Platforms
- Video Productions
- Videogespreks
- Videos
- Virtual Assistants
- Virtual Data Rooms
- Virtual Desktop Infrastructure
- Virtual Environments
- Virtual Events
- Virtual Machines
- Virtual Meetings
- Virtual Networks
- Virtualizations
- Visibility
- Visioconférences
- Visual Design
- Visualizations
- Voice
- Voice Recognitions
- Volume Managers
- Votings
- Vues
- Vulnerability Analysis
- Vulnerability Assessments
- Vulnerability Management
- Vulnerability Management Tools
- Vulnerability Scanners
- Vulnerability Scannings
- Wallets
- Warehouse Technologies
- Wealth Management
- Web API
- Web Analytics
- Web Application Development
- Web Application Securities
- Web Applications
- Web Apps
- Web Architectures
- Web Based
- Web Browsers
- Web Components
- Web Design
- Web Development
- Web Frameworks
- Web Interfaces
- Web Performances
- Web Platforms
- Web Proxies
- Web Scrapings
- Web Securities
- Web Servers
- Web Services
- Web Sites
- Web Software Development
- Web Systems
- Web Technologies
- Web Tools
- Web-based Applications
- Web-based Technologies
- Web-based Trainings
- Web3s
- Webinars
- Webs
- Wellbeings
- Whiteboards
- Wi-Fi
- Wikis
- Windows Servers
- Wins
- Words
- Work From Homes
- Work Life Balances
- Workflow Analysis
- Workflow Automation
- Workflow Automation Platforms
- Workflow Design
- Workflow Enhancements
- Workflow Management
- Workflow Management Tools
- Workflow Optimizations
- Workflow Orchestration
- Workflow Products
- Workflow Systems
- Workflow Toolings
- Workflow Tools
- Workflow Visualizations
- Workflows
- Workforce Management
- Working Capital
- Workplace Analytics
- Workplace Safety
- Workplace Technologies
- Workshops
- Workspaces
- XML Parsers
Services — Total: 485
- ADP
- AWS Lambda
- Adobe
- Adobe Acrobat
- Adobe Analytics
- Adobe Campaign
- Adobe Captivate
- Adobe Creative Cloud
- Adobe Creative Suite
- Adobe Experience Cloud
- Adobe Illustrator
- Adobe Launch
- Adobe Photoshop
- Adobe Premiere Pro
- Adobe Suite
- Airtable
- Alteryx
- Amazon API Gateway
- Amazon ECS
- Amazon Kinesis
- Amazon Neptune
- Amazon Q
- Amazon Redshift
- Amazon S3
- Amazon SNS
- Amazon SQS
- Amazon SageMaker
- Amazon Web Services
- Ambassador
- Android
- Ansible Automation Platform
- Ansible Tower
- Anthropic
- Apache Airflow
- Apache Software Foundation
- Apigee
- Appian
- Apple
- Apple Keynote
- Apple Pay
- Apple Safari
- Argus Enterprise
- Ariba
- Artifactory
- Aruba
- Asana
- Atlassian
- AutoCAD
- Autodesk
- Autodesk Fusion 360
- Autodesk Maya
- Avaloq
- Axway
- Azure Active Directory
- Azure Arc
- Azure Blob Storage
- 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 Pipelines
- Azure Repo
- Azure Service Bus
- Azure Storage
- Azure Synapse Analytics
- Azure Virtual Desktop
- Backstage
- Bancomat
- Bancontact
- BigCommerce
- Bitbucket
- Bloomberg
- Bloomberg AIM
- Bloomberg APIs
- Bloomberg Company Financials
- Bloomberg Data
- Bloomberg EMSX
- Bloomberg Economics
- Bloomberg Enterprise
- Bloomberg Enterprise Data
- Bloomberg Financial Solutions
- Bloomberg Government (BGOV)
- Bloomberg Index Solutions Limited (BISL)
- Bloomberg Indices
- Bloomberg Instant Messaging
- Bloomberg Intelligence
- Bloomberg News
- Bloomberg Professional
- Bloomberg Professional Service
- Bloomberg Query Language (BQL)
- Bloomberg TV
- Bloomberg Tax (BTAX)
- Bloomberg Television and Radio
- Bloomberg Terminal
- Bloomberg Tradebook
- Bloomberg Valuation Service (BVAL)
- Boomi
- Box
- Broadcom
- Brocade
- BrowserStack
- Bruno
- Burp Suite
- Calypso
- Camtasia
- Canva
- Cflow
- ChatGPT
- Checkmarx
- Choreo
- Circana
- Cisco
- Cisco Catalyst Center
- Cisco Control Hub
- Cisco Expressway
- Cisco Firepower
- Cisco Nexus
- Cisco Secure Client
- Cisco Voice Portal
- Cisco Webex
- Citrix
- Citrix NetScaler
- Claude
- Clearstream
- CloudFormation
- CloudWatch
- Cloudflare
- Commvault
- Concur
- Conductor
- Confluence
- Cortex
- Coupa
- Crystal Reports
- Cvent
- Dagster
- Databricks
- Databricks Workflows
- Datadog
- Dataiku
- Dealogic
- Demandbase
- Discord
- DocuSign
- DynamoDB
- Dynatrace
- EC2
- EMC
- Eloqua
- Everbridge
- F5 Load Balancer
- F5 Networks
- Facebook Ads
- FactSet
- Factiva
- Fargate
- Fern
- Figma
- Finch
- ForgeRock
- Fortify
- Fortinet
- Fusio
- G2
- GCP Cloud Storage
- Gainsight
- Gemini
- Geneos
- GitHub
- GitHub Actions
- GitHub Copilot
- GitLab
- Global Relay
- Gmail
- Gong
- Google Ads
- Google Analytics
- Google Android
- Google Apps Script
- Google Campaign Manager
- Google Chrome
- Google Cloud Dataflow
- Google Cloud Logging
- Google Cloud Platform
- Google Data Studio
- Google 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
- HAProxy
- Harness
- Higress
- Hobart
- HubSpot
- Hugging Face
- Hunter
- Hvault
- IBM
- IBM API Connect
- IBM MQ
- Indeed
- Infoblox
- Informatica
- Informática
- Insomnia
- IntelliJ IDEA
- International Business Machines
- Intuit
- Istio
- JFrog
- JFrog Artifactory
- JetBrains
- Jira
- Jitterbit
- Juniper
- Juniper Networks
- Jupyter Notebook
- Kinesis
- Kion
- Knit
- Kondor
- Konfig
- Kong
- Kubecost
- Kuma
- Lambda
- Lightroom
- Linkerd
- LiteLLM
- Looker
- Looker Studio
- MATLAB
- MailChimp
- Make
- Mastercard
- Maya
- McAfee
- Membrane
- Merge
- Meta
- Metasploit
- Microsoft
- Microsoft .NET
- Microsoft 365
- Microsoft Access
- Microsoft Azure
- Microsoft Bicep
- Microsoft Configuration Manager
- Microsoft Copilot
- Microsoft Defender
- Microsoft Dynamics
- Microsoft Dynamics 365
- Microsoft Edge
- Microsoft Endpoint Configuration Management
- Microsoft Endpoint Manager
- Microsoft Entity Framework
- Microsoft Entra
- Microsoft Excel
- Microsoft Exchange
- Microsoft Graph
- Microsoft Identity Manager
- Microsoft Intune
- Microsoft Office
- Microsoft Office 365
- Microsoft Outlook
- Microsoft Planner
- Microsoft Power Apps
- Microsoft Power Automate
- Microsoft Power Platform
- Microsoft PowerPoint
- Microsoft Project
- Microsoft Purview
- Microsoft Sentinel
- Microsoft Teams
- Microsoft Technologies
- Microsoft Visio
- Microsoft Windows
- Microsoft Windows 10
- Microsoft Windows Server
- Microsoft Word
- Microsoft Xbox
- Mistral
- Mixpanel
- Montran
- Moody's
- MuleSoft
- Murex
- Nango
- Navision
- Nessus
- NetApp
- NetFlow
- Netcool
- Netscout
- New Relic
- Notion
- Nutanix
- OpenAI
- OpenAI APIs
- OpenRouter
- OpenShift
- Oracle
- Oracle APEX
- Oracle Cloud
- Oracle Database
- Oracle Database 19c
- Oracle E-Business Suite
- Oracle Enterprise Database
- Oracle Enterprise Manager
- Oracle Essbase
- Oracle Exadata
- Oracle Financials
- Oracle Fusion
- Oracle General Ledger
- Oracle GoldenGate
- Oracle Hyperion
- Oracle Integration
- Oracle R12
- Oracle Siebel
- Oracle Smart View
- Oracle WebLogic
- Orion
- Palo Alto Networks
- Panora
- Paradox
- Paragon
- Paw
- PeopleSoft
- PeopleSoft Financials
- Perforce
- Perplexity
- Photoshop
- Pluralsight
- Port
- Portkey
- Postman
- Power Apps
- Power BI
- Power Platform
- Power Query
- Prefect
- Prisma
- Productiv
- Prosci
- Pulse
- Qlik
- Qlik Cloud
- Qlik Sense
- Qlik Sense Enterprise
- QlikSense
- QlikView
- Qube
- ReadMe
- Red Hat
- Red Hat Ansible Automation Platform
- Red Hat Enterprise Linux
- Red Hat Satellite
- Refinitiv
- Refinitiv Eikon
- Reuters
- Revert
- Rundeck
- SAP
- SAP API Management
- SAP Ariba
- SAP BI
- SAP BRIM (Billing and Revenue Innovation Management)
- SAP BW
- SAP Concur
- SAP HANA
- SAP Integration Suite
- SAP S/4HANA
- SAP Sales and Distribution (SD)
- SQL Server
- SailPoint
- Salesforce
- Salesforce Automation
- Salesforce Einstein
- Salesforce Experience Cloud
- Salesforce Knowledge Management
- Salesforce Lightning
- Salesforce Marketing Cloud
- Salesforce Sales Cloud
- Salesforce Service Cloud
- Scalar
- Seismic
- SendGrid
- Sentry System
- Service Cloud
- ServiceNow
- SharePoint
- Shell
- Shopify
- Siebel
- SimCorp Dimension
- Slack
- Snowflake
- SolarWinds
- Solaris
- Solaris Zones
- Sparx Enterprise Architect
- Splunk
- Spot
- Square
- StreamYard
- Stripe
- Sybase
- TIBCO
- Tableau
- Tableau Desktop
- Tableau Server
- Talend
- Tanium
- TeamCity
- Temenos
- Temenos Transact
- Temporal
- Teradata
- Torii
- Tradeweb
- Trellix
- Trellix Web Gateway
- Trioptima
- Triton
- Tropic
- 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 Extend
- Workday Financials
- Workday Integration
- Workday Integrations
- Workday Payroll
- Workday Recruiting
- Workday Reporting
- Workday Security
- Workday Studio
- Xceptor
- Yardi
- Youtube
- Zapier
- Zendesk
- Zoom
- ZoomInfo
- n8n
- nOps
Tools — Total: 285
- Akri
- Angular
- Ansible
- Ansible Playbooks
- Apache
- Apache AGE
- Apache APISIX
- Apache APR
- Apache ActiveMQ
- Apache Airflow
- Apache Ambari
- Apache Ant
- Apache Archiva
- Apache Aries
- Apache Arrow
- Apache Atlas
- Apache Avro
- Apache Axis
- Apache Beam
- Apache BookKeeper
- Apache Brooklyn
- Apache CXF
- Apache Camel
- Apache Cassandra
- Apache Commons
- Apache Cordova
- Apache CouchDB
- Apache Curator
- Apache DB
- Apache DataFu
- Apache DolphinScheduler
- Apache Doris
- Apache Drill
- Apache Druid
- Apache Felix
- Apache Flex
- Apache Flink
- Apache Flume
- Apache FreeMarker
- Apache Geode
- Apache Gora
- Apache Griffin
- Apache Groovy
- Apache HBase
- Apache HTTP
- Apache HTTP Server
- Apache Hadoop
- Apache Helix
- Apache Hive
- Apache Hop
- Apache Hudi
- Apache Iceberg
- Apache Ignite
- Apache Impala
- Apache Ivy
- Apache JMeter
- Apache Jackrabbit
- Apache James
- Apache Jena
- Apache Juneau
- Apache Kafka
- Apache Knox
- Apache Kudu
- Apache Kylin
- Apache Logging Services
- Apache MINA
- Apache Maven
- Apache Mesos
- Apache NetBeans
- Apache NiFi
- Apache OFBiz
- Apache ORC
- Apache Olingo
- Apache Oozie
- Apache OpenJPA
- Apache OpenOffice
- Apache OpenWebBeans
- Apache Ozone
- Apache POI
- Apache Parquet
- Apache Petri
- Apache Phoenix
- Apache Pig
- Apache Pinot
- Apache Pivot
- Apache Portals
- Apache Pulsar
- Apache Ranger
- Apache Ratis
- Apache Roller
- Apache Rya
- Apache SDAP
- Apache SINGA
- Apache Sedona
- Apache Serf
- Apache ShenYu
- Apache SkyWalking
- Apache Sling
- Apache Solr
- Apache SpamAssassin
- Apache Spark
- Apache Spatial
- Apache Steve
- Apache Storm
- Apache Streams
- Apache Struts
- Apache Subversion
- Apache Superset
- Apache Synapse
- Apache TVM
- Apache Tapestry
- Apache Tcl
- Apache Tez
- Apache Thrift
- Apache Tika
- Apache TinkerPop
- Apache Tomcat
- Apache Traffic Control
- Apache Traffic Server
- Apache Turbine
- Apache VCL
- Apache Velocity
- Apache Web Services
- Apache Whimsy
- Apache XML Graphics
- Apache Xalan
- Apache Xerces
- Apache ZooKeeper
- Appium
- Argo
- BFE
- Backstage
- Buildpacks
- C#
- C++
- Chaos Mesh
- Chef
- ClickHouse
- Cloud Custodian
- Consul
- Containerd
- Copa
- Cortex
- Crossplane
- Cucumber
- Dex
- Django
- Docker
- Docker Swarm
- Eclipse
- Elastic Stack
- Elasticsearch
- Elk
- Elk Stack
- Envoy
- Ethereum
- Falco
- FastAPI
- Fluid
- Flux
- Git
- Grafana
- HAMI
- Harbor
- Hashicorp Vault
- Helm
- Hexa
- Hibernate
- Hugging Face Transformers
- Istio
- JBoss
- JMock
- JUnit
- Jaeger
- Jenkins
- Jest
- Jupyter
- K3s
- KCL
- KEDA
- KServe
- Kafka Connect
- Keycloak
- Kibana
- Kotlin
- Kubeflow
- Kubeflow Pipelines
- Kubernetes
- Kubernetes Operators
- Kuma
- Lean
- Lightning Web Components
- Lima
- Linkerd
- Linux
- Litmus
- Llama
- Log4j
- Logstash
- Matplotlib
- Maven Central
- Mockito
- MongoDB
- MySQL
- NATS
- NUnit
- Nexus
- Nginx
- Node.js
- NumPy
- ORAS
- Open Policy Agent
- OpenSearch
- OpenStack
- OpenTelemetry
- OpenTofu
- PHP
- Packer
- Pandas
- Perl
- Pixie
- Playwright
- Podman
- Porter
- PostgreSQL
- PowerShell
- Prometheus
- PuTTY
- Pulumi
- Puppet
- PySpark
- PyTorch
- Python
- R
- RabbitMQ
- Radius
- Ratify
- React
- React Native
- Redis
- Redux
- Rook
- Rundeck
- SPIRE
- SVN
- Scala
- Score
- Selenium
- Semantic Kernel
- Sonar
- SonarQube
- SpecFlow
- Spring
- Spring Batch
- Spring Boot
- Spring Boot Admin Console
- Spring Cloud
- Spring Cloud Stream
- Spring Data
- Spring Framework
- Spring Security
- Swift
- TensorFlow
- Terraform
- Thymeleaf
- TiKV
- Ubuntu
- Vault
- Vineyard
- Vite
- Vitess
- Vue.js
- WebFlux
- Wireshark
- WordPress
- YARN
- Zabbix
- Zot
- bootc
- cURL
- eBPF
- gRPC
- jQuery
- kpt
- werf
Standards — Total: 261
- .prompt.md
- ACID
- AIS
- API-First
- AUTHORS.md
- Acceptance Criteria
- Accessibility Standards
- Accounting Standards
- Actor Model
- Agile
- Agile Delivery
- Agile Methodology
- Agile SDLC
- ArchiMate
- Architectural Design Patterns
- Architecture Pattern
- BDD
- BLE
- Banking Regulation
- Basel Compliance
- Basel III
- Big O Notation
- CCPA
- CHANGELOG.md
- CITATION.cff
- CNCF
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- CONTRIBUTORS.md
- CQRS
- CSS
- Capital Requirements
- Certificate Enrolment Protocols
- Circuit Breaker
- Code First
- Communication Protocols
- Component Model
- Configuration Language
- Consensus
- Convention Over Configuration
- Cybersecurity Standards
- DHCP
- DNS
- DSL
- Data Flow Diagrams
- Data Format
- Data Modeling
- Data Models
- Data Privacy Standards
- Data Quality Standards
- Data Warehouse Schemas
- Database Normalization
- 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
- Gherkin
- 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
- Interface Specifications
- Internal Control Standards
- Inversion Of Control
- JAX-WS
- JCR
- JDBC
- JMS
- JPA
- JSF
- JSON
- Jakarta EE
- Java EE
- Kanban
- Kerberos
- LDAP
- LICENSE.md
- Lakehouse Architecture
- Lean Management
- Lean Manufacturing
- Lean Operations
- Lean Six Sigma
- Lean Six Sigma Black Belt
- MLOps
- MVC
- Mandatory Reserves Requirement
- MapReduce
- Markup Language
- Messaging Protocol
- Methodology
- Mockups
- Modular Monolith
- Monolithic Architecture
- Multi-tier Architecture
- NFC
- NIO
- NIST
- Network Protocols
- Normalization
- OAuth
- OCI
- OData
- OIDC
- OSGi
- OSHA
- OWASP
- Object-Oriented Programming
- OpenAPI
- OpenID Connect
- PCI Compliance
- Parquet
- 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
- RESTful Services
- RESTful Web Services
- RFID
- RPC
- Raft
- Reactive Programming
- Regular Expressions
- Regulation
- Regulatory
- Relational Data Modeling
- Reporting Templates
- Reserve Requirements
- Runbooks
- SAFe Agile
- SAML
- SCADA
- SDLC
- SECURITY.md
- SFTP
- SMTP
- SOA
- SOAP
- SPA
- SPARQL
- SQL
- SSH
- SSL/TLS
- SSO
- SUPPORT.md
- Scaled Agile
- Schema Design
- Schema Evolution
- Schema Validation
- Scrum
- SecOps
- Secure Software Development Life Cycle
- Secure Software Development Lifecycle
- Secure Tunneling Protocols
- Secure-by-Default
- Secure-by-Design
- Security By Design
- Security Protocols
- Security Standards
- Security Standards And Procedures
- Serverless Patterns
- Service Oriented Architecture
- Services Patterns
- 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
- Technology Standards
- Templates
- Test Cases
- Test First
- Test Plans
- Test Scripts
- Test Specifications
- Test Suites
- Test-driven Development
- UML
- Underwriting Standards
- Use Cases
- User Stories
- VNC
- VPN
- Versioning Protocols
- WCAG
- WSDL
- Waterfall
- Web Standards
- WebSockets
- Wireframes
- Write Ahead Log
- XML
- XSLT
- Zero Trust
- Zero Trust Architecture
- Zero Trust Network Access
- Zero-Trust Security Model
- openCypher
Why do we do this?
- Understand the state of the market by industry.
- Meet new and diverse design partners across verticals.
- Help us prioritize industry-specific business capabilities.
Who is this for?
- AI, API, integration and platform leadership within the industry.
- The C-Suite looking to benchmark their enterprise against peers.
- Analysts and media outlets reporting on industry-level technology trends.
Why become a design partner?
- Collaboration to define industry-wide capabilities and benchmarks.
- Obtain more control over the integrations your industry depends on.
- Help shape the Naftiko roadmap to meet your vertical’s needs.
About This Research
- Signals aggregate how we rate investments across all companies in the industry.
- Areas reveal the technology areas being invested in across the vertical.
- Services show which SaaS platforms appear across industry companies.
- Tools highlight the open-source investments being made industry-wide.
- Standards speak to how aligned integrations are with market standards.
About This Guidance
- Impact Report provides a narrative analysis of the industry’s collective AI investment posture.
- Impact Pages outlines the layered data behind the industry’s AI response, with company rankings per signal area.
- Companies lists all organizations tracked in this industry vertical.
- Radar maps the maturity of technology investments across the industry.
- Capabilities are Naftiko definitions for how industry-common services and tools can deliver AI-driven business value.
- Navigation highlights strategic opportunities for this industry vertical.
What This Means For You
See where you stand, decide what to build, control what you build — grounded in public-data signals, not boilerplate best practice.
Where you stand
See your signals
The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.
See full report →What to build
Translate to capabilities
Capabilities being built across the peer set — tied to the markets you actually serve.
View capabilities →Where to go next
Navigate the next move
A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.
Get your navigation →Control what you build
Integrate with AI
Run it on infrastructure you control. Open source — fork it, audit it, run it on your stack. No vendor lock-in.
First capability live in 90 days.
Become a design partner →